Loading

NOM

       netdevice - Accès bas-niveau aux périphériques réseau sous Linux.

SYNOPSIS

       #include <sys/ioctl.h>
       #include <net/if.h>

       Cette  page  de  manuel  décrit  l’interface  des  socket 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.  Ils  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;
               };
           };

           struct ifconf {
               int                 ifc_len; /* taille tampon */
               union {
                   char *          ifc_buf; /* adresse tampon */
                   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.
              IFF_LOWER_UP      Le pilote signale la disponibilité de niveau L1 (depuis Linux 2.6.17)
              IFF_DORMANT       Le pilote signale les someils (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.

       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 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
              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é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
              Renvoie  une  liste  des  adresses  (couche  de  transport)  des
              interfaces. Ceci ne fonctionne 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’interface (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 d’origine
              du  tampon,  on  a  probablement  atteint  la  limite, et il est
              conseillé  de  recommencer  avec  un  tampon  plus  grand.  S’il
              réussit,  l’ioctl  renvoie  0, sinon il renvoie -1. Atteindre la
              limite du tampon n’est pas considéré comme une erreur.

       La plupart des protocoles prennent en charge 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 prennent en charge 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 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.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

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