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

Linux                                            24 janvier 2014                                    NETDEVICE(7)