Provided by: manpages-fr_4.21.0-2_all bug

NOM

       netdevice – Accès bas niveau aux périphériques réseau sous Linux

SYNOPSIS

       #include <sys/ioctl.h>
       #include <net/if.h>

DESCRIPTION

       Cette page de manuel décrit l'interface des sockets permettant de configurer les périphériques réseau.

       Linux  prend  en charge certains ioctls standard pour configurer les périphériques réseau. Il servent sur
       n'importe quel descripteur de socket, quelle qu'en soit la famille ou le type.  La  plupart  passent  une
       structure ifreq :

           struct ifreq {
               char ifr_name[IFNAMSIZ]; /* Nom interface */
               union {
                   struct sockaddr ifr_addr;
                   struct sockaddr ifr_dstaddr;
                   struct sockaddr ifr_broadaddr;
                   struct sockaddr ifr_netmask;
                   struct sockaddr ifr_hwaddr;
                   short           ifr_flags;
                   int             ifr_ifindex;
                   int             ifr_metric;
                   int             ifr_mtu;
                   struct ifmap    ifr_map;
                   char            ifr_slave[IFNAMSIZ];
                   char            ifr_newname[IFNAMSIZ];
                   char           *ifr_data;
               };
           };

       AF_INET6 est une exception. Il passe une structure in6_ifreq :

           struct in6_ifreq {
               struct in6_addr     ifr6_addr;
               u32                 ifr6_prefixlen;
               int                 ifr6_ifindex; /* Interface index */
           };

       Normalement,  l'utilisateur indique le périphérique concerné en réglant ifr_name comme nom de l'interface
       ou ifr6_ifindex comme indice de l’interface. Tous les autres membres de la structure peuvent partager  la
       mémoire.

   Ioctls
       Si  un  ioctl est indiqué comme privilégié, alors il nécessite un UID effectif valant zéro ou la capacité
       CAP_NET_ADMIN. Sinon, il renverra l'erreur EPERM.

       SIOCGIFNAME
              Si ifr_ifindex est indiqué, renvoyer le nom de l'interface dans ifr_name. C'est le seul ioctl  qui
              renvoie son résultat dans ifr_name.

       SIOCGIFINDEX
              Retrouver l’indice d'interface de l’interface dans ifr_ifindex.

       SIOCGIFFLAGS, SIOCSIFFLAGS
              Obtenir  ou  définir le mot d’indicateur en cours du périphérique. ifr_flags contient un masque de
              bits des valeurs suivantes :

                                            Indicateur de périphérique

              IFF_UP            Interface en cours de fonctionnement.
              IFF_BROADCAST     Ensemble d’adresses de broadcast valables.
              IFF_DEBUG         Indicateur interne de débogage.
              IFF_LOOPBACK      L’interface est une interface de boucle locale.
              IFF_POINTOPOINT   L’interface est une liaison point à point.
              IFF_RUNNING       Ressources allouées.
              IFF_NOARP         Pas de protocole ARP, adresse de destination niveau 2 absente.
              IFF_PROMISC       L’interface est en mode promiscuité.
              IFF_NOTRAILERS    Pas d’utilisation des postambules.
              IFF_ALLMULTI      Réception de tous les paquets multicast.
              IFF_MASTER        Maître d'un système de répartition de charge.
              IFF_SLAVE         Esclave d'un système de répartition de charge.
              IFF_MULTICAST     Prise en charge du multicast.
              IFF_PORTSEL       Possibilité de sélectionner le type de média à l’aide de ifmap.
              IFF_AUTOMEDIA     Sélection automatique du média active.
              IFF_DYNAMIC       Les adresses sont perdues quand l'interface s’arrête.
              IFF_LOWER_UP      Le pilote signale la disponibilité du niveau 1 (depuis Linux 2.6.17).
              IFF_DORMANT       Le pilote signale l’inactivité (depuis Linux 2.6.17).
              IFF_ECHO          Répéter les paquets envoyés (depuis Linux 2.6.25).

       Définir le mot d’indicateur actif est une opération privilégiée, mais tout processus peut le lire.

       SIOCGIFPFLAGS, SIOCSIFPFLAGS
              Obtenir ou définir les indicateurs (privés) étendus du périphérique. ifr_flags est  un  masque  de
              bits des valeurs suivantes :

                                            Indicateurs privés
              IFF_802_1Q_VLAN      L’interface est un périphérique VLAN 802.1Q.
              IFF_EBRIDGE          L’interface est un périphérique de pont Ethernet.
              IFF_SLAVE_INACTIVE   L’interface est un esclave inactif d’agrégation de liens.
              IFF_MASTER_8023AD    L’interface est un maître 802.3ad d’agrégation de liens.
              IFF_MASTER_ALB       L’interface est un maître d’agrégation répartie par ALB.
              IFF_BONDING          L’interface est un maître ou un esclave d’agrégation.
              IFF_SLAVE_NEEDARP    L’interface nécessite ARP pour la validation.
              IFF_ISATAP           L’interface est de type ISATAP RFC4214.

       Définir les indicateurs (privés) étendus du périphérique est une opération privilégiée.

       SIOCGIFADDR, SIOCSIFADDR, SIOCDIFADDR
              Obtenir,  définir  ou  supprimer l’adresse du périphérique en utilisant ifr_addr ou ifr6_addr avec
              ifr6_prefixlen. Définir ou supprimer l’adresse d’interface est une opération privilégiée. Pour  la
              compatibilité,  SIOCGIFADDR  renvoie  seulement  les  adresses  AF_INET,  SIOCSIFADDR  accepte les
              adresses AF_INET et AF_INET6 et SIOCDIFADDR supprime seulement les adresses AF_INET6. Une  adresse
              AF_INET peut être supprimée en la définissant à zéro à l’aide de SIOCSIFADDR.

       SIOCGIFDSTADDR, SIOCSIFDSTADDR
              Obtenir  ou  définir  l'adresse  de  destination  d'un  périphérique  point  à  point en utilisant
              ifr_dstaddr. Pour assurer  la  compatibilité,  seules  les  adresses  AF_INET  sont  acceptées  ou
              renvoyées. Définir l'adresse de destination est une opération privilégiée.

       SIOCGIFBRDADDR, SIOCSIFBRDADDR
              Obtenir  ou  définir  l'adresse  de  broadcast pour un périphérique en utilisant ifr_brdaddr. Pour
              assurer la compatibilité, seules  les  adresses  AF_INET  sont  acceptées  ou  renvoyées.  Définir
              l'adresse de broadcast est une opération privilégiée.

       SIOCGIFNETMASK, SIOCSIFNETMASK
              Obtenir ou définir le masque réseau pour un périphérique en utilisant ifr_netmask. Pour assurer la
              compatibilité, seules les adresses AF_INET sont acceptées ou renvoyées. Définir le  masque  réseau
              est une opération privilégiée.

       SIOCGIFMETRIC, SIOCSIFMETRIC
              Obtenir  ou  définir  la  métrique  du périphérique en utilisant ifr_metric. Cela n'est pas encore
              implémenté. Il définit ifr_metric à la valeur 0  en  cas  de  tentative  de  lecture,  et  renvoie
              l'erreur EOPNOTSUPP en cas de tentative de définition.

       SIOCGIFMTU, SIOCSIFMTU
              Obtenir ou définir le MTU (Maximum Transfer Unit) du périphérique avec ifr_mtu. Définir le MTU est
              une opération privilégiée. Définir un MTU trop petit peut faire planter le noyau.

       SIOCGIFHWADDR, SIOCSIFHWADDR
              Obtenir ou définir l'adresse matérielle du périphérique en  utilisant  ifr_hwaddr.  Cette  adresse
              matérielle  est  indiquée  dans une structure sockaddr. sa_family contient le type de périphérique
              ARPHRD_*, sa_data  est  l'adresse  matérielle  L2  commençant  par  l'octet 0.  Définir  l'adresse
              matérielle est une opération privilégiée.

       SIOCSIFHWBROADCAST
              Définir  l'adresse  de  broadcast  du  périphérique  à  partir  de ifr_hwaddr. C'est une opération
              privilégiée.

       SIOCGIFMAP, SIOCSIFMAP
              Obtenir ou définir les paramètres matériels de  l'interface  en  utilisant  ifr_map.  Définir  ces
              paramètres est une opération privilégiée.

                  struct ifmap {
                      unsigned long   mem_start;
                      unsigned long   mem_end;
                      unsigned short  base_addr;
                      unsigned char   irq;
                      unsigned char   dma;
                      unsigned char   port;
                  };

              L'interprétation de la structure ifmap dépend du pilote de périphérique et de l'architecture.

       SIOCADDMULTI, SIOCDELMULTI
              Ajouter  ou  supprimer  une  adresse  des  filtres  multicast du niveau liaison du périphérique en
              utilisant ifr_hwaddr. Ce sont des opérations privilégiées.  Consultez  aussi  packet(7)  pour  une
              autre possibilité.

       SIOCGIFTXQLEN, SIOCSIFTXQLEN
              Obtenir  ou  définir la taille de la file d’attente de transmission du périphérique avec ifr_qlen.
              La définition de la taille de la file est une opération privilégiée.

       SIOCSIFNAME
              Changer le nom de l'interface  indiquée  dans  ifr_name  pour  ifr_newname.  C'est  une  opération
              privilégiée. Elle n'est possible que si l'interface n'est pas en fonctionnement.

       SIOCGIFCONF
              Renvoyer   une  liste  d’adresses  (couche  de  transport)  des  interfaces.  Cela  ne  fonctionne
              actuellement qu'avec les adresses AF_INET (IPv4) pour des raisons de compatibilité.  Contrairement
              aux autres, cet ioctl passe une structure ifconf :

                  struct ifconf {
                      int               ifc_len; /* Taille du tampon */
                      union {
                          char         *ifc_buf; /* Adresse du tampon */
                          struct ifreq *ifc_req; /* Tableau des structures */
                      };
                  };

              Si  ifc_req  est  NULL,  SIOCGIFCONF renvoie la taille de tampon nécessaire en octet pour recevoir
              toutes les adresses disponibles dans ifc_len. Sinon, ifc_req contient un pointeur vers un  tableau
              de  structures  ifreq  à  remplir  avec  toutes les adresses d’interfaces L3 actuellement actives.
              ifc_len contient la taille du tableau en octet. Dans toutes les structures ifreq, ifr_name recevra
              le  nom d’interface et ifr_addr l'adresse. Le nombre d’octets vraiment transférés est renvoyé dans
              ifc_len.

              Si la taille indiquée par ifc_len n’est pas suffisante pour stocker toutes les adresses, le  noyau
              ignorera  celles  en  trop  et  renverra  un  état de réussite. Si cela arrive, aucun moyen fiable
              n’existe pour détecter cette condition. Vous devriez donc soit  déterminer  la  taille  de  tampon
              nécessaire au préalable en appelant SIOCGIFCONF avec ifc_req défini à NULL, soit réessayer l’appel
              avec un plus gros tampon si la différence entre la valeur de retour ifc_len et sa valeur  initiale
              est supérieure à sizeof(struct ifreq).

              En cas d’erreur d’accès aux structures ifconf ou ifreq, EFAULT sera renvoyé.

       La plupart des protocoles prennent en charge leurs propres ioctls pour configurer les options d'interface
       spécifiques aux protocoles. Consultez les pages de manuel correspondantes. Pour configurer  les  adresses
       IP, consultez ip(7).

       De plus, certains périphériques prennent en charge des ioctls privés, non décrits ici.

NOTES

       SIOCGIFCONF  et les autres ioctls qui n'acceptent ou ne renvoient que des adresses de socket AF_INET sont
       spécifiques à IP et devraient plutôt être documentés dans ip(7).

       Les noms des interfaces sans adresse, ou celles qui n'ont pas  l'indicateur  IFF_RUNNING  défini  peuvent
       être trouvés dans /proc/net/dev.

       Les  adresses  AF_INET6  IPv6  peuvent être trouvées dans /proc/net/if_inet6 ou à l’aide de rtnetlink(7).
       L’ajout d’une nouvelle adresse IPv6 ou la suppression d’une existante  peut  être  réalisé  à  l’aide  de
       SIOCSIFADDR  et SIOCDIFADDR ou à l’aide de rtnetlink(7). La récupération ou la modification d’une adresse
       IPv6 d’une interface point à point est possible seulement à l’aide de rtnetlink(7).

BOGUES

       Dans la glibc 2.1, il manque la macro ifr_newname dans <net/if.h>. Comme  solution,  ajoutez  les  lignes
       suivantes dans votre programme :

           #ifndef ifr_newname
           #define ifr_newname     ifr_ifru.ifru_slave
           #endif

VOIR AUSSI

       proc(5), capabilities(7), ip(7), rtnetlink(7)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,     Denis    Barbier    <barbier@debian.org>,    David    Prévot
       <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à la  GNU  General  Public  License
       version 3   ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   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⟩.