if_nameindex(3)

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

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <net/if.h>

struct if_nameindex *if_nameindex(void);
void if_freenameindex(struct if_nameindex *ptr);

DESCRIERE
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ă.

VALOAREA RETURNATĂ
Î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.

ERORI-IEȘIRE
if_nameindex() poate eșua și configura errno dacă:

ENOBUFS
    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).

ATRIBUTE
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

STANDARDE
POSIX.1-2008, RFC 3493.

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

EXEMPLE
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

  Sursa programului
    #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);
    }

CONSULTAȚI ȘI
getsockopt(2), setsockopt(2), getifaddrs(3), if_indextoname(3), if_nametoindex(3), ifconfig(8)

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.