1. NOM▲
if_nameindex, if_freenameindex - Obtenir le nom et l'indice des interfaces réseau
2. SYNOPSIS ▲
#include <net/if.h>
struct
if_nameindex *
if_nameindex
(
void
);
void
if_freenameindex
(
struct
if_nameindex *
ptr);
3. DESCRIPTION ▲
La fonction if_nameindex() renvoie un tableau de structures if_nameindex, contenant chacune des informations au sujet d'une des interfaces réseau du système local. La structure if_nameindex contient au moins les champs suivants :
unsigned
int
if_index; /* indice de l'interface (1, 2, etc.) */
char
*
if_name; /* nom terminé par un caractère nul ("eth0", etc.) */
Le champ if_index contient l'indice de l'interface. Le champ ifa_name pointe vers le nom de l'interface, donné par une chaîne terminée par un caractère nul. La fin du tableau est indiquée par une entrée dont les champs if_index et ifa_name valent respectivement 0 et le pointeur NULL.
La donnée renvoyée par if_nameindex() est dynamiquement allouée et devrait être libérée avec if_freenameindex() lorsqu'elle n'est plus utilisée.
4. VALEUR RENVOYÉE ▲
En cas de réussite, if_nameindex() renvoie un pointeur vers le tableau. En cas d'erreur, elle renvoie un pointeur NULL et errno est rempli avec le code d'erreur.
5. ERREURS ▲
if_nameindex() peut échouer et remplir errno si :
- ENOBUFS
les ressources disponibles sont insuffisantes.
getifaddrs() peut aussi échouer pour les erreurs précisées pour socket(2), bind(2), getsockname(2), recvmsg(2), sendto(2) ou malloc(3).
6. VERSIONS ▲
getifaddrs() est apparue dans la glibc 2.1. Les versions antérieures à la glibc 2.3.4 ne géraient que les interfaces avec des adresses IPv4. La gestion des interfaces qui n'ont pas d'adresse IPv4 n'est disponible que si le noyau gère netlink.
7. CONFORMITÉ ▲
RFC 3493, POSIX.1-2001. Cette fonction est d'abord apparue dans BSDi.
8. EXEMPLE ▲
Le programme ci-dessous montre l'utilisation des fonctions décrites dans cette page. Voici un exemple de sortie que ce programme peut produire :
$ ./
a.out\fI
1
:
lo
2
:
wlan0
3
:
em1\fP
8.1. Source du programme ▲
#include <net/if.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main
(
int
argc, char
*
argv[])
{
struct
if_nameindex *
if_ni, *
i;
if_ni =
if_nameindex
(
);
if
(
if_ni ==
NULL
) {
perror
(
"
if_nameindex
"
);
exit
(
EXIT_FAILURE);
}
for
(
i =
if_ni; !
(
i->
if_index ==
0
&&
i->
if_name ==
NULL
); i++
)
printf
(
"
%u: %s
\n
"
, i->
if_index, i->
if_name);
if_freenameindex
(
if_ni);
exit
(
EXIT_SUCCESS);
}
9. VOIR AUSSI ▲
getsockopt(2), setsockopt(2), getifaddrs(3), if_indextoname(3), if_nametoindex(3), ifconfig(8)
10. COLOPHON ▲
Cette page fait partie de la publication 3.52 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/.
11. 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/>.
Veuillez signaler toute erreur de traduction en écrivant à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».