Provided by: manpages-fr_4.27.0-1_all bug

NOM

       ip – Implémentation Linux du protocole IPv4

SYNOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip.h> /* Surensemble des précédents */

       tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
       udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
       raw_socket = socket(AF_INET, SOCK_RAW, protocole);

DESCRIPTION

       Linux  implémente  le  protocole Internet (IP) version 4 décrit dans les RFC 791 et RFC 1122. ip contient
       une implémentation de la diffusion multiple niveau 2 conforme à la RFC 1112. Cette implémentation  inclut
       un routeur IP comprenant un filtre de paquets.

       L'interface  de  programmation  est  compatible  avec  les  sockets BSD. Pour plus d'informations sur les
       sockets, consultez socket(7).

       Un socket IP est créé en utilisant socket(2) :

           socket(AF_INET, type_socket, protocole);

       Les sockets autorisés incluent SOCK_STREAM pour ouvrir un socket flux, SOCK_DGRAM pour ouvrir  un  socket
       datagramme et SOCK_RAW pour ouvrir un socket raw(7) pour accéder directement au protocole IP.

       protocole  est  le  protocole  IP  dans  les  en-têtes  IP  reçus ou envoyés. Les valeurs autorisées pour
       protocole incluent :

       -  0 et IPPROTO_TCP pour les sockets flux tcp(7) ;

       -  0 et IPPROTO_UDP pour les sockets datagramme udp(7) ;

       -  IPPROTO_SCTP pour les sockets flux sctp(7) ;

       -  IPPROTO_UDPLITE pour les sockets datagramme udplite(7).

       Pour SOCK_RAW un protocole IP IANA autorisé, défini dans les numéros assignés de la RFC 1700,  peut  être
       indiqué.

       Lorsqu'un  processus  veut  recevoir  de nouveaux paquets entrants ou des connexions, il doit attacher un
       socket à une adresse d'interface locale en utilisant bind(2). Un seul socket IP peut être attaché  à  une
       paire (adresse, port) locale donnée. Lorsque INADDR_ANY est indiqué au moment de l'attachement, le socket
       sera  affecté  à  toutes  les  interfaces  locales.  Si  listen(2) est appelée sur un socket non affecté,
       celui-ci est automatiquement attaché  à  un  port  libre  aléatoire,  avec  l'adresse  locale  définie  à
       INADDR_ANY.  Si  connect(2) est appelée sur un socket non affecté, celui-ci est automatiquement attaché à
       un port libre aléatoire ou un port partagé utilisable avec l'adresse locale définie à INADDR_ANY.

       L'adresse locale d'un socket TCP qui a été attaché est indisponible pendant quelques  instants  après  sa
       fermeture,  à  moins  que  l'attribut  SO_REUSEADDR ait été activé. Il faut être prudent en utilisant cet
       attribut, car il rend le protocole TCP moins fiable.

   Formats d'adresse
       Une adresse de socket IP est définie comme la combinaison d'une adresse IP d'interface et d'un numéro  de
       port  de 16 bits. Le protocole IP de base ne fournit pas de numéros de port, ils sont implémentés par les
       protocoles de plus haut niveau comme udp(7) et tcp(7). Sur les sockets raw, le champ sin_port contient le
       protocole IP.

           struct sockaddr_in {
               sa_family_t    sin_family; /* Famille d'adresses : AF_INET */
               in_port_t      sin_port;   /* Port dans l'ordre des
                                             octets du réseau */
               struct in_addr sin_addr;   /* Adresse Internet */
           };

           /* Adresse Internet */
           struct in_addr {
               uint32_t       s_addr;     /* adresse dans l’ordre des
                                             octets du réseau */
           };

       sin_family est toujours défini à AF_INET. C'est indispensable : sous Linux 2.2, la plupart des  fonctions
       réseau  renvoient  EINVAL lorsque cette définition est absente. sin_port contient le numéro de port, dans
       l'ordre des octets du réseau. Les numéros de ports inférieurs à 1024 sont dits  privilégiés  (ou  parfois
       réservés). Seuls les processus privilégiés (sur Linux, ceux qui ont la capacité CAP_NET_BIND_SERVICE dans
       l’espace  de  noms  utilisateur  gouvernant  son  espace de noms réseau) peuvent appeler bind(2) pour ces
       sockets. Le protocole IPv4 brut en tant que tel n'a pas le concept  de  ports,  ceux-ci  étant  seulement
       implémentés par des protocoles de plus haut niveau comme tcp(7) et udp(7).

       sin_addr  est  l'adresse  IP  de  l'hôte.  Le membre s_addr de la structure in_addr contient l'adresse de
       l'interface de l'hôte, dans l'ordre des octets du réseau. in_addr  devrait  recevoir  l'une  des  valeurs
       INADDR_*  (par  exemple,  INADDR_LOOPBACK) en utilisant htonl(3) ou être défini à l’aide des fonctions de
       bibliothèque inet_aton(3), inet_addr(3), inet_makeaddr(3) ou directement par le système de résolution des
       noms (consultez gethostbyname(3)).

       Les adresses IPv4 sont divisées en adresses de diffusion individuelle (unicast),  de  diffusion  générale
       (broadcast)  et  de  diffusion multiple (multicast). Les adresses de diffusion individuelle décrivent une
       interface unique d'un hôte, les adresses de diffusion générale correspondent à tous les hôtes d'un réseau
       et les adresses de diffusion multiple représentent tous les hôtes d'un groupe de diffusion multiple.  Les
       datagrammes  vers  des  adresses de diffusion générale ne peuvent être émis et reçus que si l'attribut de
       socket SO_BROADCAST est activé. Dans l'implémentation actuelle, les sockets orientés  connexion  ne  sont
       autorisés que sur des adresses de diffusion individuelle.

       Remarquez que l'adresse et le port sont toujours stockés dans l'ordre des octets du réseau. Cela signifie
       en  particulier  qu'il  faut  invoquer htons(3) sur le numéro attribué à un port. Toutes les fonctions de
       manipulation d'adresses et de ports de la bibliothèque standard fonctionnent dans l'ordre des  octets  du
       réseau.

   Adresses spéciales et réservées
       Il y a plusieurs adresses spéciales :

       INADDR_LOOPBACK (127.0.0.1)
              fait toujours référence à l'hôte local à l’aide du périphérique de rebouclage (loopback) ;

       INADDR_ANY (0.0.0.0)
              signifie n'importe quelle adresse pour l’attachement de socket ;

       INADDR_BROADCAST (255.255.255.255)
              a  le  même  effet  que  INADDR_ANY  sur bind(2) pour des raisons historiques. Un paquet adressé à
              INADDR_BROADCAST à travers un socket ayant SO_BROADCAST défini sera diffusé à tous  les  hôtes  du
              segment  du  réseau  local,  aussi longtemps que la liaison sera en capacité de diffusion générale
              (broadcast).

       Numéro d'adresse le plus haut
       Numéro d'adresse le plus bas
              Sur tout sous-réseau IP non point-à-point localement attaché avec une liaison du type qui gère  la
              diffusion  générale  (broadcast),  l'adresse  avec  la  numérotation  la plus élevée (par exemple,
              l'adresse 255 sur un sous-réseau avec un  masque  de  réseau  255.255.255.0)  est  désignée  comme
              adresse de broadcast. Elle ne peut pas être assignée de manière utile à une interface individuelle
              et  ne  peut  être  adressée  qu'avec  un  socket  avec  l'option SO_BROADCAST définie. Les normes
              d’Internet ont aussi historiquement réservé l'adresse avec le numéro le  plus  bas  (par  exemple,
              l'adresse 0 d'un sous-réseau avec un masque réseau 255.255.255.0) pour le broadcast, bien qu’elles
              la  qualifient  d’«  obsolète  » pour cette fonction (quelques sources l'appellent aussi « adresse
              réseau »). Depuis Linux 5.14, elle est considérée comme une adresse ordinaire de diffusion  unique
              (unicast) et peut être assignée à une interface.

       Les   normes   d’Internet  ont  traditionnellement  réservé  aussi  diverses  adresses  pour  des  usages
       particuliers, bien que Linux ne traite plus certaines d’entre elles spécialement.

       [0.0.0.1, 0.255.255.255]
       [240.0.0.0, 255.255.255.254]
              Les adresses dans ces plages (0/8 et 240/4)  sont  réservées  globalement.  Depuis  Linux  5.3  et
              Linux 2.6.25, respectivement, les adresses 0/8 et 240/4, autres que INADDR_ANY et INADDR_BROADCAST
              sont  traitées  comme  des  adresses  unicast ordinaires. Les systèmes qui suivent le comportement
              traditionnel n'interagiront pas avec ces adresses historiquement réservées.

       [127.0.0.1, 127.255.255.254]
              Les adresses dans cette plage (127/8) sont traitées comme des adresses  de  rebouclage  (loopback)
              semblables à l'adresse standardisée de rebouclage locale INADDR_LOOPBACK (127.0.0.1) ;

       [224.0.0.0, 239.255.255.255]
              Les adresses dans cette plage (224/4) sont dédiées à un usage de diffusion multiple (multicast).

   Options de socket
       IP gère quelques options de sockets spécifiques au protocole qui peuvent être définies avec setsockopt(2)
       et  consultées  avec  getsockopt(2).  Le  niveau  d'option de sockets pour IP est IPPROTO_IP. Un attribut
       entier booléen est faux quand il vaut zéro et vrai sinon.

       Quand une option non autorisée de socket est spécifiée,  getsockopt(2)  et  setsockopt(2)  échouent  avec
       l’erreur ENOPROTOOPT.

       IP_ADD_MEMBERSHIP (depuis Linux 1.2)
              Rejoindre un groupe de diffusion multiple. L'argument est une structure ip_mreqn.

                  struct ip_mreqn {
                      struct in_addr imr_multiaddr; /* Adresse IP du groupe
                                                       de diffusion multiple */
                      struct in_addr imr_address;   /* Adresse IP de
                                                       l'interface locale */
                      int            imr_ifindex;   /* Numéro d'interface */
                  };

              imr_multiaddr  contient l'adresse du groupe de diffusion multiple que l'application veut rejoindre
              ou quitter. Il doit s'agir d'une adresse de diffusion multiple valable (sinon setsockopt(2) échoue
              avec l'erreur EINVAL). imr_address est l'adresse de l'interface locale avec  laquelle  le  système
              doit  joindre  le  groupe  de  diffusion  multiple.  Si elle est égale à INADDR_ANY, une interface
              appropriée est choisie par le système. imr_ifindex est le numéro de l'interface qui doit rejoindre
              ou quitter le groupe imr_multiaddr, ou zéro pour indiquer n'importe quelle interface.

              La structure ip_mreqn n'est disponible que depuis Linux 2.2.  Pour  la  compatibilité,  l'ancienne
              structure  ip_mreq  (présente  depuis Linux 1.2) est encore gérée. Elle ne diffère de ip_mreqn que
              par l'absence du champ imr_ifindex. Le noyau détermine quelle structure est passée  en  se  basant
              sur la taille passée à optlen.

              IP_ADD_MEMBERSHIP est autorisé seulement pour setsockopt(2).

       IP_ADD_SOURCE_MEMBERSHIP (depuis Linux 2.4.22/2.5.68)
              Rejoindre  un  groupe de diffusion multiple et autoriser la réception de données uniquement depuis
              une source indiquée. L'argument est une structure ip_mreq_source.

                  struct ip_mreq_source {
                      struct in_addr imr_multiaddr;  /* Adresse IP du groupe
                                                        de diffusion multiple */
                      struct in_addr imr_interface;  /* Adresse IP de
                                                        l'interface locale */
                      struct in_addr imr_sourceaddr; /* Adresse IP de la source
                                                        de diffusion multiple */
                  };

              La structure ip_mreq_source est similaire à  ip_mreqn  décrite  sous  IP_ADD_MEMBERSIP.  Le  champ
              imr_multiaddr  contient l'adresse du groupe de diffusion multiple que l'application veut rejoindre
              ou quitter. Le champ imr_interface est l'adresse de l'interface locale avec  laquelle  le  système
              doit  rejoindre  le groupe de diffusion multiple. Le champ imr_sourceaddr contient l'adresse de la
              source depuis laquelle l'application veut recevoir des données.

              Cette option peut être utilisée plusieurs  fois  pour  autoriser  la  réception  depuis  plusieurs
              sources.

       IP_BIND_ADDRESS_NO_PORT (depuis Linux 4.2)
              Informer  le  noyau  de  ne pas réserver un port éphémère lors de l’utilisation de bind(2) avec un
              numéro de port égal à zéro. Le port sera choisi plus tard automatiquement au moment de  connect(2)
              de façon à permettre de partager un port source aussi longtemps que le quadruplet est unique.

       IP_BLOCK_SOURCE (depuis Linux 2.4.22 et 2.5.68)
              Bloquer  la réception de données en diffusion multiple depuis une source spécifique pour un groupe
              donné. Cela n'est possible qu'après  que  l'application  s'est  abonnée  au  groupe  de  diffusion
              multiple en utilisant IP_ADD_MEMBERSHIP ou IP_ADD_SOURCE_MEMBERSHIP.

              L'argument est une structure ip_mreq_source comme décrite pour IP_ADD_SOURCE_MEMBERSHIP.

       IP_DROP_MEMBERSHIP (depuis Linux 1.2)
              Quitter  un  groupe  de  diffusion  multiple.  L'argument  est  une  structure ip_mreqn ou ip_mreq
              similaire à IP_ADD_MEMBERSHIP.

       IP_DROP_SOURCE_MEMBERSHIP (since Linux 2.4.22 et 2.5.68)
              Quitter un groupe spécifique à une source, c'est-à-dire arrêter de recevoir des données depuis une
              source donnée pour un groupe de multidiffusion donné. Si  l'application  est  abonnée  à  d'autres
              sources  du  même  groupe,  les  données  des  sources  restantes seront toujours transmises. Pour
              simultanément couper la réception depuis toutes les sources, utilisez IP_DROP_MEMBERSHIP.

              L'argument est une structure ip_mreq_source comme décrite pour IP_ADD_SOURCE_MEMBERSHIP.

       IP_FREEBIND (depuis Linux 2.4)
              Si cette option est activée, cet attribut booléen permet l'attachement à une adresse IP non locale
              ou qui n'existe pas (encore). Cela permet d'écouter sur un socket,  sans  que  l'interface  réseau
              sous-jacente  ou l'adresse IP dynamique indiquée ne soit opérationnelle au moment où l'application
              essaie de s'y attacher.  Cette  option  est  l'équivalent  spécifique  au  socket  de  l'interface
              ip_nonlocal_bind de /proc décrite plus bas.

       IP_HDRINCL (depuis Linux 2.0)
              Si  cette  option  est activée, l'utilisateur fournit un en-tête IP avant les données utilisateur.
              Cette option n'est valable que pour les sockets SOCK_RAW. Consultez raw(7) pour plus  de  détails.
              Lorsque  cet  attribut  est  activé,  les  valeurs définies pour IP_OPTIONS, IP_TTL et IP_TOS sont
              ignorées.

       IP_LOCAL_PORT_RANGE (depuis Linux 6.3)
              Définir ou obtenir la plage de ports locale par défaut par socket. Cette option peut être utilisée
              pour resserrer la plage globale de ports locaux, définie par l'interface /proc ip_local_port_range
              décrite ci-dessous, pour un socket donné.

              L'option prend une valeur uint32_t avec les 16 bits hauts réglés sur la limite  supérieure  de  la
              plage,  et les 16 bits bas réglés sur la limite la plus basse de la plage. Les limites de la plage
              sont inclusives. Les valeurs sur 16 bits doivent être dans l'ordre des octets de l'hôte.

              La limite basse doit être inférieure à la limite haute lorsque les deux limites  sont  différentes
              de zéro. Sinon, régler l'option échoue avec EINVAL.

              Si  chaque  limite  est  en dehors de la plage globale de ports locaux, ou est égale à zéro, cette
              limite n'a aucun effet.

              Pour réinitialiser les réglages, passez les limites supérieure et inférieure à zéro.

       IP_MSFILTER (depuis Linux 2.4.22 et 2.5.68)
              Cette option permet d'accéder à l'API de filtrage d’états avancée. L'argument  est  une  structure
              ip_msfilter.

                  struct ip_msfilter {
                      struct in_addr imsf_multiaddr;  /* Adresse IP du groupe
                                                         de diffusion multiple */
                      struct in_addr imsf_interface;  /* Adresse IP de
                                                         l'interface locale */
                      uint32_t       imsf_fmode;      /* Mode filtre/

                      uint32_t       imsf_numsrc;     /* Nombre de sources dans
                                                         le tableau suivant */
                      struct in_addr imsf_slist[1];   /* Tableau d'adresses
                                                         source */
                  };

              Les  deux  macros  MCAST_INCLUDE  et MCAST_EXCLUDE permettent d'identifier le mode de filtrage. De
              plus, la macro IP_MSFILTER_SIZE(n) permet de déterminer la quantité  de  mémoire  nécessaire  pour
              stocker une structure ip_msfilter contenant n sources.

              Pour  une  description  complète  du  filtrage  des  sources  de  diffusion multiple, consultez la
              RFC 3376.

       IP_MTU (depuis Linux 2.2)
              Récupérer la MTU du chemin actuellement déterminée pour le socket. Renvoi d’un entier.

              IP_MTU est valable seulement pour getsockopt(2) et peut être seulement employé quand le socket est
              connecté.

       IP_MTU_DISCOVER (depuis Linux 2.2)
              Définir ou récupérer la définition de découverte de MTU de chemin (Path  MTU  discovery  —  PMTUd)
              pour  un  socket.  Lorsqu'elle  est  activée, Linux effectuera la découverte de la MTU d'un chemin
              conformément à la RFC 1191 sur les sockets SOCK_STREAM. Pour les sockets autres  que  SOCK_STREAM,
              IP_PMTUDISC_DO  force l'activation de l'attribut interdisant la fragmentation sur tous les paquets
              sortants (bit DF — Don't Fragment). L'utilisateur est responsable  de  l'empaquetage  des  données
              dans des blocs inférieurs à la MTU et doit assurer la retransmission si besoin. Le noyau rejettera
              (avec  l'erreur  EMSGSIZE)  les  datagrammes  qui  sont plus gros que la MTU du chemin déterminée.
              IP_PMTUDISC_WANT fragmentera un datagramme si nécessaire  d'après  la  MTU  du  chemin,  ou  sinon
              activera l'attribut interdisant la fragmentation.

              Les   valeurs   par   défaut   du   système  peuvent  être  basculées  entre  IP_PMTUDISC_WANT  et
              IP_PMTUDISC_DONT en écrivant (respectivement la valeur zéro et une valeur différente de zéro) dans
              le fichier /proc/sys/net/ipv4/ip_no_pmtu_disc.
              Valeur de découverte de MTU de chemin   Signification
              IP_PMTUDISC_WANT                        Utiliser une configuration par route.
              IP_PMTUDISC_DONT                        Aucune découverte de MTU de chemin.
              IP_PMTUDISC_DO                          Toujours découvrir la MTU de chemin.
              IP_PMTUDISC_PROBE                       Activer DF mais ignorer la MTU de chemin.

              Lorsque la découverte de la MTU de chemin est activée, le noyau garde  automatiquement  une  trace
              des  MTU  de  chemin par hôte de destination. Lorsqu'il est connecté à un correspondant spécifique
              avec connect(2), la MTU du chemin actuel déterminée peut  être  consultée  en  utilisant  l'option
              IP_MTU  du  socket (par exemple, si une erreur EMSGSIZE se produit). La MTU de chemin peut changer
              au cours du temps. Pour les sockets sans connexion avec plusieurs destinations,  la  nouvelle  MTU
              pour  une destination donnée peut également être obtenue en utilisant la file d'erreurs (consultez
              IP_RECVERR). Une nouvelle erreur sera mise en file d'attente pour chaque mise à jour de la MTU.

              Durant la recherche de la MTU, les paquets initiaux des sockets datagramme  peuvent  être  perdus.
              Les  applications  utilisant  UDP  doivent  en  être informées et ne pas en tenir compte dans leur
              stratégie de retransmission de paquet.

              Pour démarrer le processus de recherche de la MTU du chemin sur les sockets non connectés, il  est
              possible de démarrer avec une grande taille de datagramme (jusqu'à 64 ko d'en-tête) et la diminuer
              au fur et à mesure des mises à jours de la MTU du chemin.

              Afin d'obtenir une estimation initiale de la MTU du chemin, il faut connecter un socket datagramme
              à  l'adresse  de destination en utilisant connect(2) et consulter la MTU en appelant getsockopt(2)
              avec l'option IP_MTU.

              Il est possible d'implémenter la RFC 4821 pour les recherches de MTU avec des  sockets  SOCK_DGRAM
              ou SOCK_RAW en utilisant la valeur IP_PMTUDISC_PROBE (disponible depuis Linux 2.6.22). C'est aussi
              particulièrement  utile  pour les outils de diagnostic comme tracepath(8) qui veulent délibérément
              envoyer des paquets sonde plus larges que la MTU observée du chemin.

       IP_MULTICAST_ALL (depuis Linux 2.6.31)
              Cette option peut être utilisée pour  modifier  la  politique  de  distribution  des  messages  de
              diffusion multiple. Ce paramètre est un entier booléen (par défaut à 1). Si ce dernier est à 1, le
              socket  recevra  les  messages  de  tous  les  groupes  qui ont été joints globalement par tout le
              système. Sinon, seuls seront  distribués  les  messages  des  groupes  auxquels  le  socket  s'est
              explicitement   joint   (par  exemple  en  utilisant  l'option  IP_ADD_MEMBERSHIP  sur  ce  socket
              particulier).

       IP_MULTICAST_IF (depuis Linux 1.2)
              Régler le périphérique local pour un socket de diffusion multiple. L’argument  pour  setsockopt(2)
              est  une  structure  ip_mreqn  ou (depuis Linux 3.5) ip_mreq similaire à IP_ADD_MEMBERSHIP, ou une
              structure in_addr. Le noyau détermine quelle structure est passée  en  se  basant  sur  la  taille
              passée dans optlen. Pour getsockopt(2), l’argument est une structure in_addr.

       IP_MULTICAST_LOOP (depuis Linux 1.2)
              Définir  ou  lire  un  entier  booléen indiquant si les paquets de diffusion multiple doivent être
              renvoyés aux sockets locaux.

       IP_MULTICAST_TTL (depuis Linux 1.2)
              Définir ou lire la valeur du champ Time-to-Live des paquets de diffusion multiple sortants sur  ce
              socket.  Il  est très important pour les paquets de diffusion multiple de définir ce champ le plus
              petit possible. La valeur par défaut est 1, ce qui signifie que les paquets de diffusion  multiple
              ne  quittent  pas  le  réseau  local  à  moins  que  le  programme  de l'utilisateur ne le réclame
              explicitement. L'argument est un entier.

       IP_NODEFRAG (depuis Linux 2.6.36)
              Si activé (argument différent de zéro), le réassemblage des paquets sortants est désactivé dans la
              couche netfilter. L'argument est un entier.

              Cette option est valable seulement pour les sockets SOCK_RAW.

       IP_OPTIONS (depuis Linux 2.0)
              Définir ou lire les options IP à envoyer avec chaque paquet de ce socket. Les  arguments  sont  un
              pointeur  sur  un  tampon  mémoire  contenant  les  options  et la longueur des options. L'appel à
              setsockopt(2) définit les options IP associées à un socket. La taille maximale  des  options  pour
              IPv4  vaut  40  octets.  Consultez  la  RFC 791  pour les options autorisées. Lorsque le paquet de
              requête de connexion initiale d'un socket SOCK_STREAM contient des options  IP,  celles-ci  seront
              automatiquement  réglées  aux options du paquet initial avec les en-têtes de routage inversés. Les
              paquets entrants ne peuvent pas modifier les options après que la  connexion  a  été  établie.  Le
              traitement  des  options  de  routage  des  paquets entrants est désactivé par défaut et peut être
              activé en utilisant l'interface accept_source_route  de  /proc.  Les  autres  options,  comme  les
              horodatages,  sont  toujours traitées. Pour les sockets datagramme, les options IP ne peuvent être
              définies que par l'utilisateur local. L'appel de getsockopt(2) avec IP_OPTIONS remplit  le  tampon
              fourni avec les options IP actuelles.

       IP_PASSSEC (depuis Linux 2.6.17)
              Si  Labeled  IPsec  ou si NetLabel est configuré sur les hôtes émetteur et récepteur, cette option
              autorise la réception du contexte de sécurité du socket pair dans un message de  service  de  type
              SCM_SECURITY  récupéré en utilisant recvmsg(2). Cette option est uniquement gérée pour les sockets
              UDP. Pour les sockets TCP ou SCTP, consultez la description de l’option SO_PEERSEC ci-dessous.

              La valeur donnée comme argument pour setsockopt(2) et renvoyée comme résultat de getsockopt(2) est
              un indicateur booléen entier.

              Le contexte de sécurité renvoyé dans le message de service SCM_SECURITY est  du  même  format  que
              celui décrit dans l’option SO_PEERSEC ci-dessous.

              Remarque  :  la  réutilisation  du type SCM_SECURITY de message pour l’option de socket IP_PASSSEC
              était probablement une erreur, puisque d’autres messages de  contrôle  IP  utilisent  leur  propre
              schéma  de  numérotation  dans l’espace de noms IP et utilisent la valeur d’option de socket comme
              type de message. Il n’y a pas de conflit actuellement puisque l’option IP avec la même valeur  que
              SCM_SECURITY est IP_HDRINCL et cela n’est jamais utilisé pour un type de message de contrôle.

       IP_PKTINFO (depuis Linux 2.2)
              Fournir  un  message IP_PKTINFO de service qui contient une structure pktinfo fournissant quelques
              informations sur le paquet entrant. Cela ne fonctionne que pour les sockets  orientés  datagramme.
              L'argument est un attribut indiquant au socket si le message IP_PKTINFO doit être passé ou non. Le
              message  lui-même  ne  peut  être  écrit  ou  lu  que  comme message de contrôle avec un paquet en
              utilisant recvmsg(2) ou sendmsg(2).

                  struct in_pktinfo {
                      unsigned int   ipi_ifindex;   /* Numéro d'interface     */
                      struct in_addr ipi_spec_dst;  /* Adresse locale         */
                      struct in_addr ipi_addr;      /* Adresse de destination
                                                       dans l’en-tête*/
                  };

              ipi_ifindex est le numéro unique de l'interface sur laquelle le paquet a  été  reçu.  ipi_spec_dst
              est  l'adresse locale du paquet et ipi_addr est l'adresse de destination dans l'en-tête du paquet.
              Si IP_PKTINFO est passé à sendmsg(2) et ipi_spec_dst est différent de zéro, alors il sera  utilisé
              comme  adresse  source  pour  la recherche dans la table de routage et pour définir les options de
              routage IP. Si ipi_ifindex est différent de  zéro,  l'adresse  locale  principale  de  l'interface
              indiquée par ce numéro remplace ipi_spec_dst pour la recherche dans la table de routage.

              Non pris en charge par les sockets SOCK_STREAM.

       IP_RECVERR (depuis Linux 2.2)
              Activer le passage amélioré des messages d'erreur. Lorsque cette option est activée pour un socket
              datagramme,  toutes les erreurs générées seront envoyées dans une file d'erreurs propre au socket.
              Quand l'utilisateur détecte une erreur d'opération sur le socket, celle-ci peut être  examinée  en
              invoquant recvmsg(2) avec l'attribut MSG_ERRQUEUE défini. La structure sock_extended_err décrivant
              l'erreur  sera  passée  comme message de service ayant le type IP_RECVERR et le niveau IPPROTO_IP.
              Cela permet une gestion d'erreur fiable sur les sockets non connectés. La  partie  comprenant  les
              données reçues de la file d'erreurs contient le paquet ayant rencontré un problème.

              Le message de contrôle IP_RECVERR contient une structure sock_extended_err :

                  #define SO_EE_ORIGIN_NONE    0
                  #define SO_EE_ORIGIN_LOCAL   1
                  #define SO_EE_ORIGIN_ICMP    2
                  #define SO_EE_ORIGIN_ICMP6   3

                  struct sock_extended_err {
                      uint32_t ee_errno;   /* Numéro d’erreur */
                      uint8_t  ee_origin;  /* Origine de l’erreur */
                      uint8_t  ee_type;    /* Type */
                      uint8_t  ee_code;    /* Code */
                      uint8_t  ee_pad;
                      uint32_t ee_info;    /* Informations supplémentaires */
                      uint32_t ee_data;    /* Autres données */
                      /* D’autres données possibles */
                  };

                  struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);

              ee_errno  contient  le  numéro  de l'erreur errno mise en file d'attente. ee_origin est le code de
              l'origine de l'erreur. Les autres champs sont spécifiques au protocole.  La  macro  SO_EE_OFFENDER
              renvoie  un pointeur sur l'adresse d'un objet réseau d'où l'erreur provient en prenant en argument
              un pointeur sur le message de service. Si cette adresse n'est pas connue, le membre  sa_family  de
              la structure sockaddr contient AF_UNSPEC et les autres champs de sockaddr ne sont pas définis.

              IP  utilise  la structure sock_extended_err comme suit : ee_origin contient SO_EE_ORIGIN_ICMP pour
              les erreurs reçues sous forme de paquet ICMP ou SO_EE_ORIGIN_LOCAL pour les erreurs  locales.  Les
              valeurs  inconnues doivent être ignorées. ee_type et ee_code sont définis à partir des champs type
              et code de l'en-tête ICMP. ee_info contient la  MTU  déterminée  pour  les  erreurs  EMSGSIZE.  Le
              message  contient  aussi  l'adresse sockaddr_in du nœud ayant causé l'erreur, qui peut être obtenu
              avec la macro SO_EE_OFFENDER. Le champ sin_family de l'adresse  fournie  par  SO_EE_OFFENDER  vaut
              AF_UNSPEC  si  la  source  était  inconnue.  Lorsque les erreurs proviennent du réseau, toutes les
              options IP (IP_OPTIONS, IP_TTL, etc.) valables pour le socket et contenues dans le paquet d'erreur
              sont transmises comme messages de contrôle.  La  charge  utile  du  paquet  causant  l'erreur  est
              renvoyée  comme charge normale. TCP n'a pas de file d'erreurs et MSG_ERRQUEUE n'est pas permis sur
              les sockets SOCK_STREAM. IP_RECVERR est valable pour TCP, mais toutes les erreurs  sont  renvoyées
              par des fonctions de socket ou seulement SO_ERROR.

              Pour  les  sockets  raw,  IP_RECVERR  active  le  passage  de  toutes  les  erreurs  ICMP reçues à
              l'application, sinon les erreurs sont seulement renvoyées sur les sockets connectés.

              Il définit ou récupère un attribut booléen entier. IP_RECVERR est désactivée par défaut.

       IP_RECVOPTS (depuis Linux 2.2)
              Passer à l'utilisateur toutes les options IP entrantes dans un  message  de  contrôle  IP_OPTIONS.
              L'en-tête  de  routage  et les autres options sont déjà remplies pour l'hôte local. Cela n'est pas
              géré pour les sockets SOCK_STREAM.

       IP_RECVORIGDSTADDR (depuis Linux 2.6.29)
              Cette option booléenne active le message de service IP_ORIGDSTADDR dans recvmsg(2), dans lequel le
              noyau renvoie l'adresse de destination originelle du datagramme en train d'être reçu.  Le  message
              de  service  contient  une  structure  sockaddr_in.  Option  non  prise en charge pour les sockets
              SOCK_STREAM.

       IP_RECVTOS (depuis Linux 2.2)
              Le message de service IP_TOS est passé avec les paquets entrants si cette option est  activée.  Il
              contient un octet qui décrit le champ Type-Of-Service/Precedence de l'en-tête du paquet. Il s'agit
              d'un attribut entier booléen. Non pris en charge par les sockets SOCK_STREAM.

       IP_RECVTTL (depuis Linux 2.2)
              Lorsque  cet  attribut est défini, passer un message de contrôle IP_TTL avec le champ Time-to-Live
              du paquet reçu, sous forme d’entier 32 bits. Cela n'est pas géré pour les sockets SOCK_STREAM.

       IP_RETOPTS (depuis Linux 2.2)
              Identique  à  IP_RECVOPTS,  mais  renvoie  les  options  raw  non  traitées,  avec   les   options
              d'enregistrement  des horodatages et du routage non remplies pour ce pas (hop). Non pris en charge
              par les sockets SOCK_STREAM.

       IP_ROUTER_ALERT (depuis Linux 2.2)
              Passer tous les paquets à transférer avec l'option IP Router Alert activée sur ce socket. Ce n'est
              valable que pour les sockets raw et sert par exemple pour les démons RSVP de l'espace utilisateur.
              Les paquets enregistrés ne sont pas redirigés par le noyau, l'utilisateur est responsable de  leur
              réacheminement.  La  liaison  du  socket est ignorée et de tels paquets ne sont filtrés que par le
              protocole. L’attribut est un entier.

       IP_TOS (depuis Linux 1.0)
              Définir ou récupérer le champ Type-Of-Service (TOS) envoyé avec chaque paquet  IP  sortant  de  ce
              socket.  Cela  sert  à gérer sur le réseau les priorités entre paquets. TOS est un octet. Quelques
              attributs TOS standards sont définis : IPTOS_LOWDELAY pour minimiser les  délais  pour  le  trafic
              interactif,  IPTOS_THROUGHPUT  pour  optimiser  le  débit,  IPTOS_RELIABILITY  pour  optimiser  la
              fiabilité, IPTOS_MINCOST qui doit être utilisé pour les données de remplissage où  la  lenteur  de
              transmission importe peu. Une au maximum de ces valeurs TOS peut être indiquée. Les autres bits ne
              sont pas valables et doivent être effacés. Linux envoie d'abord des datagrammes IPTOS_LOWDELAY par
              défaut,  mais  le  comportement  exact  dépend  de la politique configurée pour la file d'attente.
              Quelques niveaux de haute  priorité  peuvent  réclamer  les  privilèges  du  superutilisateur  (la
              capacité CAP_NET_ADMIN).

       IP_TRANSPARENT (depuis Linux 2.6.24)
              Cet attribut booléen active le mandataire transparent sur ce socket. Cette option de socket permet
              à  l'application  appelante  de s'attacher à une adresse IP non locale et de fonctionner à la fois
              comme un client et un  serveur  avec  l'adresse  extérieure  comme  point  de  terminaison  local.
              Remarque  :  le routage doit être configuré pour que les paquets envoyés vers l'adresse extérieure
              soient routés à  travers  la  boîte  TProxy  (c'est-à-dire  le  système  hébergeant  l'application
              utilisant  l'option de socket IP_TRANSPARENT). Les privilèges du superutilisateur sont nécessaires
              pour l'activation de cette option de socket (la capacité CAP_NET_ADMIN).

              Cette option doit également être configurée sur le socket redirigé pour la redirection TProxy avec
              la cible iptables TPROXY.

       IP_TTL (depuis Linux 1.0)
              Définir ou récupérer le contenu actuel du champ Time-to-Live utilisé  avec  chaque  paquet  envoyé
              depuis ce socket.

       IP_UNBLOCK_SOURCE (depuis Linux 2.4.22 et 2.5.68)
              Débloquer  une  source  de  diffusion multiple précédemment bloquée. Renvoi de EADDRNOTAVAIL si la
              source indiquée n'était pas bloquée.

              L'argument est une structure ip_mreq_source comme décrite pour IP_ADD_SOURCE_MEMBERSHIP.

       SO_PEERSEC (depuis Linux 2.6.17)
              Si Labeled IPsec ou si NetLabel est configuré sur les hôtes émetteur et récepteur, cette option de
              socket en lecture seule autorise la réception du contexte de sécurité du socket pair connecté à ce
              socket. Par défaut, cela sera le même contexte que celui du processus qui a créé le socket pair  à
              moins qu’il soit outrepassé par la politique ou par un processus ayant les permissions requises.

              L’argument  de getsockopt(2) est un pointeur vers un tampon de la longueur indiquée en octets dans
              lequel la chaîne de contexte de sécurité sera copiée. Si la taille  du  tampon  est  inférieure  à
              celle de la chaîne du contexte de sécurité, alors getsockopt(2) renvoie -1, définit errno à ERANGE
              et  renvoie  la  taille  requise à l’aide de optlen. L’appelant doit allouer initialement au moins
              NAME_MAX octets pour le tampon, bien que cela ne soit pas garanti d'être suffisant. Redimensionner
              le tampon à la taille renvoyée et réessayer peuvent être nécessaires.

              La chaîne de contexte de sécurité peut inclure un octet NULL final dans la taille  renvoyée,  mais
              il  n’est pas garanti que ce soit fait : un contexte de sécurité « abc » peut être représenté soit
              par {'a','b','c'} de taille 3, ou {'a','b','c','\0'}  de  taille  4,  qui  sont  considérés  comme
              interchangeables.  La  chaîne peut être affichée, mais ne contient pas d’octet NULL final, et elle
              est dans un encodage non précisé (en particulier, il n’est  pas  garanti  que  ce  soit  ASCII  ou
              UTF-8).

              L’utilisation  de  cette  option  pour  les  sockets de la famille d’adresses AF_INET est prise en
              charge depuis Linux 2.6.17 pour les sockets TCP et depuis Linux 4.17 pour les sockets SCTP.

              Pour SELinux, NetLabel transmet uniquement la portion MLS du contexte de sécurité du pair  sur  le
              réseau,  laissant  par  défaut  le  reste  du  contexte  de  sécurité aux valeurs définies dans la
              politique pour l’identifiant de sécurité initial  netmsg  (SID).  Cependant,  NetLabel  peut  être
              configuré  pour  passer  les  contextes  de sécurité en entier sur la boucle locale. Labeled IPSEC
              passe toujours les contextes de sécurité comme  partie  de  l’association  de  sécurité  (security
              association — SA) et les recherche en se basant sur l’association de chaque paquet.

   /proc interfaces
       Le  protocole IP prend en charge une série d'interfaces /proc pour configurer certaines options globales.
       Les  paramètres  peuvent  être  accédés  en  lisant  ou  écrivant  dans  les   fichiers   du   répertoire
       /proc/sys/net/ipv4/.  Les  interfaces  décrites  comme des booléens prennent une valeur entière. Celle-ci
       signifie que l'option correspondante est activée si elle est différente de zéro (« true ») et  désactivée
       si elle vaut zéro (« false »).

       ip_always_defrag (booléen ; depuis Linux 2.2.13)
              Nouveauté des noyaux 2.2.13, dans les noyaux précédents, cette fonctionnalité était contrôlée lors
              de la compilation avec l'option CONFIG_IP_ALWAYS_DEFRAG. Cette option n'est plus présente dans les
              versions 2.4.x et suivantes.

              Lorsque  cet  attribut booléen est activé (différent de zéro), les fragments entrants (morceaux de
              paquets IP obtenus quand un hôte entre l'origine et  la  destination  a  décidé  que  les  paquets
              étaient  trop  grands  et les a coupés en morceaux) seront réassemblés (défragmentés) avant d'être
              traités, même s'ils doivent être transférés.

              Cette option n'est à utiliser que pour un pare-feu qui est le seul lien d'entrée du réseau ou pour
              un mandataire transparent. Il ne faut jamais l'utiliser pour un routeur ou un hôte normal.  Sinon,
              les  communications  fragmentées  peuvent  être  perturbées  si  les  fragments circulent dans des
              liaisons différentes. La défragmentation a également un coût mémoire et processeur important.

              C’est automatiquement activé lorsque le camouflage des connexions (masquerading) ou le  mandataire
              transparent sont configurés.

       ip_autoconfig (depuis Linux 2.2 à 2.6.17)
              Non documenté.

       ip_default_ttl (entier ; défaut : 64 ; depuis Linux 2.2)
              Définir  la  valeur  par défaut du champ Time-to-Live des paquets sortants. Cela peut être modifié
              individuellement pour chaque socket avec l'option IP_TTL.

       ip_dynaddr (booléen ; désactivé par défaut ; depuis Linux 2.0.31)
              Activer la réécriture dynamique des adresses de socket  et  du  masquerading  lors  du  changement
              d'adresse d'interface. Cela sert pour les liaisons téléphoniques avec des adresses IP changeantes.
              0 signifie aucune réécriture, 1 les autorise et 2 demande un mode bavard.

       ip_forward (booléen ; désactivé par défaut) ; depuis Linux 1.2
              Activer  le  transfert  d'IP avec un attribut booléen. Le transfert d'IP peut aussi être configuré
              interface par interface.

       ip_local_port_range (depuis Linux 2.2)
              Ce fichier contient deux entiers qui définissent l’intervalle par défaut de ports  locaux  alloués
              aux sockets qui ne sont pas explicitement attachés à un numéro de port – c’est-à-dire l’intervalle
              utilisé  pour  les ports éphémères. Un port éphémère est alloué à un socket dans les circonstances
              suivantes :

              -  le numéro de port dans une adresse de socket est défini à 0 en appelant bind(2) ;

              -  listen(2) est appelé sur un socket de flux qui n’était pas attaché auparavant ;

              -  connect(2) a été appelée sur un socket qui n’était pas attaché auparavant ;

              -  sendto(2) est appelée sur un socket datagramme qui n’était pas attaché auparavant.

              L’allocation de ports éphémères commence avec le  premier  numéro  de  ip_local_port_range  et  se
              termine  avec  le  second.  Si  l’intervalle  de ports éphémères est épuisé, alors l’appel système
              associé renvoie une erreur (mais consultez BOGUES).

              Remarquez que l’intervalle de ports dans ip_local_port_range ne devrait pas entrer en conflit avec
              les ports utilisés pour  le  masquerading  (bien  que  cela  soit  traité).  De  même,  des  choix
              arbitraires  peuvent  poser  des  problèmes  avec  certains  filtrages  de  pare-feu  qui font des
              suppositions sur les ports locaux utilisés. Le premier nombre doit être au moins supérieur à  1024
              et,  de  préférence,  à  4096 pour éviter les collisions avec les ports officiels et minimiser les
              problèmes de pare-feu.

       ip_no_pmtu_disc (booléen ; désactivé par défaut) ; depuis Linux 2.2
              Si activé, supprimer la découverte par défaut des  MTU  des  chemins  pour  les  sockets  TCP.  La
              découverte de la MTU d'un chemin peut échouer avec des pare-feu mal configurés (qui rejettent tous
              les paquets ICMP) ou des interfaces mal configurées (par exemple, une liaison point-à-point où les
              deux extrémités n'ont pas la même MTU). Il vaut mieux corriger le routeur défectueux que supprimer
              globalement  la  découverte  des MTU des chemins, car cette dernière option entraîne un coût élevé
              pour le réseau.

       ip_nonlocal_bind (booléen ; désactivé par défaut ; depuis Linux 2.4)
              Si défini, permettre aux processus de s'attacher avec bind(2) à des adresses IP  non  locales,  ce
              qui peut être utile mais peut faire planter certaines applications.

       ip6frag_time (entier ; défaut : 30)
              Définir le temps en secondes de conservation d'un fragment IPv6 en mémoire.

       ip6frag_secret_interval (entier ; défaut : 600)
              Définir  l'intervalle de régénération (en secondes) du secret de hachage (ou sa durée de vie) pour
              les fragments IPv6.

       ipfrag_high_thresh (entier)
       ipfrag_low_thresh (entier)
              Si le nombre de fragments IP en attente atteint  ipfrag_high_thresh,  la  file  est  restreinte  à
              ipfrag_low_thresh. Contient un entier avec le nombre d'octets.

       neigh/*
              Consultez arp(7).

   Ioctls
       Tous les ioctls décrits dans socket(7) s'appliquent à ip.

       Les ioctls pour configurer les paramètres génériques des périphériques sont décrits dans netdevice(7).

ERREURS

       EACCES L'utilisateur  a  essayé  de  réaliser  une opération sans avoir les permissions nécessaires. Cela
              inclut : l'envoi d'un paquet vers une adresse de diffusion générale sans avoir  activé  l'attribut
              SO_BROADCAST,  l'envoi  d'un  paquet  par  une  route interdite, la modification du paramétrage du
              pare-feu sans les privilèges du superutilisateur (la capacité CAP_NET_ADMIN) et l'attachement à un
              port privilégié sans les privilèges du superutilisateur (la capacité CAP_NET_BIND_SERVICE).

       EADDRINUSE
              Tentative d'attachement à une adresse déjà utilisée.

       EADDRNOTAVAIL
              Une interface inexistante a été demandée ou l'adresse d'émission demandée n'était pas locale.

       EAGAIN L'opération sur un socket non bloquant devrait bloquer.

       EALREADY
              Une connexion est déjà en cours sur un socket non bloquant.

       ECONNABORTED
              Une connexion a été fermée durant un appel à accept(2).

       EHOSTUNREACH
              Aucune table de routage valable ne correspond à l'adresse de destination. Cette erreur  peut  être
              due à un message ICMP d'un routeur distant ou dans la table de routage interne.

       EINVAL Un  argument  non  valable  a été fourni. Pour les opérations d'envoi, cela peut être causé par un
              envoi vers une route trou noir.

       EISCONN
              connect(2) a été appelée sur un socket déjà connecté.

       EMSGSIZE
              Un datagramme est plus grand qu’une MTU sur le chemin et ne peut pas être fragmenté.

       ENOBUFS
       ENOMEM La mémoire libre est insuffisante. Cela signifie souvent que l'allocation mémoire  est  contrainte
              par  les limites du tampon de socket, pas par la mémoire du système, mais ce n'est pas toujours le
              cas.

       ENOENT SIOCGSTAMP a été appelé sur un socket qu'aucun paquet n'a atteint.

       ENOPKG Un sous-système du noyau n'est pas configuré.

       ENOPROTOOPT et EOPNOTSUPP
              Passage d'une option de socket non valable.

       ENOTCONN
              L'opération n'est définie que pour un socket connecté, mais ce socket n'était pas connecté.

       EPERM  L'utilisateur n'a pas la permission de définir une priorité haute, de changer la configuration  ou
              d'envoyer des signaux au groupe ou au processus demandé.

       EPIPE  La connexion a été fermée prématurément ou volontairement par l'autre extrémité.

       ESOCKTNOSUPPORT
              Le socket n'est pas configuré ou un type de socket inconnu a été demandé.

       D'autres  erreurs  peuvent être déclenchées par les protocoles des couches supérieures. Consultez tcp(7),
       raw(7), udp(7) et socket(7).

NOTES

       IP_FREEBIND,  IP_MSFILTER,   IP_MTU,   IP_MTU_DISCOVER,   IP_RECVORIGDSTADDR,   IP_PASSSEC,   IP_PKTINFO,
       IP_RECVERR, IP_ROUTER_ALERT et IP_TRANSPARENT sont spécifiques à Linux.

       Soyez  très  prudents avec l'option SO_BROADCAST, elle n'est pas privilégiée sous Linux. Il est facile de
       surcharger un réseau avec  des  diffusions  générales  sans  précaution.  Pour  les  nouveaux  protocoles
       applicatifs,  il  vaut  mieux  utiliser un groupe de diffusion multiple plutôt que la diffusion générale.
       Cette dernière est déconseillée. Voir  la  RFC  6762  pour  un  exemple  de  protocole  (mDNS)  utilisant
       l'approche  plus  moderne  de  diffusion multiple pour communiquer avec un groupe illimité d'hôtes sur le
       réseau local.

       Certaines autres implémentations des sockets BSD fournissent  les  options  de  socket  IP_RCVDSTADDR  et
       IP_RECVIF  pour  obtenir  l'adresse  de  destination  et l'interface des datagrammes reçus. Linux propose
       l'option IP_PKTINFO plus générale pour effectuer ce travail.

       Certaines implémentations BSD des sockets fournissent également l'option IP_RECVTTL, mais un  message  de
       service  ayant  le  type IP_RECVTTL est fourni avec le paquet entrant. C'est différent de l'option IP_TTL
       utilisée sous Linux.

       L'utilisation du niveau des options de socket SOL_IP  n'est  pas  portable,  les  piles  basées  sur  BSD
       utilisent le niveau IPPROTO_IP.

       INADDR_ANY(0.0.0.0)  et INADDR_BROADCAST (255.255.255.255) sont indépendantes de l’ordre des octets. Cela
       signifie que htonl(3) n’a aucun effet sur elles.

   Compatibilité
       Pour la compatibilité avec Linux 2.0, la syntaxe obsolète  socket(AF_INET,  SOCK_PACKET,  protocole)  est
       encore  gérée  pour  ouvrir  un  socket  packet(7).  Cela  est  déconseillé  et  doit  être  remplacé par
       socket(AF_PACKET, SOCK_RAW, protocole). La principale différence  est  la  nouvelle  structure  d'adresse
       sockaddr_ll  pour  les  informations  génériques  de  la  couche  de  liaison  à  la  place de l'ancienne
       sockaddr_pkt.

BOGUES

       Il y a trop de valeurs d'erreurs hétérogènes.

       L’erreur utilisée pour diagnostiquer l’épuisement de l’intervalle de ports éphémères  varie  suivant  les
       appels systèmes (connect(2), bind(2), listen(2), sendto(2)) qui peuvent assigner des ports éphémères.

       Les  ioctls  pour  configurer  les  options  d'interface  spécifiques  à IP et les tables ARP ne sont pas
       décrites.

       La réception de l'adresse de destination originale avec MSG_ERRQUEUE  dans  msg_name  par  recvmsg(2)  ne
       fonctionne pas dans certains noyaux Linux 2.2.

VOIR AUSSI

       recvmsg(2),  sendmsg(2),  byteorder(3),  capabilities(7),  icmp(7),  ipv6(7),  netdevice(7),  netlink(7),
       raw(7), socket(7), tcp(7), udp(7), ip(8)

       Le fichier source du noyau Documentation/networking/ip-sysctl.txt.

       RFC 791 pour les spécifications IP d'origine. RFC 1122 pour les exigences IPv4 des hôtes.  RFC 1812  pour
       les exigences IPv4 des routeurs.

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>, Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr> et bubu <bubub@no-log.org>

       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.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                              ip(7)