Provided by: manpages-fr_3.65d1p1-1_all 

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)