Provided by: manpages-fr_3.57d1p1-1_all bug

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 comme AF_INET, AF_IPX, 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 une socket,  connect(2)  connecte  une  socket  à  une  adresse  de  socket
       distante, la fonction bind(2) attache une socket à une adresse locale, listen(2) indique à
       la socket que de nouvelles connexions doivent être acceptées,  et  accept(2)  fournit  une
       nouvelle  socket  avec  la nouvelle connexion entrante. socketpair(2) renvoie deux sockets
       anonymes connectées (seulement implémenté pour quelques familles locales comme AF_UNIX).

       send(2), sendto(2), et sendmsg(2)  envoient  des  données  sur  une  socket,  et  recv(2),
       recvfrom(2)  et  recvmsg(2)  reçoivent  les  données  envoyées  par une 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 de la socket locale et getpeername(2)  renvoie  l'adresse
       de  la  socket  distante.  getsockopt(2) et setsockopt(2) servent à définir et obtenir les
       options de la couche socket ou protocole. ioctl(2) peut être utilisé pour lire  et  écrire
       d'autres options.

       close(2)  sert  à  fermer  une  socket.  shutdown(2) ferme une partie des connexions d'une
       socket multiple.

       La recherche ou l'utilisation de pread(2) et pwrite(2) avec un décalage non nul 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 la 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).

       ┌───────────────────────────────────────────────────────────────┐
       │                        Événements E/S                         │
       ├─────────────┬─────────┬───────────────────────────────────────┤
       │Événement    │ Appel   │ Circonstance                          │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lecture      │ POLLIN  │ Arrivée de nouvelles données          │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lecture      │ POLLIN  │ Configuration d'une connexion achevée │
       │             │         │ (pour     les    sockets    orientées │
       │             │         │ connexion)                            │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lecture      │ POLLHUP │ Demande de  déconnexion  initiée  par │
       │             │         │ l'autre extrémité                     │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lecture      │ POLLHUP │ Connexion  rompue (seulement pour les │
       │             │         │ protocoles orientés  connexion)  Lors │
       │             │         │ de   l'écriture  sur  la  socket,  le │
       │             │         │ signal SIGPIPE est aussi émis.        │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Écriture     │ POLLOUT │ La socket a assez de  place  dans  le │
       │             │         │ tampon   d'émission  pour  écrire  de │
       │             │         │ nouvelles données.                    │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lect./Écrit. │ POLLIN| │ Un appel  sortant  à  connect(2)  est │
       │             │ POLLOUT │ terminé.                              │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lect./Écrit. │ POLLERR │ Une erreur asynchrone s'est produite. │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Lect./Écrit. │ POLLHUP │ Le  correspondant  a  clos un sens de │
       │             │         │ communication.                        │
       ├─────────────┼─────────┼───────────────────────────────────────┤
       │Exception    │ POLLPRI │ Arrivée de données  urgentes.  SIGURG │
       │             │         │ est alors envoyé.                     │
       └─────────────┴─────────┴───────────────────────────────────────┘
       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  de la socket via 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'adresse 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  avec  un  champ  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  sockets  (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 interface 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 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  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 sockets
       Les options 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, et ce pour toutes les
       sockets. Sauf mention contraire, optval est un pointeur vers un int.

       SO_ACCEPTCONN
              Renvoie  une  valeur  indiquant  si  la  socket  a été déclarée comme acceptant les
              connexions à l'aide de listen(2). La valeur 0 indique que la socket  n'est  pas  en
              attente  de connexions et la valeur 1 indique que la socket accepte les connexions.
              Cette option de socket peut être seulement lue, et pas modifiée.

       SO_BINDTODEVICE
              Attache cette 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, la socket est détachée du périphérique. L'option transmise  est
              une  chaîne de longueur variable terminée par un caractère nul, contenant le nom de
              l'interface, la longueur maximale étant IFNAMSIZ. Si une socket est attachée à  une
              interface, seuls les paquets reçus de cette interface particulière sont traités par
              la socket. Cela ne fonctionne que pour certains types de  sockets,  en  particulier
              les  sockets AF_INET. Ce 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,
              préférablement  IFNAMSZ.  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ées à envoyer des paquets à une adresse de diffusion. Cette
              option n'a aucun effet sur les sockets orientées flux.

       SO_BSDCOMPAT
              Active 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 une 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 brutes
              ayant cette option, mais cela a été éliminé dans Linux 2.2.

       SO_DEBUG
              Active le débogage de socket. Cela n'est autorisé que pour les  processus  avec  la
              capacité CAP_NET_ADMIN ou un identifiant d'utilisateur effectif égal à 0.

       SO_DOMAIN (depuis Linux 2.6.32)
              Récupère  le domaine de socket en tant qu'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, et pas modifiée.

       SO_ERROR
              Lit  et  efface  l'erreur  en cours sur la socket. Cette option de socket peut être
              seulement lue, et pas modifiée. Demande un entier.

       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 la socket. Demande un attribut entier booléen.

       SO_KEEPALIVE
              Active l'émission de messages  périodiques  gardant  la  socket  ouverte  pour  les
              sockets orientées connexion. Demande un attribut entier booléen.

       SO_LINGER
              Définit ou lit l'option SO_LINGER. Le paramètre est une structure linger.

                  struct linger {
                      int l_onoff;    /* définition de l'activité */
                      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 la 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  la  socket  est  fermée  au
              cours d'un exit(2), elle attend toujours en arrière-plan.

       SO_MARK (depuis Linux 2.6.25)
              Positionner  la  marque  pour  chaque  paquet  envoyé  au  travers  de cette 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.

       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
              Autorise ou interdit la réception des messages de  contrôle  SCM_CREDENTIALS.  Pour
              plus de détails, consultez unix(7).

       SO_PEEK_OFF (depuis Linux 3.4)
              Cette option, qui n'est à ce jour garantie que pour les sockets unix(7), définit la
              valeur de la « position de lecture » (ou  « 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
              toute nouvelle socket), elle se comporte classiquement : recv(2),  avec  l'attribut
              MSG_PEEK, lit les données depuis le 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 accumulées dans la 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 de l'attribut MSG_TRUNC.

              L'exemple  suivant  illustre  l'usage  de SO_PEEK_OFF. Imaginons une 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;                  // affecte 4 à la position de lecture
                  setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov));

                  recv(fd, buf, 2, MSG_PEEK);  // Lit "cc"; l'indide de position prend la valeur 6
                  recv(fd, buf, 2, MSG_PEEK);  // Lit "dd"; l'indice de position prend la valeur 8
                  recv(fd, buf, 2, 0);         // Lit "aa"; l'indice de position prend la valeur 6
                  recv(fd, buf, 2, MSG_PEEK);  // Lit "ee"; l'indice position prend la valeur 8

       SO_PEERCRED
              Renvoie les données d'authentification  du  processus  étranger  connecté  à  cette
              socket.  Cela n'est possible que pour les sockets de flux AF_UNIX connectées et les
              paires de sockets AF_UNIX de flux et  de  datagrammes  crées  avec  socketpair(2) ;
              consultez  unix(7).  Les  données  retournées sont celles qui étaient effectives au
              moment de l'appel à connect(2)  ou  socketpair(2).  L'argument  est  une  structure
              ucred.  Il  faut définir la macro de test de fonctionnalité GNU_SOURCE pour activer
              la définition de cette structure dans <sys/socket.h>. Cette option de  socket  peut
              être seulement lue, et pas modifiée.

       SO_PRIORITY
              Définir  la  priorité définie par le protocole pour tous les paquets envoyés sur la
              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.  Pour  ip(7),  cela  définit  aussi   le   champ   IP
              Type-Of-Service  (TOS) pour les paquets sortants. É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ère le protocole de socket en tant qu'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éfinit ou lit 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
              Indique  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  (setsockopt(2)  échoue  avec  l'erreur  ENOPROTOOPT).  SO_RCVLOWAT  est
              modifiable  seulement  depuis Linux 2.4. Les appels système select(2) et poll(2) ne
              respectent pour le moment pas la définition de SO_RCVLOWAT sur Linux, et marque  la
              socket  comme  lisible  même  lorsqu'un  unique octet de données est disponible. La
              lecture suivante depuis la socket sera bloquée jusqu'à  ce  que  SO_RCVLOWAT octets
              soient 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ée  à  EAGAIN  ou  EWOULDBLOCK,  ou
              EINPROGRESS  (pour  connect(2)),  comme  si  la  socket avait été définie comme non
              bloquante. 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  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
              Indique  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 la socket peut être attachée à n'importe quelle
              adresse sauf lorsqu'une socket active en écoute y est liée. Lorsque  la  socket  en
              écoute  est attachée à 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_SNDBUF
              Définit  ou  lit 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
              Active ou désactive 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 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_TYPE
              Lit le type de socket, sous forme d'entier (comme  SOCK_STREAM).  Cette  option  de
              socket peut être seulement lue, et pas modifiée.

       SO_BUSY_POLL
              Définit  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 la socket proviennent d’un périphérique réseau qui ne prend pas
              en charge cette option.

              Bien que l’attente active peut améliorer la latence de quelques  applications,  une
              attention  particulière doit être portées à son utilisation puisque cela augmentera
              à la fois l’utilisation du processeur et la consommation puissance.

   Signaux
       Lors de l'écriture sur une socket orientée connexion qui a été  fermée  (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 quelle
       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  siginfo_t.  Consultez
       fcntl(2) pour plus d'informations.

       Dans  certains  cas  (par  exemple,  différents  processus  accédant à la 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.

   Interfaces /proc
       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.

       rmem_max
              contient la taille maximale en octets du tampon de réception qu'un utilisateur peut
              définir avec l'option SO_RCVBUF de la socket.

       wmem_default
              contient la taille en octets par défaut du tampon d'émission de la socket.

       wmem_max
              contient la taille maximale en octets du tampon d'émission qu'un  utilisateur  peut
              définir avec l'option SO_SNDBUF de la socket.

       message_cost et message_burst
              configurent  le  filtrage  par  jeton  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 de service  et  des  données  de
              contrôle utilisateur comme les iovecs.

   Ioctls
       Ces opérations sont accessibles en utilisant ioctl(2) :

           error = ioctl(ip_socket, type_ioctl, &valeur_résultat);

       SIOCGSTAMP
              Renvoie  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 l'option SO_TIMESTAMP de  la  socket  n'est  pas  définie.
              Sinon,  la  date  du dernier paquet reçu quand SO_TIMESTAMP n'était pas définie est
              renvoyée, provoquant un échec s'il n'exite pas de tels  paquets  (c'est-à-dire  que
              ioctl(2) renvoie -1 avec un errno défini à ENOENT).

       SIOCSPGRP
              Définit  le  processus ou le groupe de processus à qui envoyer les signaux SIGIO ou
              SIGURG lorsqu'une opération d'entrée-sortie  asynchrone  est  terminée  ou  si  des
              données  urgentes  sont  disponibles.  L'argument  est un pointeur sur un pid_t. Si
              l'argument est positif, le signal est envoyé à ce processus. S'il est  négatif,  le
              signal  est envoyé au groupe de processus dont l'identifiant correspond à la valeur
              absolue de l'argument. Un processus ne peut demander que l'émission  vers  lui-même
              ou  son  propre  groupe,  à  moins qu'il ait la capacité CAP_KILL ou un identifiant
              d'utilisateur effectif nul.

       FIOASYNC
              Change l'attribut O_ASYNC  pour  activer  ou  désactiver  le  mode  d'entrée-sortie
              asynchrone  de la 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 booléen entier. (Cette opération est synonyme de l'utilisation
              de fcntl(2) pour définir l'attribut O_ASYNC).

       SIOCGPGRP
              Lit le processus ou le groupe de processus 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 dans les 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.  Ceci  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.

BOGUES

       Des  options  CONFIG_FILTER  de  socket, SO_ATTACH_FILTER et SO_DETACH_FILTER, ne sont pas
       documentées. Pour les utiliser, il est conseillé d'utiliser la bibliothèque libpcap.

VOIR AUSSI

       getsockopt(2),  connect(2),  setsockopt(2),  socket(2),  capabilities(7),  ddp(7),  ip(7),
       packet(7), tcp(7), udp(7), unix(7)

COLOPHON

       Cette  page  fait partie de la publication 3.57 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».