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