Man page - socket(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 ja ru zh_TW zh_CNManual
socket
NOMSYNOPSIS
DESCRIPTION
Fonctions du niveau socket
Structures dâadresses de socket
Options de socket
Signaux
/proc interfaces
Ioctls
VERSIONS
NOTES
VOIR AUSSI
TRADUCTION
NOM
socket â Interface Linux aux sockets
SYNOPSIS
#include <sys/socket.h>
sockfd = socket(int famille_socket , int type_socket , int protocole );
DESCRIPTION
Cette page de manuel documente lâinterface utilisateur de lâimplĂ©mentation Linux des sockets rĂ©seau. Les sockets compatibles BSD reprĂ©sentent lâinterface uniforme entre le processus utilisateur et les piles de protocoles rĂ©seau dans le noyau. Les modules des protocoles sont regroupĂ©s en familles de protocoles tels que AF_INET , AF_IPX et AF_PACKET , et en types de sockets comme SOCK_STREAM ou SOCK_DGRAM . Consultez socket (2) pour plus dâinformations sur les familles et les types de sockets.
Fonctions du niveau socket
Ces fonctions servent au processus utilisateur pour envoyer ou recevoir des paquets et pour faire dâautres opĂ©rations sur les sockets. Pour plus de dĂ©tails, consultez leurs pages de manuel respectives.
socket (2) crĂ©e un socket, connect (2) connecte un socket Ă une adresse de socket distant, la fonction bind (2) attache un socket Ă une adresse locale, listen (2) indique au socket que de nouvelles connexions doivent ĂȘtre acceptĂ©es et accept (2) est utilisĂ© pour obtenir un nouveau socket avec une nouvelle connexion entrante. socketpair (2) renvoie deux sockets anonymes connectĂ©s (seulement implĂ©mentĂ©e pour quelques familles locales comme AF_UNIX ).
send (2), sendto (2) et sendmsg (2) envoient des donnĂ©es sur un socket, et recv (2), recvfrom (2) et recvmsg (2) reçoivent les donnĂ©es dâun socket. poll (2) et select (2) attendent que des donnĂ©es arrivent ou que lâĂ©mission soit possible. De plus, les opĂ©rations dâentrĂ©e-sortie standard comme write (2), writev (2), sendfile (2), read (2) et readv (2) peuvent ĂȘtre utilisĂ©es pour la lecture et lâĂ©criture des donnĂ©es.
getsockname (2) renvoie lâadresse du socket local et getpeername (2) renvoie lâadresse du socket distant. getsockopt (2) et setsockopt (2) servent Ă dĂ©finir et Ă obtenir les options de la couche socket ou du protocole. ioctl (2) peut ĂȘtre utilisĂ©e pour lire et Ă©crire dâautres options.
close (2) sert Ă fermer un socket. shutdown (2) ferme une partie des connexions dâun duplex intĂ©gral de socket.
La recherche ou lâutilisation de pread (2) ou pwrite (2) avec une position diffĂ©rente de zĂ©ro nâest pas possible sur les sockets.
Des opĂ©rations dâentrĂ©e-sortie non bloquantes sur les sockets sont possibles en dĂ©finissant lâattribut O_NONBLOCK du descripteur de fichier du socket avec fcntl (2). Toutes les opĂ©rations qui devraient normalement bloquer se terminent alors avec lâerreur EAGAIN (lâopĂ©ration devra ĂȘtre retentĂ©e ultĂ©rieurement). connect (2) renverra lâerreur EINPROGRESS . Lâutilisateur peut alors attendre divers Ă©vĂ©nements avec poll (2) ou select (2).
Une alternative Ă poll (2) et select (2) est de laisser le noyau informer lâapplication des Ă©vĂ©nements par lâintermĂ©diaire dâun signal SIGIO . Pour cela, lâattribut O_ASYNC doit ĂȘtre dĂ©fini sur un descripteur de fichier du socket Ă lâaide de fcntl (2) et un gestionnaire de signal valable pour SIGIO doit ĂȘtre installĂ© avec sigaction (2). Consultez les remarques sur les Signaux ci-dessous.
Structures dâadresses de socket
Chaque domaine de socket a son propre format pour les adresses de socket, avec une structure dâadresse propre. Chacune de ces structures commence par un champ dâentier « family » (famille), de type sa_family_t , qui indique le type de structure dâadresse. Cela permet aux appels systĂšme gĂ©nĂ©riques Ă tous les domaines de socket (par exemple connect (2), bind (2), accept (2), getsockname (2), getpeername (2)) de dĂ©terminer le domaine dâune adresse de socket donnĂ©e.
Le type struct sockaddr est dĂ©fini afin de pouvoir passer nâimporte quel type dâadresse de socket aux interfaces dans lâAPI des sockets. Le but de ce type est purement dâautoriser la conversion de types dâadresse de socket propres Ă un domaine vers le type « gĂ©nĂ©rique », afin dâĂ©viter les avertissements du compilateur au sujet de la non correspondance de type dans les appels de lâAPI des sockets.
De plus, lâAPI des sockets fournit le type de donnĂ©es struct sockaddr_storage . Ce type est fait pour contenir toute structure dâadresse de socket spĂ©cifique Ă un domaine. Il est suffisamment grand et est alignĂ© correctement (en particulier, il est assez grand pour contenir des adresses de socket IPv6). Cette structure contient le champ suivant, qui peut ĂȘtre utilisĂ© pour identifier le type dâadresse de socket effectivement stockĂ©e dans la structure :
sa_family_t ss_family;
La structure sockaddr_storage est utile dans les programmes qui doivent prendre en charge les adresses de socket de maniÚre générique (par exemple les programmes qui doivent gérer à la fois des adresses de socket IPv4 et IPv6).
Options de socket
Les options de
socket présentées ci-dessous peuvent
ĂȘtre dĂ©finies en utilisant
setsockopt
(2)
et lues avec
getsockopt
(2) avec le niveau de socket
positionnĂ© Ă
SOL_SOCKET
pour tous les
sockets. Sauf mention contraire,
optval
est un
pointeur vers un
int
.
SO_ACCEPTCONN
Renvoyer une valeur indiquant si le socket a Ă©tĂ© dĂ©clarĂ© comme acceptant ou non les connexions Ă lâaide de listen (2). La valeur 0 indique que le socket nâest pas Ă lâĂ©coute et la valeur 1 indique que le socket lâest. Cette option de socket peut ĂȘtre seulement lue.
SO_ATTACH_FILTER
(depuis
Linux 2.2)
SO_ATTACH_BPF
(depuis Linux 3.19)
Attacher un programme BPF classique ( SO_ATTACH_FILTER ) ou un programme BPF étendu ( SO_ATTACH_BPF ) au socket pour une utilisation comme filtre dans les paquets entrants. Un paquet sera abandonné si le programme de filtrage renvoie zéro. Si le programme de filtrage renvoie une valeur différente de zéro qui est moindre que la taille des données du paquet, celui-ci sera tronqué à la taille renvoyée. Si la valeur renvoyée par le filtre est supérieure ou égale à la taille des données du paquet, le paquet est autorisé à continuer non modifié.
Lâargument pour SO_ATTACH_FILTER est une structure sock_fprog , dĂ©finie dans <linux/filter.h> :
struct
sock_fprog {
unsigned short len;
struct sock_filter *filter;
};
Lâargument pour SO_ATTACH_BPF est un descripteur de fichier renvoyĂ© par lâappel systĂšme bpf (2) et doit rĂ©fĂ©rer Ă un programme de type BPF_PROG_TYPE_SOCKET_FILTER .
Ces options peuvent ĂȘtre dĂ©finies plusieurs fois pour un socket donnĂ©, remplaçant Ă chaque fois le programme de filtre prĂ©cĂ©dent. Les versions classiques et Ă©tendues peuvent ĂȘtre appelĂ©es sur le mĂȘme socket, mais le filtre prĂ©cĂ©dent sera toujours remplacĂ© de telle façon quâun socket nâaura jamais plus dâun filtre dĂ©fini.
Les versions BPF classique et étendue sont expliquées dans le fichier source du noyau, Documentation/networking/filter.txt
SO_ATTACH_REUSEPORT_CBPF
SO_ATTACH_REUSEPORT_EBPF
Pour une utilisation avec lâoption SO_REUSEPORT , ces options permettent Ă lâutilisateur de dĂ©finir un programme BPF classique ( SO_ATTACH_REUSEPORT_CBPF ) ou Ă©tendu ( SO_ATTACH_REUSEPORT_EBPF ) qui prĂ©cise comment les paquets sont assignĂ©s aux sockets dans le groupe de rĂ©utilisation de port (câest-Ă -dire tous les sockets qui ont SO_REUSEPORT activĂ© et qui utilisent la mĂȘme adresse locale pour recevoir des paquets).
Le programme BPF doit renvoyer un indice entre 0 et N-1 reprĂ©sentant le socket qui doit recevoir le paquet (oĂč N est le nombre de sockets dans le groupe). Si le programme BPF renvoie un indice non valable, la sĂ©lection du socket reviendra au mĂ©canisme strict SO_REUSEPORT .
Les sockets sont numĂ©rotĂ©s dans lâordre dont ils sont ajoutĂ©s dans le groupe (câest-Ă -dire lâordre des appels bind (2) pour les sockets UDP ou lâordre des appels listen (2) pour les sockets TCP). Les nouveaux sockets ajoutĂ©s Ă un groupe de rĂ©utilisation de port hĂ©riteront du programme BPF. Quand un socket est supprimĂ© dâun groupe de rĂ©utilisation (Ă lâaide de close (2)), le dernier socket sera dĂ©placĂ© dans la position du socket fermĂ©.
Ces options peuvent ĂȘtre dĂ©finies Ă plusieurs reprises nâimporte quand sur nâimporte quel socket dans le groupe pour remplacer le programme BPF en cours utilisĂ© par tous les sockets du groupe.
SO_ATTACH_REUSEPORT_CBPF prend le mĂȘme type dâargument que SO_ATTACH_FILTER et SO_ATTACH_REUSEPORT_EBPF prend le mĂȘme argument type que SO_ATTACH_BPF .
La prise en charge dâUDP pour cette fonctionnalitĂ© est disponible depuis Linux 4.5. La prise en charge de TCP est disponible depuis Linux 4.6.
SO_BINDTODEVICE
Attacher ce socket Ă un pĂ©riphĂ©rique donnĂ©, tel que « eth0 », comme indiquĂ© dans le nom dâinterface transmis. Si le nom est une chaĂźne vide ou si la longueur de lâoption est nulle, le socket est dĂ©tachĂ© du pĂ©riphĂ©rique. Lâoption transmise est une chaĂźne de longueur variable terminĂ©e par un octet NULL, contenant le nom de lâinterface, la longueur maximale Ă©tant IFNAMSIZ . Si un socket est attachĂ© Ă une interface, seuls les paquets reçus de cette interface particuliĂšre sont traitĂ©s par le socket. Cela ne fonctionne que pour certains types de socket, en particulier les sockets AF_INET . Cela nâest pas gĂ©rĂ© pour les sockets paquet (utilisez pour cela bind (2)).
Avant Linux 3.8, cette option de socket pouvait ĂȘtre configurĂ©e, sans pouvoir ĂȘtre lue par getsockopt (2). Depuis Linux 3.8, elle est lisible. Le paramĂštre optlen doit contenir la taille du tampon destinĂ© Ă recevoir le nom du pĂ©riphĂ©rique et il est recommandĂ© dâĂȘtre de IFNAMSZ octets. La vĂ©ritable longueur du nom du pĂ©riphĂ©rique est renvoyĂ©e dans le paramĂštre optlen .
SO_BROADCAST
DĂ©finir ou lire lâattribut de diffusion. Une fois activĂ©, les sockets de datagrammes sont autorisĂ©s Ă envoyer des paquets Ă une adresse de diffusion. Cette option nâa aucun effet sur les sockets orientĂ©s flux.
SO_BSDCOMPAT
Activer la compatibilitĂ© BSD bogue-Ă -bogue. Cela est utilisĂ© par le module du protocole UDP de Linux 2.0 et 2.2. Si cette compatibilitĂ© est activĂ©e, les erreurs ICMP reçues pour un socket UDP ne seront pas transmises au programme utilisateur. Dans les versions rĂ©centes du noyau, la gestion de cette option a Ă©tĂ© abandonnĂ©e progressivement : Linux 2.4 lâignore silencieusement et Linux 2.6 gĂ©nĂšre une alerte noyau (printk()) si le programme utilise cette option. Linux 2.0 activait Ă©galement les options de compatibilitĂ© BSD bogue-Ă -bogue (modification alĂ©atoire des en-tĂȘtes, non prise en compte de lâattribut de diffusion) pour les sockets bruts ayant cette option, mais cela a Ă©tĂ© Ă©liminĂ© dans Linux 2.2.
SO_DEBUG
Activer le dĂ©bogage de socket. Cela nâest autorisĂ© que pour les processus ayant la capacitĂ© CAP_NET_ADMIN ou un identifiant dâutilisateur effectif Ă©gal Ă Â 0.
SO_DETACH_FILTER
(depuis
Linux 2.2)
SO_DETACH_BPF
(depuis Linux 3.19)
Ces deux options, qui sont synonymes, peuvent ĂȘtre utilisĂ©es pour retirer le programme BPF classique ou Ă©tendu attachĂ© Ă un socket avec soit SO_ATTACH_FILTER soit SO_ATTACH_BPF . La valeur dâoption est ignorĂ©e.
SO_DOMAIN (depuis Linux 2.6.32)
RĂ©cupĂ©rer le domaine de socket sous forme dâentier, en renvoyant une valeur telle que AF_INET6 . Consultez socket (2) pour plus de dĂ©tails. Cette option de socket peut ĂȘtre seulement lue.
SO_ERROR
Lire et effacer lâerreur en cours sur le socket. Cette option de socket peut ĂȘtre seulement lue. Un entier est attendu.
SO_DONTROUTE
Ne pas Ă©mettre par lâintermĂ©diaire dâune passerelle, nâenvoyer quâaux hĂŽtes directement connectĂ©s. Le mĂȘme effet peut ĂȘtre obtenu avec lâattribut MSG_DONTROUTE durant une opĂ©ration send (2) sur le socket. Un attribut entier boolĂ©en est attendu.
SO_INCOMING_CPU
(récupérable depuis Linux 3.19, modifiable
depuis Linux
4.4)
DĂ©finir ou obtenir lâaffinitĂ© CPU dâun socket. Un attribut entier est attendu.
int cpu = 1;
setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, &cpu,
sizeof(cpu));
Parce que tous les paquets dâun flux unique (câest-Ă -dire tous les paquets pour le mĂȘme 4-tuple) arrivent sur une file dâattente RX unique qui est associĂ©e avec un CPU particulier, le cas dâutilisation classique est dâemployer un processus dâĂ©coute par file RX, avec le flux entrant gĂ©rĂ© par un Ă©couteur sur le mĂȘme CPU gĂ©rant la file RX. Cela fournit un comportement NUMA optimal et conserve les caches de CPU prĂȘts.
SO_INCOMING_NAPI_ID (récupérable depuis Linux 4.12)
Renvoyer un ID unique au niveau systÚme, appelé ID NAPI qui est associé avec une file RX dans laquelle le dernier paquet associé à ce socket est reçu.
Cela peut ĂȘtre utilisĂ© par une application qui sĂ©pare les flux entrants entre les threads dâexĂ©cution (worker) en se basant sur la file RX sur laquelle les paquets associĂ©s avec les flux sont reçus. Cela permet Ă chaque thread dâexĂ©cution dâĂȘtre associĂ© Ă une file de rĂ©ception HW de NIC et de servir toutes les requĂȘtes de connexion reçues sur cette file RX. Ce mappage entre un thread dâapplication et une file HW de NIC rationalise le flux de donnĂ©es du NIC vers lâapplication.
SO_KEEPALIVE
Activer lâĂ©mission de messages pĂ©riodiques gardant le socket ouvert pour les sockets orientĂ©s connexion. Un attribut entier boolĂ©en est attendu.
SO_LINGER
DĂ©finir ou lire lâoption SO_LINGER . Lâargument est une structure linger .
struct linger {
int l_onoff; /* attente activée */
int l_linger; /* durĂ©e dâattente en secondes */
};
Lorsque ce paramĂštre est actif, un appel Ă close (2) ou shutdown (2) ne se terminera pas avant que tous les messages en attente pour le socket aient Ă©tĂ© correctement Ă©mis ou que le dĂ©lai dâattente soit Ă©coulĂ©. Sinon, lâappel se termine immĂ©diatement et la fermeture est effectuĂ©e en arriĂšre-plan. Lorsque le socket est fermĂ© au cours dâun exit (2), il attend toujours en arriĂšre-plan.
SO_LOCK_FILTER
Lorsquâelle est Ă©tablie cette option empĂȘchera la modification des filtres associĂ©s au socket. Ces filtres incluent tous les ensembles issus des options de socket SO_ATTACH_FILTER , SO_ATTACH_BPF , SO_ATTACH_REUSEPORT_CBPF et SO_ATTACH_REUSEPORT_EBPF .
Le cas dâutilisation typique est celui dâun processus privilĂ©giĂ© pour dĂ©finir un socket brut (une opĂ©ration nĂ©cessitant la capacitĂ© CAP_NET_RAW ), appliquer un filtre restrictif, rĂ©gler lâoption SO_LOCK_FILTER et alors soit abandonner ses privilĂšges soit passer le descripteur de fichier du socket Ă un processus non privilĂ©giĂ© Ă lâaide dâun socket de domaine UNIX.
Une fois que lâoption SO_LOCK_FILTER a Ă©tĂ© activĂ©e, essayer de modifier ou de supprimer le filtre attachĂ© Ă un socket, ou dĂ©sactiver lâoption SO_LOCK_FILTER Ă©chouera avec lâerreur EPERM .
SO_MARK (depuis Linux 2.6.25)
Positionner la marque pour chaque paquet envoyĂ© au travers de ce socket (similaire Ă la cible MARK de netfilter, mais pour les sockets). Le changement de marque peut ĂȘtre utilisĂ© pour un routage par marques sans netfilter ou pour le filtrage de paquets. Utiliser cette option nĂ©cessite la capacitĂ© CAP_NET_ADMIN ou CAP_NET_RAW (depuis Linux 5.17).
SO_OOBINLINE
Si cette option est activĂ©e, les donnĂ©es hors bande sont placĂ©es directement dans le flux des donnĂ©es reçues. Sinon, elles ne sont transmises que si lâattribut MSG_OOB est dĂ©fini durant la rĂ©ception.
SO_PASSCRED
Autoriser ou interdire la réception des messages de contrÎle SCM_CREDENTIALS . Pour plus de détails, consultez unix (7).
SO_PASSSEC
Autoriser ou interdire la réception des messages de contrÎle SCM_SECURITY . Pour plus de détails, consultez unix (7).
SO_PEEK_OFF (depuis Linux 3.4)
Cette option, qui nâest Ă ce jour prise en charge que pour les sockets unix (7), dĂ©finit la valeur de la premiĂšre « position de lecture » (« peek offset ») pour lâappel systĂšme recv (2) lorsquâil est invoquĂ© avec lâattribut MSG_PEEK .
Lorsque cette option reçoit une valeur nĂ©gative (elle est initialisĂ©e Ă -1 pour tout nouveau socket), elle se comporte classiquement : recv (2), avec lâattribut MSG_PEEK , lit les donnĂ©es au dĂ©but de la file.
Lorsque lâoption reçoit une valeur supĂ©rieure ou Ă©gale Ă zĂ©ro, alors la lecture suivante des donnĂ©es en file dâattente dans le socket est rĂ©alisĂ©e Ă la position prĂ©cisĂ©e par la valeur de lâoption. Dans le mĂȘme temps, la « position de lecture » est incrĂ©mentĂ©e du nombre dâoctets lus dans la file, de façon Ă ce que la prochaine lecture renvoie la donnĂ©e suivante dans la file.
Si des donnĂ©es sont retirĂ©es de la tĂȘte de la file par la fonction recv (2) (ou Ă©quivalent) sans lâattribut MSG_PEEK , alors la « position de lecture » est diminuĂ©e du nombre dâoctets supprimĂ©s. Autrement dit, lâacquisition de donnĂ©es sans avoir recours Ă lâattribut MSG_PEEK a pour effet de modifier la « position de lecture », de sorte que la prochaine lecture renvoie les donnĂ©es qui auraient Ă©tĂ© renvoyĂ©es si aucune donnĂ©e nâavait Ă©tĂ© supprimĂ©e.
Pour les sockets de datagrammes, si la « position de lecture » pointe Ă lâintĂ©rieur dâun paquet, alors les donnĂ©es renvoyĂ©es seront marquĂ©es avec lâattribut MSG_TRUNC .
Lâexemple suivant illustre lâusage de SO_PEEK_OFF . Imaginons un socket de flux contenant les donnĂ©es suivantes dans sa file :
aabbccddeeff
La sĂ©quence suivante dâappels Ă recv (2) aura lâeffet dĂ©crit dans les commentaires :
int ov = 4; //
réglage à 4 de la position de lecture
setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov,
sizeof(ov));
recv(fd, buf, 2, MSG_PEEK); // Lit "cc"; position
réglée à 6
recv(fd, buf, 2, MSG_PEEK); // Lit "dd"; position
réglée à 8
recv(fd, buf, 2, 0); // Lit "aa"; position
réglée à 6
recv(fd, buf, 2, MSG_PEEK); // Lit "ee"; position
réglée à 8
SO_PEERCRED
Renvoyer les accréditations du processus pair connecté à ce socket. Pour plus de détails, consultez unix (7).
SO_PEERSEC (depuis Linux 2.6.2)
Renvoyer le contexte de sécurité du socket pair connecté à ce socket. Pour plus de détails, consultez unix (7) et ip (7).
SO_PRIORITY
DĂ©finir la prioritĂ© dĂ©finie par le protocole pour tous les paquets envoyĂ©s sur ce socket. Linux utilise cette valeur pour trier les files rĂ©seau : les paquets avec une prioritĂ© Ă©levĂ©e peuvent ĂȘtre traitĂ©s dâabord, en fonction de la gestion des files sur le pĂ©riphĂ©rique sĂ©lectionnĂ©. Ătablir une prioritĂ© en dehors de lâintervalle allant de 0 Ă Â 6 nĂ©cessite la capacitĂ© CAP_NET_ADMIN .
SO_PROTOCOL (depuis Linux 2.6.32)
RĂ©cupĂ©rer le protocole de socket sous forme dâentier, en renvoyant une valeur telle que IPPROTO_SCTP . Consultez socket (2) pour plus de dĂ©tails. Cette option de socket peut ĂȘtre seulement lue et pas modifiĂ©e.
SO_RCVBUF
DĂ©finir ou lire la taille maximale en octets du tampon de rĂ©ception. Le noyau double cette valeur (pour prĂ©voir de lâespace pour les opĂ©rations de service) lorsque la valeur est dĂ©finie avec setsockopt (2) et cette valeur doublĂ©e est retournĂ©e par getsockopt (2). La valeur par dĂ©faut est dĂ©finie par le fichier /proc/sys/net/core/rmem_default et la valeur maximale autorisĂ©e est dĂ©finie par le fichier /proc/sys/net/core/rmem_max . La valeur (doublĂ©e) minimale pour cette option est 256.
SO_RCVBUFFORCE (depuis Linux 2.6.14)
En utilisant cette option de socket, un processus privilĂ©giĂ© ( CAP_NET_ADMIN ) peut exĂ©cuter la mĂȘme tĂąche que SO_RCVBUF , mais la limite rmem_max peut ĂȘtre remplacĂ©e.
SO_RCVLOWAT et SO_SNDLOWAT
Indiquer le nombre minimal dâoctets dans le tampon pour que la couche socket passe les donnĂ©es au protocole ( SO_SNDLOWAT ) ou Ă lâutilisateur en rĂ©ception ( SO_RCVLOWAT ). Ces deux valeurs sont initialisĂ©es Ă 1 . SO_SNDLOWAT nâest pas modifiable sur Linux ( setsockopt (2) Ă©choue avec lâerreur ENOPROTOOPT ). SO_RCVLOWAT est modifiable seulement depuis Linux 2.4.
Avant Linux 2.6.28, select (2), poll (2) et epoll (7) ne respectaient pas le rĂ©glage SO_RCVLOWAT sur Linux et indiquaient un socket comme lisible mĂȘme si un seul octet Ă©tait disponible. Une prochaine lecture du socket bloquerait alors jusquâĂ ce que SO_RCVLOWAT octets soient disponibles. Depuis Linux 2.6.28, select (2), poll (2) et epoll (7) indiquent quâun socket est lisible uniquement si au moins SO_RCVLOWAT octets sont disponibles.
SO_RCVTIMEO et SO_SNDTIMEO
Indiquer le dĂ©lai maximal dâĂ©mission ou de rĂ©ception avant de signaler une erreur. Le paramĂštre est une structure timeval . Si une fonction dâentrĂ©e ou de sortie bloque pendant cet intervalle de temps et que des donnĂ©es ont Ă©tĂ© envoyĂ©es ou reçues, la valeur de retour de cette fonction sera la quantitĂ© de donnĂ©es transmises. Si aucune donnĂ©e nâa Ă©tĂ© transmise et si le dĂ©lai dâattente est atteint, -1 est renvoyĂ© et errno est positionnĂ© Ă EAGAIN ou EWOULDBLOCK , ou EINPROGRESS (pour connect (2)), comme si le socket avait Ă©tĂ© dĂ©fini comme non bloquant. Si le dĂ©lai dâattente est dĂ©fini Ă zĂ©ro (valeur par dĂ©faut), lâopĂ©ration ne sera jamais interrompue. Les dĂ©lais nâont dâeffet que pour les appels systĂšme faisant des E/S sur des sockets (par exemple accept (2), connect (2), read (2), recvmsg (2), send (2), sendmsg (2)) ; ils nâont pas dâeffet pour select (2), poll (2), epoll_wait (2), etc.
SO_REUSEADDR
Indiquer que les rĂšgles utilisĂ©es pour la validation des adresses fournies dans un appel Ă bind (2) doivent autoriser la rĂ©utilisation des adresses locales. Pour les sockets AF_INET , cela signifie que le socket peut ĂȘtre attachĂ© Ă nâimporte quelle adresse sauf lorsquâun socket actif en Ă©coute y est liĂ©e. Lorsque le socket en Ă©coute est attachĂ© Ă INADDR_ANY avec un port spĂ©cifique, il nâest pas possible de sâattacher Ă ce port quelle que soit lâadresse locale. Lâargument est un attribut boolĂ©en entier.
SO_REUSEPORT (depuis Linux 3.9)
Autoriser plusieurs sockets AF_INET ou AF_INET6 Ă ĂȘtre liĂ©s Ă une adresse identique de socket. Cette option doit ĂȘtre dĂ©clarĂ©e sur chaque socket (y compris le premier socket) avant dâappeler bind (2) sur le socket. Pour prĂ©venir le dĂ©tournement de port, tous les processus reliĂ©s Ă la mĂȘme adresse doivent avoir le mĂȘme UID effectif. Cette option peut ĂȘtre employĂ©e avec les sockets TCP et UDP.
Pour les sockets TCP, cette option autorise la rĂ©partition des charges accept (2) dans un serveur multithread pour ĂȘtre renforcĂ©e en utilisant un socket dâĂ©coute pour chaque thread. Cela amĂ©liore la rĂ©partition des charges par rapport aux techniques traditionnelles telles quâun unique thread accept (2)ant qui rĂ©partit les connexions ou dâavoir plusieurs threads qui rivalisent pour accept (2) Ă partir du mĂȘme socket.
Pour les sockets UDP, lâutilisation de cette option peut procurer une meilleure rĂ©partition des datagrammes entrants vers plusieurs processus (ou threads) par rapport aux techniques traditionnelles dâavoir plusieurs processus rivalisant pour recevoir des datagrammes sur le mĂȘme socket.
SO_RXQ_OVFL (depuis Linux 2.6.33)
Indiquer quâun message auxiliaire (cmsg) sous la forme dâune valeur non signĂ©e et codĂ©e sur 32 bits doit ĂȘtre joint aux tampons de socket (skb â socket buffer), indiquant le nombre de paquets perdus par le socket depuis sa crĂ©ation.
SO_SELECT_ERR_QUEUE (depuis Linux 3.10)
Quand cette option est activĂ©e sur un socket, une condition dâerreur sur un socket entraĂźne une notification pas seulement Ă lâaide de lâensemble exceptfds de select (2). De la mĂȘme façon, poll (2) renvoie aussi POLLPRI a chaque fois quâun Ă©vĂšnement POLLERR est renvoyĂ©.
Contexte : cette option a Ă©tĂ© ajoutĂ©e depuis que le rĂ©veil sur une condition dâerreur se produisait seulement au travers des ensembles readfds et writefds de select (2). Cette option a Ă©tĂ© ajoutĂ©e pour permettre la supervision des conditions dâerreur Ă lâaide de lâargument exceptfds sans avoir simultanĂ©ment Ă recevoir des notifications (Ă lâaide de readfds ) pour des donnĂ©es rĂ©guliĂšres pouvant ĂȘtre lues Ă partir du socket. AprĂšs les changements dans Linux 4.16, lâutilisation de cet indicateur nâest plus nĂ©cessaire. Cette option est nĂ©anmoins conservĂ©e pour la rĂ©trocompatibilitĂ©.
SO_SNDBUF
DĂ©finir ou lire la taille maximale en octets du tampon dâĂ©mission. Le noyau double cette valeur (pour prĂ©voir de lâespace pour les opĂ©rations de service) lorsque la valeur est dĂ©finie avec setsockopt (2), et cette valeur doublĂ©e est retournĂ©e par getsockopt (2). La valeur par dĂ©faut est dĂ©finie par le fichier /proc/sys/net/core/wmem_default et la valeur maximale autorisĂ©e est dĂ©finie par le fichier /proc/sys/net/core/wmem_max . La valeur (doublĂ©e) minimale pour cette option est 2048.
SO_SNDBUFFORCE (depuis Linux 2.6.14)
En utilisant cette option de socket, un processus privilĂ©giĂ© ( CAP_NET_ADMIN ) peut exĂ©cuter la mĂȘme tĂąche que SO_SNDBUF , mais la limite wmem_max peut ĂȘtre remplacĂ©e.
SO_TIMESTAMP
Activer ou dĂ©sactiver la rĂ©ception des messages de contrĂŽle SO_TIMESTAMP . Le message de contrĂŽle dâhorodatage est envoyĂ© avec le niveau SOL_SOCKET et un cmsg_type de SCM_TIMESTAMP . Le champ cmsg_data est une structure timeval indiquant la date de rĂ©ception du dernier paquet fourni Ă lâutilisateur dans cet appel. Consultez cmsg (3) pour plus de dĂ©tails sur les messages de contrĂŽle.
SO_TIMESTAMPNS (depuis Linux 2.6.22)
Activer ou dĂ©sactiver la rĂ©ception des messages de contrĂŽle SO_TIMESTAMPNS . Le message de contrĂŽle dâhorodatage est envoyĂ© avec le niveau SOL_SOCKET et un cmsg_type de SCM_TIMESTAMPNS . Le champ cmsg_data est une structure timespec indiquant la date de rĂ©ception du dernier paquet fourni Ă lâutilisateur dans cet appel. Lâhorloge utilisĂ©e pour lâhorodatage est CLOCK_REALTIME . Consultez cmsg (3) pour plus de dĂ©tails sur les messages de contrĂŽle.
Un socket ne peut pas mélanger SO_TIMESTAMP et SO_TIMESTAMPNS , les deux modes sont mutuellement exclusifs.
SO_TYPE
Lire le type de socket, sous forme dâentier (par exemple, SOCK_STREAM ). Cette option de socket peut ĂȘtre seulement lue, et pas modifiĂ©e.
SO_BUSY_POLL (depuis Linux 3.11)
DĂ©finir la durĂ©e approximative, en milliseconde, dâattente active de rĂ©ception bloquante en absence de donnĂ©es. CAP_NET_ADMIN est nĂ©cessaire pour augmenter cette valeur. La valeur par dĂ©faut pour cette option est contrĂŽlĂ©e par le fichier /proc/sys/net/core/busy_read .
La valeur dans le fichier /proc/sys/net/core/busy_poll dĂ©termine la durĂ©e pendant laquelle select (2) et poll (2) seront en attente active lors dâune opĂ©ration sur des sockets avec SO_BUSY_POLL dĂ©fini et quâaucun Ă©vĂ©nement Ă signaler nâest trouvĂ©.
Dans les deux cas, lâattente active ne sera rĂ©alisĂ©e que lorsque les derniĂšres donnĂ©es reçues par le socket proviennent dâun pĂ©riphĂ©rique rĂ©seau qui prend en charge cette option.
Bien que lâattente active peut amĂ©liorer la latence de quelques applications, une attention particuliĂšre doit ĂȘtre portĂ©e Ă son utilisation puisque cela augmentera Ă la fois lâutilisation du processeur et la consommation de puissance.
Signaux
Lors de lâĂ©criture sur un socket orientĂ© connexion qui a Ă©tĂ© fermĂ© (localement ou Ă lâautre extrĂ©mitĂ©), le signal SIGPIPE est envoyĂ© au processus qui Ă©crivait et EPIPE est renvoyĂ©. Le signal nâest pas envoyĂ© lorsque lâappel dâĂ©criture indiquĂ© contenait lâattribut MSG_NOSIGNAL .
Lorsque demandĂ© avec lâoption FIOSETOWN de fcntl (2) ou lâoption SIOCSPGRP de ioctl (2), le signal SIGIO est envoyĂ© quand un Ă©vĂ©nement dâentrĂ©e-sortie a lieu. Il est possible dâutiliser poll (2) ou select (2) dans le gestionnaire de signal pour savoir sur quel socket lâĂ©vĂ©nement sâest produit. Une alternative (sous Linux 2.2) est de dĂ©finir un signal en temps rĂ©el avec le fnctl (2) F_SETSIG . Le gestionnaire du signal en temps rĂ©el sera appelĂ© avec le descripteur de fichier dans le champ si_fd de son siginfo_t . Consultez fcntl (2) pour plus dâinformations.
Dans certains cas (par exemple, diffĂ©rents processus accĂ©dant au mĂȘme socket), la condition ayant dĂ©clenchĂ© le signal SIGIO peut avoir dĂ©jĂ disparu quand le processus rĂ©agit au signal. Si cela se produit, le processus devrait attendre Ă nouveau, car Linux renverra ce signal ultĂ©rieurement.
/proc interfaces
Les
paramÚtres réseau de base des sockets sont
accessibles en utilisant les fichiers du répertoire
/proc/sys/net/core/
.
rmem_default
contient la taille en octets par défaut du tampon de réception du socket.
rmem_max
contient la taille maximale en octets du tampon de rĂ©ception quâun utilisateur peut dĂ©finir avec lâoption SO_RCVBUF du socket.
wmem_default
contient la taille en octets par dĂ©faut du tampon dâĂ©mission du socket.
wmem_max
contient la taille maximale en octets du tampon dâĂ©mission quâun utilisateur peut dĂ©finir avec lâoption SO_SNDBUF du socket.
message_cost et message_burst
configurent le filtrage par seau Ă jetons (token bucket) utilisĂ© pour limiter la charge des messages dâavertissement dus aux Ă©vĂ©nements rĂ©seau extĂ©rieurs.
netdev_max_backlog
contient le nombre maximal de paquets dans la file dâentrĂ©e globale.
optmem_max
contient la taille maximale par socket des données auxiliaires et des données de contrÎle utilisateur comme les « iovec ».
Ioctls
Ces opérations sont accessibles en utilisant ioctl (2) :
error = ioctl( ip_socket , type_ioctl , &valeur_résultat );
SIOCGSTAMP
Renvoyer une structure timeval avec la date de rĂ©ception du dernier paquet transmis Ă lâutilisateur. Cela est utile pour des mesures prĂ©cises du temps de cheminement. Consultez setitimer (2) pour une description de la structure timeval . Lâioctl ne doit ĂȘtre utilisĂ© que si les options SO_TIMESTAMP et SO_TIMESTAMPNS du socket ne sont pas dĂ©finies. Sinon, la date du dernier paquet reçu quand SO_TIMESTAMP et SO_TIMESTAMPNS nâĂ©taient pas dĂ©finies est renvoyĂ©e, ou un Ă©chec est constatĂ© si de tels paquets ne sont pas reçus (câest-Ă -dire que ioctl (2) renvoie -1 avec un errno dĂ©fini Ă ENOENT ).
SIOCSPGRP
DĂ©finir le processus ou le groupe de processus qui doivent recevoir les signaux SIGIO ou SIGURG quand les E/S deviennent possibles ou que des donnĂ©es urgentes sont disponibles. Lâargument est un pointeur vers un pid_t . Pour dâautres dĂ©tails, consultez la description de F_SETOWN dans fcntl (2).
FIOASYNC
Changer lâattribut O_ASYNC pour activer ou dĂ©sactiver le mode dâentrĂ©e-sortie asynchrone du socket. Un mode dâentrĂ©e-sortie asynchrone signifie que le signal SIGIO ou le signal dĂ©fini avec F_SETSIG est envoyĂ© quand un Ă©vĂ©nement dâentrĂ©e-sortie se produit.
Le paramĂštre est un entier boolĂ©en. (Cette opĂ©ration est synonyme de lâutilisation de fcntl (2) pour dĂ©finir lâattribut O_ASYNC ).
SIOCGPGRP
Lire le processus ou le groupe de processus en cours auquel les signaux SIGIO ou SIGURG sont envoyĂ©s. ZĂ©ro est obtenu quand aucun nâest dĂ©fini.
Opérations
fcntl
(2) valables :
FIOGETOWN
Identique Ă lâ ioctl (2) SIOCGPGRP .
FIOSETOWN
Identique Ă lâ ioctl (2) SIOCSPGRP .
VERSIONS
SO_BINDTODEVICE a Ă©tĂ© introduit dans Linux 2.0.30. SO_PASSCRED est une nouveautĂ© de Linux 2.2. Les interfaces /proc ont Ă©tĂ© introduites dans Linux 2.2. SO_RCVTIMEO et SO_SNDTIMEO sont gĂ©rĂ©s depuis Linux 2.3.41. Auparavant, les dĂ©lais dâattente Ă©taient dĂ©finis selon un rĂ©glage spĂ©cifique aux protocoles et ne pouvaient ĂȘtre ni lus ni modifiĂ©s.
NOTES
Linux suppose que la moitiĂ© du tampon dâĂ©mission/rĂ©ception est utilisĂ© pour les structures internes du noyau. Ainsi les valeurs dans les fichiers /proc correspondants sont deux fois plus grandes que ce que lâon peut observer directement sur le cĂąble.
Linux ne permettra la rĂ©utilisation des ports quâavec lâoption SO_REUSEADDR lorsque celle-ci sera dĂ©finie Ă la fois par le prĂ©cĂ©dent programme qui a effectuĂ© un bind (2) sur le port et par le programme qui veut rĂ©utiliser ce port. Cela diffĂšre de certaines implĂ©mentations (par exemple, sur FreeBSD) oĂč seul le dernier programme doit dĂ©finir lâoption SO_REUSEADDR . Habituellement, cette diffĂ©rence est invisible, puisque, par exemple, un programme serveur est conçu pour toujours dĂ©finir cette option.
VOIR AUSSI
wireshark (1), bpf (2), connect (2), getsockopt (2), setsockopt (2), socket (2), pcap (3), address_families (7), capabilities (7), ddp (7), ip (7), ipv6 (7), packet (7), tcp (7), udp (7), unix (7), tcpdump (8)
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>, Cédric Boutillier <cedric.boutillier@gmail.com>, Frédéric Hantrais <fhantrais@gmail.com> 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 .