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