if_nameindex(3) Library Functions Manual if_nameindex(3)

if_nameindex, if_freenameindex - obțin numele și indicii interfețelor de rețea

Biblioteca C standard (libc, -lc)

#include <net/if.h>
struct if_nameindex *if_nameindex(void);
void if_freenameindex(struct if_nameindex *ptr);

Funcția if_nameindex() returnează o matrice de structuri if_nameindex, fiecare conținând informații despre una dintre interfețele de rețea de pe sistemul local. Structura if_nameindex conține cel puțin următoarele intrări:


unsigned int if_index; /* Indicele interfeței (1, 2, ...) */
char        *if_name;  /* Nume cu terminație nulă („eth0”, etc.) */

Câmpul if_index conține indexul interfeței. Câmpul if_name indică numele interfeței cu terminație nulă. Sfârșitul matricei este indicat de intrarea cu if_index fixat la zero și if_name fixat la NULL.

Structura de date returnată de if_nameindex() este alocată dinamic și trebuie eliberată folosind if_freenameindex() atunci când nu mai este necesară.

În caz de succes, if_nameindex() returnează indicatorul la matrice; în caz de eroare, se returnează NULL, iar errno este configurată pentru a indica eroarea.

if_nameindex() poate eșua și configura errno dacă:

Resurse disponibile insuficiente.

if_nameindex() poate eșua, de asemenea, pentru oricare dintre erorile specificate pentru socket(2), bind(2), ioctl(2), getsockname(2), recvmsg(2), sendto(2), sau malloc(3).

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
if_nameindex(), if_freenameindex() Siguranța firelor MT-Safe

POSIX.1-2008, RFC 3493.

glibc 2.1. POSIX.1-2001. BSDi.

Înainte de glibc 2.3.4, implementarea suporta doar interfețe cu adrese IPv4. Suportul interfețelor care nu au adrese IPv4 este disponibil numai pe nucleele care suportă netlink.

Programul de mai jos demonstrează utilizarea funcțiilor descrise pe această pagină. Un exemplu de rezultat pe care acest program îl poate produce este următorul:


$ ./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)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

31 octombrie 2023 Pagini de manual de Linux 6.06