Provided by: manpages-fr_1.67.0-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  socket permettant de
       configurer les périphériques réseau.

       Linux support des ioctls standard  pour  configurer  les  périphériques
       réseau.  Il servent sur n’importe quel descripteur de socket, quelqu’en
       soit la famille ou le type.  Ils utilisent une structure ifreq :

       struct ifreq {
           char    ifr_name[IFNAMSIZ];/* nom interface */
           union {
                   struct sockaddrifr_addr;
                   struct sockaddrifr_dstaddr;
                   struct sockaddrifr_broadaddr;
                   struct sockaddrifr_netmask;
                   struct sockaddrifr_hwaddr;
                   short   ifr_flags;
                   int     ifr_ifindex;
                   int     ifr_metric;
                   int     ifr_mtu;
                   struct ifmapifr_map;
                   char    ifr_slave[IFNAMSIZ];
                   char    ifr_newname[IFNAMSIZ];
                   char *  ifr_data;
           };
       };

       struct ifconf {
           int ifc_len;    /* taille buffer */
           union {
                   char *  ifc_buf; /* adresse buffer */
                   struct ifreq *ifc_req; /* table de structures */
           };
       };

       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 :

                                             Device flags
              IFF_UP            Interface fonctionne.
              IFF_BROADCAST     Adresse de broadcast valide.
              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 via ifmap.
              IFF_AUTOMEDIA     Sélection automatique du média.
              IFF_DYNAMIC       Adresse perdue quand l’interfac est arrêtée.

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

       SIOCGIFMETRIC, SIOCSIFMETRIC
              Lire   ou  écrire  la  métrique  du  périphérique  en  utilisant
              ifr_metric.  Ceci n’est pas encore implémenté, il  renvoie  dans
              ifr_metric la valeur 0 si on essaye de lire, et renvoie l’erreur
              EOPNOTSUPP si on essaye d’écrire.

       SIOCGIFMTU, SIOCSIFMTU
              Lire ou écrire le MTU (Maximum Transfer  Unit)  du  périphérique
              avec ifr_mtu.  Fixer le MTU est une opération privilégiée. Fixer
              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 contien 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
              Fixer  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.   Voir  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értation 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
              Renvoie  une  liste  des  adresses  (couche  de  transport)  des
              interfaces.  Ceci  ne  marche  actuellement qu’avec les adresses
              AF_INET (IPv4) pour des raisons de compatibilité.  L’utilisateur
              passe  une structure ifconf en argument à l’ioctl. Elle contient
              un pointeur sur une table de structures ifreq  dans  son  membre
              ifc_req et la longueur en octets dans ifc_len.  Le noyau remplit
              les ifreqs  avec  toutes  les  adresses  L3  des  interfaces  en
              fonctionnement :   ifr_name  contient  le  nom  de  l’interfacez
              (eth0:1 etc.), et  ifr_addr  l’adresse.   Le  noyau  renvoie  la
              longueur réelle dans ifc_len.  Si ifc_len est égal à la longueur
              originale du buffer, on a probablement atteint la limite, et  il
              est  conseillé  de  recommencer avec un buffer plus grand.  S’il
              réussit, l’ioctl renvoie 0, sinon il renvoie -1.   Atteindre  la
              limite du buffer n’est pas considéré comme une erreur.

       La   plupart  des  protocoles  supportent  leurs  propres  ioctls  pour
       configurer les options d’interface spécifiques aux protocoles. Voir les
       pages  de  manuel correspondante. Pour configurer les adresses IP, voir
       ip(7).

       De plus, certains  périphériques  supportent  des  ioctls  privés,  non
       décrits ici.

NOTES

       Strictement  parlant,  SIOCGIFCONF  est  spécifique  à IP et devrait 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 maco 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

       ip(7), proc(7), rtnetlink(7)

TRADUCTION

       Christophe Blaess, 2003.