Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       if_nameindex, if_freenameindex - получает имена сетевых интерфейсов и индексы

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <net/if.h>

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

ОПИСАНИЕ

       Функция if_nameindex()  возвращает массив структур if_nameindex, каждая из которых содержит информацию об
       одном из сетевых интерфейсов системы. Структура if_nameindex содержит по крайней мере следующие данные:

           unsigned int if_index; /* индекс интерфейса (1, 2, …) */
           char        *if_name;  /* имя с Null в конце («eth0», и т. д.) */

       В  поле  if_index  содержится  индекс  интерфейса.  Значение  поля  if_name  указывает  на имя интерфейса
       (завершается null). Конец массива определяется по записи if_index с нулевым значением и по записи if_name
       со значением NULL.

       Память под структуру данных, возвращаемая if_nameindex(), выделяется динамически и должна освобождаться с
       помощью if_freenameindex(), когда больше не нужна.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On success, if_nameindex()  returns pointer to the array; on error, NULL is returned, and errno is set to
       indicate the error.

ОШИБКИ

       Функция if_nameindex() может завершиться с ошибкой и изменить errno если:

       ENOBUFS
              Недостаточно ресурсов.

       Также функция if_nameindex() может завершиться с ошибками, перечисленными в socket(2), bind(2), ioctl(2),
       getsockname(2), recvmsg(2), sendto(2) или malloc(3).

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ if_nameindex(), if_freenameindex()                                  │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2008, RFC 3493.

ИСТОРИЯ

       glibc 2.1.  POSIX.1-2001.  BSDi.

       Before glibc 2.3.4, the implementation  supported  only  interfaces  with  IPv4  addresses.   Support  of
       interfaces that don't have IPv4 addresses is available only on kernels that support netlink.

ПРИМЕРЫ

       В  программе, показанной далее, демонстрируется использование функции, описанной на этой странице. Пример
       вывода этой программы может быть следующим:

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

ПЕРЕВОД

       Русский перевод этой страницы  руководства  разработал(и)  Azamat  Hackimov  <azamat.hackimov@gmail.com>,
       Dmitriy  S. Seregin <dseregin@59.ru>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и
       Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                  15 июня 2024 г.                                 if_nameindex(3)