Provided by: manpages-fr_4.15.0-9_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)

COLOPHON

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

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⟩.