.\" -*- coding: UTF-8 -*- '\" t .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" $Id: netdevice.7,v 1.10 2000/08/17 10:09:54 ak Exp $ .\" .\" Modified, 2004-11-25, mtk, formatting and a few wording fixes .\" .\" Modified, 2011-11-02, , added many basic .\" but missing ioctls, such as SIOCGIFADDR. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH netdevice 7 "2 mai 2024" "Pages du manuel de Linux 6.9.1" .SH NOM netdevice – Accès bas niveau aux périphériques réseau sous Linux .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP .fi .SH DESCRIPTION Cette page de manuel décrit l'interface des sockets permettant de configurer les périphériques réseau. .P 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 \fIifreq\fP : .P .in +4n .EX 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; }; }; .EE .in .P \fBAF_INET6\fP est une exception. Il passe une structure \fIin6_ifreq\fP : .P .in +4n .EX struct in6_ifreq { struct in6_addr ifr6_addr; u32 ifr6_prefixlen; int ifr6_ifindex; /* Interface index */ }; .EE .in .P Normalement, l'utilisateur indique le périphérique concerné en réglant \fIifr_name\fP comme nom de l'interface ou \fIifr6_ifindex\fP comme indice de l’interface. Tous les autres membres de la structure peuvent partager la mémoire. .SS Ioctls Si un ioctl est indiqué comme privilégié, alors il nécessite un UID effectif valant zéro ou la capacité \fBCAP_NET_ADMIN\fP. Sinon, il renverra l'erreur \fBEPERM\fP. .TP \fBSIOCGIFNAME\fP Si \fIifr_ifindex\fP est indiqué, renvoyer le nom de l'interface dans \fIifr_name\fP. C'est le seul ioctl qui renvoie son résultat dans \fIifr_name\fP. .TP \fBSIOCGIFINDEX\fP Retrouver l’indice d'interface de l’interface dans \fIifr_ifindex\fP. .TP \fBSIOCGIFFLAGS\fP .TQ \fBSIOCSIFFLAGS\fP .\" Do not right adjust text blocks in tables Obtenir ou définir le mot d’indicateur en cours du périphérique. \fIifr_flags\fP contient un masque de bits des valeurs suivantes\ : .na .TS tab(:); c s l l. Indicateur de périphérique IFF_UP:Interface en cours de fonctionnement. IFF_BROADCAST:Ensemble d’adresses de broadcast valables. IFF_DEBUG:Indicateur interne de débogage. IFF_LOOPBACK:L’interface est une interface de boucle locale. IFF_POINTOPOINT:L’interface est une liaison point à point. IFF_RUNNING:Ressources allouées. IFF_NOARP:T{ Pas de protocole ARP, adresse de destination niveau 2 absente. T} IFF_PROMISC:L’interface est en mode promiscuité. IFF_NOTRAILERS:Pas d’utilisation des postambules. IFF_ALLMULTI:Réception de 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:Prise en charge du multicast. IFF_PORTSEL:Possibilité de sélectionner le type de média à l’aide de ifmap. IFF_AUTOMEDIA:Sélection automatique du média active. IFF_DYNAMIC:T{ Les adresses sont perdues quand l'interface s’arrête. T} IFF_LOWER_UP:Le pilote signale la disponibilité du niveau 1 (depuis Linux 2.6.17). IFF_DORMANT:Le pilote signale l’inactivité (depuis Linux 2.6.17). IFF_ECHO:Répéter les paquets envoyés (depuis Linux 2.6.25). .TE .ad .P Définir le mot d’indicateur actif est une opération privilégiée, mais tout processus peut le lire. .TP \fBSIOCGIFPFLAGS\fP .TQ \fBSIOCSIFPFLAGS\fP Obtenir ou définir les indicateurs (privés) étendus du périphérique. \fIifr_flags\fP est un masque de bits des valeurs suivantes\ : .TS tab(:); c s l l. Indicateurs privés IFF_802_1Q_VLAN:L’interface est un périphérique VLAN 802.1Q. IFF_EBRIDGE:L’interface est un périphérique de pont Ethernet. IFF_SLAVE_INACTIVE:L’interface est un esclave inactif d’agrégation de liens. IFF_MASTER_8023AD:L’interface est un maître 802.3ad d’agrégation de liens. IFF_MASTER_ALB:L’interface est un maître d’agrégation répartie par ALB. IFF_BONDING:L’interface est un maître ou un esclave d’agrégation. IFF_SLAVE_NEEDARP:L’interface nécessite ARP pour la validation. IFF_ISATAP:L’interface est de type ISATAP RFC4214. .TE .P Définir les indicateurs (privés) étendus du périphérique est une opération privilégiée. .TP \fBSIOCGIFADDR\fP .TQ \fBSIOCSIFADDR\fP .TQ \fBSIOCDIFADDR\fP Obtenir, définir ou supprimer l’adresse du périphérique en utilisant \fIifr_addr\fP ou \fIifr6_addr\fP avec \fIifr6_prefixlen\fP. Définir ou supprimer l’adresse d’interface est une opération privilégiée. Pour la compatibilité, \fBSIOCGIFADDR\fP renvoie seulement les adresses \fBAF_INET\fP, \fBSIOCSIFADDR\fP accepte les adresses \fBAF_INET\fP et \fBAF_INET6\fP et \fBSIOCDIFADDR\fP supprime seulement les adresses \fBAF_INET6\fP. Une adresse \fBAF_INET\fP peut être supprimée en la définissant à zéro à l’aide de \fBSIOCSIFADDR\fP. .TP \fBSIOCGIFDSTADDR\fP .TQ \fBSIOCSIFDSTADDR\fP Obtenir ou définir l'adresse de destination d'un périphérique point à point en utilisant \fIifr_dstaddr\fP. Pour assurer la compatibilité, seules les adresses \fBAF_INET\fP sont acceptées ou renvoyées. Définir l'adresse de destination est une opération privilégiée. .TP \fBSIOCGIFBRDADDR\fP .TQ \fBSIOCSIFBRDADDR\fP Obtenir ou définir l'adresse de broadcast pour un périphérique en utilisant \fIifr_brdaddr\fP. Pour assurer la compatibilité, seules les adresses \fBAF_INET\fP sont acceptées ou renvoyées. Définir l'adresse de broadcast est une opération privilégiée. .TP \fBSIOCGIFNETMASK\fP .TQ \fBSIOCSIFNETMASK\fP Obtenir ou définir le masque réseau pour un périphérique en utilisant \fIifr_netmask\fP. Pour assurer la compatibilité, seules les adresses \fBAF_INET\fP sont acceptées ou renvoyées. Définir le masque réseau est une opération privilégiée. .TP \fBSIOCGIFMETRIC\fP .TQ \fBSIOCSIFMETRIC\fP Obtenir ou définir la métrique du périphérique en utilisant \fIifr_metric\fP. Cela n'est pas encore implémenté. Il définit \fIifr_metric\fP à la valeur 0 en cas de tentative de lecture, et renvoie l'erreur \fBEOPNOTSUPP\fP en cas de tentative de définition. .TP \fBSIOCGIFMTU\fP .TQ \fBSIOCSIFMTU\fP Obtenir ou définir le MTU (Maximum Transfer Unit) du périphérique avec \fIifr_mtu\fP. Définir le MTU est une opération privilégiée. Définir un MTU trop petit peut faire planter le noyau. .TP \fBSIOCGIFHWADDR\fP .TQ \fBSIOCSIFHWADDR\fP Obtenir ou définir l'adresse matérielle du périphérique en utilisant \fIifr_hwaddr\fP. Cette adresse matérielle est indiquée dans une structure \fIsockaddr\fP. \fIsa_family\fP contient le type de périphérique ARPHRD_*, \fIsa_data\fP 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. .TP \fBSIOCSIFHWBROADCAST\fP Définir l'adresse de broadcast du périphérique à partir de \fIifr_hwaddr\fP. C'est une opération privilégiée. .TP \fBSIOCGIFMAP\fP .TQ \fBSIOCSIFMAP\fP Obtenir ou définir les paramètres matériels de l'interface en utilisant \fIifr_map\fP. Définir ces paramètres est une opération privilégiée. .IP .in +4n .EX struct ifmap { unsigned long mem_start; unsigned long mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; }; .EE .in .IP L'interprétation de la structure ifmap dépend du pilote de périphérique et de l'architecture. .TP \fBSIOCADDMULTI\fP .TQ \fBSIOCDELMULTI\fP Ajouter ou supprimer une adresse des filtres multicast du niveau liaison du périphérique en utilisant \fIifr_hwaddr\fP. Ce sont des opérations privilégiées. Consultez aussi \fBpacket\fP(7) pour une autre possibilité. .TP \fBSIOCGIFTXQLEN\fP .TQ \fBSIOCSIFTXQLEN\fP Obtenir ou définir la taille de la file d’attente de transmission du périphérique avec \fIifr_qlen\fP. La définition de la taille de la file est une opération privilégiée. .TP \fBSIOCSIFNAME\fP Changer le nom de l'interface indiquée dans \fIifr_name\fP pour \fIifr_newname\fP. C'est une opération privilégiée. Elle n'est possible que si l'interface n'est pas en fonctionnement. .TP \fBSIOCGIFCONF\fP Renvoyer une liste d’adresses (couche de transport) des interfaces. Cela ne fonctionne actuellement qu'avec les adresses \fBAF_INET\fP (IPv4) pour des raisons de compatibilité. Contrairement aux autres, cet ioctl passe une structure \fIifconf\fP : .IP .in +4n .EX struct ifconf { int ifc_len; /* Taille du tampon */ union { char *ifc_buf; /* Adresse du tampon */ struct ifreq *ifc_req; /* Tableau des structures */ }; }; .EE .in .IP Si \fIifc_req\fP est NULL, \fBSIOCGIFCONF\fP renvoie la taille de tampon nécessaire en octet pour recevoir toutes les adresses disponibles dans \fIifc_len\fP. Sinon, \fIifc_req\fP contient un pointeur vers un tableau de structures \fIifreq\fP à remplir avec toutes les adresses d’interfaces L3 actuellement actives. \fIifc_len\fP contient la taille du tableau en octet. Dans toutes les structures \fIifreq\fP, \fIifr_name\fP recevra le nom d’interface et \fIifr_addr\fP l'adresse. Le nombre d’octets vraiment transférés est renvoyé dans \fIifc_len\fP. .IP Si la taille indiquée par \fIifc_len\fP 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 \fBSIOCGIFCONF\fP avec \fIifc_req\fP défini à NULL, soit réessayer l’appel avec un plus gros tampon si la différence entre la valeur de retour \fIifc_len\fP et sa valeur initiale est supérieure à \fIsizeof(struct\ ifreq)\fP. .IP .\" Slaving isn't supported in Linux 2.2 .\" . .\" .TP .\" .B SIOCGIFSLAVE .\" .TQ .\" .B SIOCSIFSLAVE .\" Get or set the slave device using .\" .IR ifr_slave . .\" Setting the slave device is a privileged operation. .\" .P .\" FIXME . add amateur radio stuff. En cas d’erreur d’accès aux structures \fIifconf\fP ou \fIifreq\fP, \fBEFAULT\fP sera renvoyé. .P 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 \fBip\fP(7). .P De plus, certains périphériques prennent en charge des ioctls privés, non décrits ici. .SH NOTES \fBSIOCGIFCONF\fP et les autres ioctls qui n'acceptent ou ne renvoient que des adresses de socket \fBAF_INET\fP sont spécifiques à IP et devraient plutôt être documentés dans \fBip\fP(7). .P Les noms des interfaces sans adresse, ou celles qui n'ont pas l'indicateur \fBIFF_RUNNING\fP défini peuvent être trouvés dans \fI/proc/net/dev\fP. .P Les adresses \fBAF_INET6\fP IPv6 peuvent être trouvées dans \fI/proc/net/if_inet6\fP ou à l’aide de \fBrtnetlink\fP(7). L’ajout d’une nouvelle adresse IPv6 ou la suppression d’une existante peut être réalisé à l’aide de \fBSIOCSIFADDR\fP et \fBSIOCDIFADDR\fP ou à l’aide de \fBrtnetlink\fP(7). La récupération ou la modification d’une adresse IPv6 d’une interface point à point est possible seulement à l’aide de \fBrtnetlink\fP(7). .SH BOGUES Dans la glibc 2.1, il manque la macro \fIifr_newname\fP dans \fI\fP. Comme solution, ajoutez les lignes suivantes dans votre programme\ : .P .in +4n .EX #ifndef ifr_newname #define ifr_newname ifr_ifru.ifru_slave #endif .EE .in .SH "VOIR AUSSI" \fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Paul Guillonneau . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .