Man page - netdevice(7)

Packages contains this manual

Available languages:

en fr es ja zh_TW zh_CN

Manual

netdevice

NOM
SYNOPSIS
DESCRIPTION
Ioctls
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

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 passent 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;
};
};

AF_INET6 est une exception. Il passe une structure in6_ifreq :

struct in6_ifreq {
struct in6_addr ifr6_addr;
u32 ifr6_prefixlen;
int ifr6_ifindex; /* Interface index */
};

Normalement, l’utilisateur indique le pĂ©riphĂ©rique concernĂ© en rĂ©glant ifr_name comme nom de l’interface ou ifr6_ifindex comme indice 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 valant zĂ©ro ou la capacitĂ© CAP_NET_ADMIN . Sinon, il renverra l’erreur EPERM .
SIOCGIFNAME

Si ifr_ifindex est indiquĂ©, renvoyer le nom de l’interface dans ifr_name . C’est le seul ioctl qui renvoie son rĂ©sultat dans ifr_name .

SIOCGIFINDEX

Retrouver l’indice d’interface de l’interface dans ifr_ifindex .

SIOCGIFFLAGS
SIOCSIFFLAGS

Obtenir ou dĂ©finir le mot d’indicateur en cours du pĂ©riphĂ©rique. ifr_flags contient un masque de bits des valeurs suivantes :

Image grohtml-3848255-1.png

DĂ©finir le mot d’indicateur actif est une opĂ©ration privilĂ©giĂ©e, mais tout processus peut le lire.
SIOCGIFPFLAGS
SIOCSIFPFLAGS

Obtenir ou définir les indicateurs (privés) étendus du périphérique. ifr_flags est un masque de bits des valeurs suivantes :

Image grohtml-3848255-2.png

Définir les indicateurs (privés) étendus du périphérique est une opération privilégiée.
SIOCGIFADDR
SIOCSIFADDR
SIOCDIFADDR

Obtenir, dĂ©finir ou supprimer l’adresse du pĂ©riphĂ©rique en utilisant ifr_addr ou ifr6_addr avec ifr6_prefixlen . DĂ©finir ou supprimer l’adresse d’interface est une opĂ©ration privilĂ©giĂ©e. Pour la compatibilitĂ©, SIOCGIFADDR renvoie seulement les adresses AF_INET , SIOCSIFADDR accepte les adresses AF_INET et AF_INET6 et SIOCDIFADDR supprime seulement les adresses AF_INET6 . Une adresse AF_INET peut ĂȘtre supprimĂ©e en la dĂ©finissant Ă  zĂ©ro Ă  l’aide de SIOCSIFADDR .

SIOCGIFDSTADDR
SIOCSIFDSTADDR

Obtenir ou dĂ©finir 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. DĂ©finir l’adresse de destination est une opĂ©ration privilĂ©giĂ©e.

SIOCGIFBRDADDR
SIOCSIFBRDADDR

Obtenir ou dĂ©finir 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. DĂ©finir l’adresse de broadcast est une opĂ©ration privilĂ©giĂ©e.

SIOCGIFNETMASK
SIOCSIFNETMASK

Obtenir ou définir 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. Définir le masque réseau est une opération privilégiée.

SIOCGIFMETRIC
SIOCSIFMETRIC

Obtenir ou dĂ©finir la mĂ©trique du pĂ©riphĂ©rique en utilisant ifr_metric . Cela n’est pas encore implĂ©mentĂ©. Il dĂ©finit ifr_metric Ă  la valeur 0 en cas de tentative de lecture, et renvoie l’erreur EOPNOTSUPP en cas de tentative de dĂ©finition.

SIOCGIFMTU
SIOCSIFMTU

Obtenir ou définir 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

Obtenir ou dĂ©finir 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. DĂ©finir 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

Obtenir ou dĂ©finir les paramĂštres matĂ©riels de l’interface en utilisant ifr_map . DĂ©finir ces 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

Obtenir ou dĂ©finir la taille de la file d’attente de transmission du pĂ©riphĂ©rique avec ifr_qlen . La dĂ©finition 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 du tampon */
union {
char *ifc_buf; /* Adresse du tampon */
struct ifreq *ifc_req; /* Tableau des 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

SIOCGIFCONF et les autres ioctls qui n’acceptent ou ne renvoient que des adresses de socket AF_INET sont spĂ©cifiques Ă  IP et devraient plutĂŽt ĂȘtre documentĂ©s dans ip (7).

Les noms des interfaces sans adresse, ou celles qui n’ont pas l’indicateur IFF_RUNNING dĂ©fini peuvent ĂȘtre trouvĂ©s dans /proc/net/dev .

Les adresses AF_INET6 IPv6 peuvent ĂȘtre trouvĂ©es dans /proc/net/if_inet6 ou Ă  l’aide de rtnetlink (7). L’ajout d’une nouvelle adresse IPv6 ou la suppression d’une existante peut ĂȘtre rĂ©alisĂ© Ă  l’aide de SIOCSIFADDR et SIOCDIFADDR ou Ă  l’aide de rtnetlink (7). La rĂ©cupĂ©ration ou la modification d’une adresse IPv6 d’une interface point Ă  point est possible seulement Ă  l’aide de rtnetlink (7).

BOGUES

Dans la glibc 2.1, il manque la macro ifr_newname dans <net/if.h> . Comme solution, 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)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .