Provided by: manpages-fr_3.65d1p1-1_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 utilisent 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  nul  ou  la
       capacité CAP_NET_ADMIN. Sinon, il renverra l'erreur EPERM.

       SIOCGIFNAME
              En  utilisant  ifr_ifindex,  renvoie  le nom de l'interface dans ifr_name. C'est le
              seul ioctl qui renvoie un résultant dans ifr_name.

       SIOCGIFINDEX
              Retrouve le numéro d'interface et le place dans ifr_ifindex.

       SIOCGIFFLAGS, SIOCSIFFLAGS
              Lire ou écrire les attributs actifs du périphérique. ifr_flags est un mot contenant
              un masque de bits combinant les valeurs suivantes :

                                 Attributs de périphérique
              IFF_UP            Interface fonctionne.
              IFF_BROADCAST     Adresse de broadcast valable.
              IFF_DEBUG         Attribut interne de débogage.
              IFF_LOOPBACK      Interface de type loopback.
              IFF_POINTOPOINT   Interface de type point-à-point.
              IFF_RUNNING       Resources allouées.

              IFF_NOARP         Pas de protocole ARP, adresse de destination
                                L2 absente.
              IFF_PROMISC       Interface en mode promiscuous.
              IFF_NOTRAILERS    N'utilise pas les postambules.
              IFF_ALLMULTI      Accepte 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     Support multicast.
              IFF_PORTSEL       Capable de sélectionner le média par ifmap.
              IFF_AUTOMEDIA     Sélection automatique du média.
              IFF_DYNAMIC       Adresse perdue quand l'interface est arrêtée.
              IFF_LOWER_UP      Le pilote signale la disponibilité de niveau
                                L1 (depuis Linux 2.6.17)
              IFF_DORMANT       Le pilote signale les sommeils (depuis
                                Linux 2.6.17)
              IFF_ECHO          Renvoyer les paquets envoyé (depuis
                                Linux 2.6.25)

              Écrire  les  attributs  est une opération privilégiée, mais tout processus peut les
              lire.

       SIOCGIFPFLAGS, SIOCSIFPFLAGS
              Lire ou écrire les attributs (privés) étendus du périphérique. ifr_flags est un mot
              contenant un masque de bits combinant les valeurs suivantes :

                                      Attributs privés
              IFF_802_1Q_VLAN      Périphérique de type VLAN 802.1Q.
              IFF_EBRIDGE          Périphérique de pontage Ethernet.
              IFF_SLAVE_INACTIVE   Esclave de bonding inactif.
              IFF_MASTER_8023AD    Maître de bonding 802.3ad.
              IFF_MASTER_ALB       Maître de bonding balance-alb.
              IFF_BONDING          Maître ou esclave de bonding.
              IFF_SLAVE_NEEDARP    ARP nécessaires pour validation d’interface.
              IFF_ISATAP           Interface de type ISATAP RFC4214.

              Écrire   les   attributs   (privés)  étendus  du  périphérique  est  une  opération
              privilégiée.

       SIOCGIFADDR, SIOCSIFADDR
              Lire ou écrire l'adresse du périphérique en utilisant ifr_addr. Écrire 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
              Lire  ou  écrire  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. Écrire l'adresse  de  destination  est  une  opération
              privilégiée.

       SIOCGIFBRDADDR, SIOCSIFBRDADDR
              Lire   ou   écrire  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.   Écrire  l'adresse  de  broadcast  est  une  opération
              privilégiée.

       SIOCGIFNETMASK, SIOCSIFNETMASK
              Lire ou écrire 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.
              Écrire le masque réseau est une opération privilégiée.

       SIOCGIFMETRIC, SIOCSIFMETRIC
              Lire ou écrire la métrique du périphérique en utilisant ifr_metric.  Ce  n'est  pas
              encore  implémenté,  il  renvoie dans ifr_metric la valeur 0 en cas de tentative de
              lecture, et renvoie l'erreur EOPNOTSUPP en cas de tentative d’écriture.

       SIOCGIFMTU, SIOCSIFMTU
              Lire ou écrire 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
              Lire ou écrire 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. Écrire 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
              Lire ou écrire les  paramètres  matériels  de  l'interface  en  utilisant  ifr_map.
              L'écriture des 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
              Lire ou écrire la taille de la  file  d'émission  du  périphérique  avec  ifr_qlen.
              L'écriture 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 tampon */
                      union {
                          char *          ifc_buf; /* adresse tampon */
                          struct ifreq   *ifc_req; /* table de 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

       Strictement  parlant, SIOCGIFCONF et les autres ioctls qui n'acceptent ou ne renvoient que
       des adresses de socket AF_INET sont spécifiques à IP et devraient se trouver dans ip(7).

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

       Les adresses IPv6 locales se trouvent dans /proc/net ou grâce à rtnetlink(7).

BOGUES

       Dans  la  glibc 2.1  il  manque  la  macro ifr_newname dans <net/if.h>. 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 3.65 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

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

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

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