1. NOM▲

if_nameindex, if_freenameindex - Obtenir le nom et l'indice des interfaces réseau

2. SYNOPSIS ▲

 
Sélectionnez
#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 :

 
Sélectionnez
   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 :

 
Sélectionnez
$ ./a.out\fI
1: lo
2: wlan0
3: em1\fP

8.1. Source du programme ▲

 
Sélectionnez
#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 ▲

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