if_nameindex, if_freenameindex - Obtenir le nom et l'indice des interfaces
réseau
Bibliothèque C standard (
libc,
-lc)
#include <net/if.h>
struct if_nameindex *if_nameindex(void);
void if_freenameindex(struct if_nameindex *ptr);
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; /* Index of interface (1, 2, ...) */
char *if_name; /* Null-terminated name ("eth0", etc.) */
The
if_index field contains the interface index. The
if_name field
points to the null-terminated interface name. The end of the array is
indicated by entry with
if_index set to zero and
if_name set to
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.
On success,
if_nameindex() returns pointer to the array; on error, NULL
is returned, and
errno is set to indicate the error.
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).
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.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
if_nameindex(), if_freenameindex() |
Sécurité des threads |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, RFC 3493.
Cette fonction est d'abord apparue dans BSDi.
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 1: lo 2: wlan0 3: em1
#include <net/if.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(void)
{
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);
}
getsockopt(2),
setsockopt(2),
getifaddrs(3),
if_indextoname(3),
if_nametoindex(3),
ifconfig(8)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]>,
Cédric Boutillier <
[email protected]> et
Frédéric Hantrais <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]