Provided by: manpages-fr_4.13-4_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;
               };
           };

       Normalement, l'utilisateur indique le périphérique concerné en remplissant  ifr_name  avec
       le  nom  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
              Obtenir  ou  définir  l'adresse  du  périphérique  en  utilisant  ifr_addr. Définir
              l'adresse  du  périphérique  est  une  opération  privilégiée.  Pour   assurer   la
              compatibilité, seules les adresses AF_INET sont acceptées ou renvoyées.

       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; /* Table 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 IPv6 locales peuvent être trouvées dans /proc/net ou grâce à 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.10 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 ⟨⟩.