Man page - sock_diag(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr ruManual
sock_diag
NOMSYNOPSIS
DESCRIPTION
RequĂȘte
Réponse
Sockets de domaine UNIX
Sockets IPv4 et IPv6
Informations sur la mémoire du socket
VERSIONS
STANDARDS
EXEMPLES
VOIR AUSSI
TRADUCTION
NOM
sock_diag â Obtention dâinformations Ă propos des sockets
SYNOPSIS
#include
<sys/socket.h>
#include <linux/sock_diag.h>
#include <linux/unix_diag.h>
/* pour sockets de
domaine UNIX */
#include <linux/inet_diag.h>
/* pour sockets IPv4
et IPv6 */
diag_socket = socket(AF_NETLINK, socket_type , NETLINK_SOCK_DIAG);
DESCRIPTION
Le sous-systĂšme netlink de sock_diag fournit un mĂ©canisme pour obtenir les informations sur les sockets de diverses familles dâadresses du noyau. Ce sous-systĂšme peut ĂȘtre utilisĂ© pour obtenir des informations Ă propos de sockets particuliers ou pour obtenir la liste des sockets.
Dans la requĂȘte, lâappelant peut indiquer les informations supplĂ©mentaires quâil dĂ©sire obtenir Ă propos du socket, par exemple, les informations sur la mĂ©moire ou les informations spĂ©cifiques Ă une famille dâadresses.
Lors dâune requĂȘte dâune liste de sockets, lâappelant peut indiquer des filtres Ă appliquer par le noyau pour sĂ©lectionner un sous-ensemble de sockets. Pour lâinstant, il est seulement possible de filtrer les sockets par Ă©tat (connectĂ©, Ă lâĂ©coute, etc).
Remarquez que sock_diag rapporte seulement les sockets ayant un nom. Câest-Ă -dire soit les sockets liĂ©s explicitement avec bind (2) ou les sockets qui ont Ă©tĂ© automatiquement liĂ©s Ă une adresse (par exemple, par connect (2)). Câest le mĂȘme ensemble de sockets disponible Ă lâaide de /proc/net/unix , /proc/net/tcp , /proc/net/udp , etc.
RequĂȘte
La requĂȘte dĂ©bute par un en-tĂȘte struct nlmsghdr dĂ©crit dans netlink (7) avec un champ nlmsg_type rĂ©glĂ© Ă SOCK_DIAG_BY_FAMILY . Il est suivi par un en-tĂȘte spĂ©cifique Ă une famille dâadresses qui dĂ©bute par une partie commune partagĂ©e par toutes les familles dâadresses :
struct
sock_diag_req {
__u8 sdiag_family;
__u8 sdiag_protocol;
};
Les membres de
cette structure sont les suivants :
sdiag_family
Une famille dâadresses. Elle devrait ĂȘtre rĂ©glĂ©e Ă la constante AF_* appropriĂ©e.
sdiag_protocol
Fonction de sdiag_family . Il devrait ĂȘtre rĂ©glĂ© Ă la constante IPPROTO_* appropriĂ©e pour AF_INET et AF_INET6 , et Ă Â 0 autrement.
Si le champ nlmsg_flags de lâen-tĂȘte struct nlmsghdr a lâindicateur NLM_F_DUMP dĂ©fini, cela signifie quâune liste de sockets est demandĂ©e. Sinon, il sâagit dâune requĂȘte concernant un socket particulier.
Réponse
La rĂ©ponse dĂ©bute avec un en-tĂȘte struct nlmsghdr et est suivie par un tableau dâobjets spĂ©cifique Ă la famille dâadresses. Le tableau est accessible avec les macros NLMSG_* standards de lâAPI de netlink (3).
Chaque objet est la liste NLA (attributs netlink) accessible avec les macros RTA_* de lâAPI de rtnetlink (3).
Sockets de domaine UNIX
Pour les sockets de domaine UNIX, la requĂȘte est dĂ©crite dans la structure suivante :
struct
unix_diag_req {
__u8 sdiag_family;
__u8 sdiag_protocol;
__u16 pad;
__u32 udiag_states;
__u32 udiag_ino;
__u32 udiag_show;
__u32 udiag_cookie[2];
};
Les membres de
cette structure sont les suivants :
sdiag_family
La famille dâadresses. Elle devrait ĂȘtre AF_UNIX .
sdiag_protocol
|
pad |
Ces champs devraient ĂȘtre rĂ©glĂ©s Ă 0. |
udiag_states
Câest un masque de bits dĂ©finissant un filtre dâĂ©tats des sockets. Seuls les sockets dont les Ă©tats sont dans le masque seront rapportĂ©s. Il est ignorĂ© lors dâune requĂȘte pour un socket particulier. Les valeurs autorisĂ©es sont :
1 << TCP_ESTABLISHED
1 << TCP_LISTEN
udiag_ino
Câest un numĂ©ro dâinĆud lors dâune requĂȘte pour un socket particulier. Il est ignorĂ© lors dâune requĂȘte pour une liste de sockets.
udiag_show
Câest un ensemble
dâindicateurs dĂ©finissant quelle sorte
dâinformation rapporter. Chaque sorte
dâinformation est rapportĂ©e sous forme
dâattribut netlink comme dĂ©crit
ci-dessous :
UDIAG_SHOW_NAME
Lâattribut rapportĂ© dans la rĂ©ponse Ă cette requĂȘte est UNIX_DIAG_NAME . La charge utile associĂ©e Ă cet attribut est le nom de chemin auquel le socket a Ă©tĂ© liĂ© (une sĂ©quence dâoctets de taille maximale UNIX_PATH_MAX ).
UDIAG_SHOW_VFS
Lâattribut rapportĂ© dans la rĂ©ponse Ă cette requĂȘte est UNIX_DIAG_VFS . La charge utile associĂ©e Ă cet attribut est dĂ©crite dans la structure suivante :
struct
unix_diag_vfs {
__u32 udiag_vfs_dev;
__u32 udiag_vfs_ino;
};
Les membres de
cette structure sont les suivants :
udiag_vfs_dev
Le numĂ©ro de pĂ©riphĂ©rique de lâinĆud correspondant de socket sur le disque.
udiag_vfs_ino
Le numĂ©ro dâinĆud de lâinĆud correspondant de socket sur le disque.
UDIAG_SHOW_PEER
Lâattribut rapportĂ© dans la rĂ©ponse Ă cette requĂȘte est UNIX_DIAG_PEER . La charge utile associĂ©e Ă cet attribut est une valeur __u32 qui est le numĂ©ro dâinĆud du pair. Cet attribut est rapportĂ© seulement pour les sockets connectĂ©s.
UDIAG_SHOW_ICONS
Lâattribut rapportĂ© dans la rĂ©ponse Ă cette requĂȘte est UNIX_DIAG_ICONS . La charge utile associĂ©e Ă cet attribut est un tableau de valeurs __u32 qui sont des numĂ©ros dâinĆuds de sockets qui ont passĂ© lâappel connect (2), mais qui nâont pas encore Ă©tĂ© traitĂ©s par accept (2). Cet attribut est rapportĂ© seulement pour les sockets Ă lâĂ©coute.
UDIAG_SHOW_RQLEN
Lâattribut rapportĂ© dans la rĂ©ponse Ă cette requĂȘte est UNIX_DIAG_RQLEN . La charge utile associĂ©e Ă cet attribut est dĂ©crite dans la structure suivante :
struct
unix_diag_rqlen {
__u32 udiag_rqueue;
__u32 udiag_wqueue;
};
Les membres de
cette structure sont les suivants :
udiag_rqueue
Pour les sockets Ă lâĂ©coute : le nombre de connexions en attente. La taille du tableau associĂ© Ă lâattribut de la rĂ©ponse UNIX_DIAG_ICONS est Ă©gale Ă cette valeur.
Pour les sockets Ă©tablis : la quantitĂ© de donnĂ©es dans la file dâattente entrante.
udiag_wqueue
Pour les sockets Ă lâĂ©coute : la taille de lâarriĂ©rĂ© qui est Ă©gale Ă la valeur passĂ©e comme second argument Ă listen (2).
Pour les sockets Ă©tablis : la quantitĂ© de mĂ©moire disponible pour lâĂ©mission.
UDIAG_SHOW_MEMINFO
Lâattribut rapportĂ© dans la rĂ©ponse Ă cette requĂȘte est UNIX_DIAG_MEMINFO . La charge utile associĂ©e Ă cet attribut est un tableau de valeurs __u32 dĂ©crites dans la sous-section « Informations sur la mĂ©moire de socket ».
Les attributs
suivants sont rapportĂ©s sans requĂȘte
particuliÚre :
UNIX_DIAG_SHUTDOWN
La charge utile associĂ©e Ă cet attribut est une valeur __u8 reprĂ©sentant les bits de lâĂ©tat de shutdown (2).
udiag_cookie
Câest un tableau dâidentificateurs opaques pouvant ĂȘtre utilisĂ©s avec udiag_ino pour indiquer un socket particulier. Il est ignorĂ© lors de la requĂȘte dâune liste de sockets ainsi que lorsque ses Ă©lĂ©ments sont rĂ©glĂ©s Ă Â -1.
La rĂ©ponse Ă une requĂȘte de sockets de domaine UNIX est dĂ©crite sous forme de tableau de
struct
unix_diag_msg {
__u8 udiag_family;
__u8 udiag_type;
__u8 udiag_state;
__u8 pad;
__u32 udiag_ino;
__u32 udiag_cookie[2];
};
suivis par les attributs de netlink.
Les membres de
cette structure sont les suivants :
udiag_family
Ce champ a la mĂȘme signification que struct unix_diag_req .
udiag_type
Ce champ est réglé à SOCK_PACKET , SOCK_STREAM ou SOCK_SEQPACKET .
udiag_state
Ce champ est réglé à TCP_LISTEN ou TCP_ESTABLISHED .
|
pad |
Ce champ est réglé à 0. |
udiag_ino
Ce champ est le numĂ©ro dâinĆud de socket.
udiag_cookie
Ce champ est un tableau dâidentificateurs opaques pouvant ĂȘtre utilisĂ©s dans des requĂȘtes ultĂ©rieures.
Sockets IPv4 et IPv6
Pour les sockets IPv4 et IPv6, la requĂȘte est dĂ©crite dans la structure suivante :
struct
inet_diag_req_v2 {
__u8 sdiag_family;
__u8 sdiag_protocol;
__u8 idiag_ext;
__u8 pad;
__u32 idiag_states;
struct inet_diag_sockid id;
};
oĂč struct inet_diag_sockid est dĂ©fini comme suit :
struct
inet_diag_sockid {
__be16 idiag_sport;
__be16 idiag_dport;
__be32 idiag_src[4];
__be32 idiag_dst[4];
__u32 idiag_if;
__u32 idiag_cookie[2];
};
Les champs de
struct inet_diag_req_v2
sont comme suit :
sdiag_family
Cela devrait ĂȘtre soit AF_INET ou AF_INET6 pour les sockets IPv4 ou IPv6 respectivement.
sdiag_protocol
Cela devrait ĂȘtre rĂ©glĂ© Ă IPPROTO_TCP , IPPROTO_UDP ou IPPROTO_UDPLITE .
idiag_ext
Câest un ensemble
dâindicateurs dĂ©finissant quelle sorte
dâinformations Ă©tendues Ă rapporter.
Chaque sorte dâinformations est rapportĂ©e sous
forme dâattribut de netlink comme dĂ©crit
ci-dessous :
INET_DIAG_TOS
La charge utile associée à cet attribut est une valeur __u8 qui est le TOS du socket.
INET_DIAG_TCLASS
La charge utile associĂ©e Ă cet attribut est une valeur __u8 qui est la TClass du socket â sockets IPv6 uniquement. Pour les sockets LISTEN et CLOSE, cela est suivi par lâattribut INET_DIAG_SKV6ONLY avec la valeur associĂ©e __u8 de charge utile signifiant si le socket est seulement IPv6 ou non.
INET_DIAG_MEMINFO
La charge utile associée à cet attribut est décrite dans la structure suivante :
struct
inet_diag_meminfo {
__u32 idiag_rmem;
__u32 idiag_wmem;
__u32 idiag_fmem;
__u32 idiag_tmem;
};
Les membres de cette structure sont les suivants :
|
idiag_rmem |
La quantité de données dans la file de réception. |
||
|
idiag_wmem |
La quantité de données mises dans la file par TCP mais non encore envoyées. |
||
|
idiag_fmem |
La quantité de mémoire prévue pour une utilisation future (TCP uniquement). |
||
|
idiag_tmem |
La quantitĂ© de donnĂ©es dans la file dâĂ©mission. |
INET_DIAG_SKMEMINFO
La charge utile associée à cet attribut est un tableau de valeurs __u32 décrites ci-dessous dans la sous-section « Informations sur la mémoire de socket ».
INET_DIAG_INFO
La charge utile associĂ©e Ă cet attribut est spĂ©cifique Ă la famille dâadresses. Pour les sockets TCP, câest un objet de type struct tcp_info .
INET_DIAG_CONG
La charge utile associĂ©e avec cet attribut est une chaĂźne dĂ©crivant lâalgorithme de contrĂŽle de congestion utilisĂ©. Uniquement pour les sockets TCP.
|
pad |
Cela devrait ĂȘtre rĂ©glĂ© Ă Â 0. |
idiag_states
Câest un masque de bits dĂ©finissant un filtre dâĂ©tats des sockets. Seuls les sockets dont les Ă©tats sont dans le masque seront rapportĂ©s. Il est ignorĂ© lors dâune requĂȘte pour un socket particulier.
|
id |
Câest un objet dâID de socket utilisĂ© dans les requĂȘtes de vidage, dans les requĂȘtes Ă propos de sockets particuliers et qui est rapportĂ© dans chaque rĂ©ponse. Au contraire des sockets de domaine UNIX, les sockets IPv4 et IPv6 sont identifiĂ©s en utilisant des adresses et des ports. Toutes les valeurs sont dans lâordre dâoctets du rĂ©seau. |
Les champs de
struct inet_diag_sockid
sont comme suit :
idiag_sport
Le port de la source.
idiag_dport
Le port de la destination.
idiag_src
Lâadresse de la source.
idiag_dst
Lâadresse de la destination.
idiag_if
Le numĂ©ro dâinterface auquel le socket est liĂ©.
idiag_cookie
Câest un tableau dâidentificateurs opaques pouvant ĂȘtre utilisĂ©s dans dâautres champs de cette structure pour indiquer un socket particulier. Il est ignorĂ© lors dâune requĂȘte pour une liste de sockets, de mĂȘme que lorsque tous ses Ă©lĂ©ments sont rĂ©glĂ©s Ă Â -1.
La rĂ©ponse Ă une requĂȘte de sockets IPv4 ou IPv6 est dĂ©crite sous forme dâun tableau de
struct
inet_diag_msg {
__u8 idiag_family;
__u8 idiag_state;
__u8 idiag_timer;
__u8 idiag_retrans;
struct inet_diag_sockid id;
__u32 idiag_expires;
__u32 idiag_rqueue;
__u32 idiag_wqueue;
__u32 idiag_uid;
__u32 idiag_inode;
};
suivis par les attributs de netlink.
Les membres de
cette structure sont les suivants :
idiag_family
câest le mĂȘme champ que dans struct inet_diag_req_v2 .
idiag_state
Cela indique lâĂ©tat comme dans struct inet_diag_req_v2 .
idiag_timer
Pour les sockets TCP, ce champ décrit le type de temporisateur actuellement actif pour le socket. Il est réglé à une des constantes suivantes :
|
0 |
aucun temporisateur actif |
|||
|
1 |
un temporisateur de retransmission |
|||
|
2 |
un temporisateur dâentretien |
|||
|
3 |
un temporisateur TIME_WAIT |
|||
|
4 |
un temporisateur de sonde de fenĂȘtre nulle |
Pour les sockets non TCP, ce champ doit ĂȘtre rĂ©glĂ© Ă Â 0.
idiag_retrans
Pour les valeurs 1, 2 et 4 dâ idiag_timer , ce champ contient le nombre de retransmissions. Pour les autres valeurs dâ idiag_timer , ce champ est rĂ©glĂ© Ă Â 0.
idiag_expires
Pour les sockets TCP ayant un temporisateur actif, ce champ indique son dĂ©lai dâexpiration en milliseconde. Pour les autres sockets, ce champ est rĂ©glĂ© Ă Â 0.
idiag_rqueue
Pour les sockets Ă lâĂ©coute : le nombre de connexions en attente.
Pour les autres sockets : la quantitĂ© de donnĂ©es dans la file dâattente entrante.
idiag_wqueue
Pour les sockets Ă lâĂ©coute : la taille de lâarriĂ©rĂ©.
Pour les autres sockets : la quantitĂ© de mĂ©moire disponible pour lâenvoi.
idiag_uid
Câest lâUID du propriĂ©taire du socket.
idiag_inode
Ce champ est le numĂ©ro dâinĆud de socket.
Informations sur la mémoire du socket
La charge utile
associée avec les attributs
UNIX_DIAG_MEMINFO
et
INET_DIAG_SKMEMINFO
de netlink est un tableau des
valeurs __u32 suivantes :
SK_MEMINFO_RMEM_ALLOC
La quantitĂ© de donnĂ©es dans la file dâattente de rĂ©ception.
SK_MEMINFO_RCVBUF
Le tampon de réception de socket comme réglé par SO_RCVBUF .
SK_MEMINFO_WMEM_ALLOC
La quantitĂ© de donnĂ©es dans la file dâĂ©mission.
SK_MEMINFO_SNDBUF
Le tampon dâĂ©mission de socket comme rĂ©glĂ© par SO_SNDBUF .
SK_MEMINFO_FWD_ALLOC
La quantité de mémoire prévue pour une utilisation future (TCP uniquement).
SK_MEMINFO_WMEM_QUEUED
La quantité de données mises en attente par TCP, mais pas encore envoyées.
SK_MEMINFO_OPTMEM
La quantité de mémoire allouée pour les besoins du service du socket (par exemple, filtre du socket).
SK_MEMINFO_BACKLOG
La quantitĂ© de paquets dans lâarriĂ©rĂ© (pas encore traitĂ©).
VERSIONS
NETLINK_INET_DIAG a été introduit dans Linux 2.6.14 et ne gÚre que les sockets AF_INET et AF_INET6 . Dans Linux 3.3, il a été renommé NETLINK_SOCK_DIAG et étendu pour gérer les sockets AF_UNIX .
UNIX_DIAG_MEMINFO et INET_DIAG_SKMEMINFO ont été introduits dans Linux 3.6.
STANDARDS
Linux.
EXEMPLES
Lâexemple suivant affiche le numĂ©ro dâinĆud, le numĂ©ro dâinĆud du pair et le nom de tous les sockets de domaine UNIX dans lâespace de noms en cours.
#include
<errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <linux/sock_diag.h>
#include <linux/unix_diag.h>
static int
send_query(int fd)
{
struct sockaddr_nl nladdr = {
.nl_family = AF_NETLINK
};
struct
{
struct nlmsghdr nlh;
struct unix_diag_req udr;
} req = {
.nlh = {
.nlmsg_len = sizeof(req),
.nlmsg_type = SOCK_DIAG_BY_FAMILY,
.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP
},
.udr = {
.sdiag_family = AF_UNIX,
.udiag_states = -1,
.udiag_show = UDIAG_SHOW_NAME | UDIAG_SHOW_PEER
}
};
struct iovec iov = {
.iov_base = &req,
.iov_len = sizeof(req)
};
struct msghdr msg = {
.msg_name = &nladdr,
.msg_namelen = sizeof(nladdr),
.msg_iov = &iov,
.msg_iovlen = 1
};
for (;;) {
if (sendmsg(fd, &msg, 0) < 0) {
if (errno == EINTR)
continue;
perror("sendmsg");
return -1;
}
return 0;
}
}
static int
print_diag(const struct unix_diag_msg *diag, unsigned int
len)
{
if (len < NLMSG_LENGTH(sizeof(*diag))) {
fputs("short response\n", stderr);
return -1;
}
if (diag->udiag_family != AF_UNIX) {
fprintf(stderr, "unexpected family %u\n",
diag->udiag_family);
return -1;
}
unsigned int rta_len = len - NLMSG_LENGTH(sizeof(*diag));
unsigned int peer = 0;
size_t path_len = 0;
char path[sizeof(((struct sockaddr_un *) 0)->sun_path) +
1];
for (struct rtattr *attr = (struct rtattr *) (diag + 1);
RTA_OK(attr, rta_len); attr = RTA_NEXT(attr, rta_len)) {
switch (attr->rta_type) {
case UNIX_DIAG_NAME:
if (!path_len) {
path_len = RTA_PAYLOAD(attr);
if (path_len > sizeof(path) - 1)
path_len = sizeof(path) - 1;
memcpy(path, RTA_DATA(attr), path_len);
path[path_len] = '\0';
}
break;
case UNIX_DIAG_PEER:
if (RTA_PAYLOAD(attr) >= sizeof(peer))
peer = *(unsigned int *) RTA_DATA(attr);
break;
}
}
printf("inode=%u", diag->udiag_ino);
if (peer)
printf(", peer=%u", peer);
if (path_len)
printf(", name=%s%s", *path ? "" :
"@",
*path ? path : path + 1);
putchar('\n');
return 0;
}
static int
receive_responses(int fd)
{
long buf[8192 / sizeof(long)];
struct sockaddr_nl nladdr;
struct iovec iov = {
.iov_base = buf,
.iov_len = sizeof(buf)
};
int flags = 0;
for (;;) {
struct msghdr msg = {
.msg_name = &nladdr,
.msg_namelen = sizeof(nladdr),
.msg_iov = &iov,
.msg_iovlen = 1
};
ssize_t ret = recvmsg(fd, &msg, flags);
if (ret < 0) {
if (errno == EINTR)
continue;
perror("recvmsg");
return -1;
}
if (ret == 0)
return 0;
if (nladdr.nl_family != AF_NETLINK) {
fputs("!AF_NETLINK\n", stderr);
return -1;
}
const struct nlmsghdr *h = (struct nlmsghdr *) buf;
if (!NLMSG_OK(h, ret)) {
fputs("!NLMSG_OK\n", stderr);
return -1;
}
for (; NLMSG_OK(h, ret); h = NLMSG_NEXT(h, ret)) {
if (h->nlmsg_type == NLMSG_DONE)
return 0;
if (h->nlmsg_type == NLMSG_ERROR) {
const struct nlmsgerr *err = NLMSG_DATA(h);
if (h->nlmsg_len < NLMSG_LENGTH(sizeof(*err))) {
fputs("NLMSG_ERROR\n", stderr);
} else {
errno = -err->error;
perror("NLMSG_ERROR");
}
return -1;
}
if (h->nlmsg_type != SOCK_DIAG_BY_FAMILY) {
fprintf(stderr, "unexpected nlmsg_type %u\n",
(unsigned) h->nlmsg_type);
return -1;
}
if (print_diag(NLMSG_DATA(h), h->nlmsg_len))
return -1;
}
}
}
int
main(void)
{
int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
if (fd < 0) {
perror("socket");
return 1;
}
int ret = send_query(fd) || receive_responses(fd);
close(fd);
return ret;
}
VOIR AUSSI
netlink (3), rtnetlink (3), netlink (7), tcp (7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .