Man page - if_nameindex(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

if_nameindex

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕРЫ
Исходный код программы
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

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

Image grohtml-618456-1.png

СТАНДАРТЫ

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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