18.6. Функции имени и индекса интерфейса
18.6. Функции имени и индекса интерфейса
Документ RFC 3493 [36] определяет четыре функции, обрабатывающие имена и индексы интерфейсов. Эти четыре функции используются во многих случаях, когда необходимо описать интерфейс. Они были предложены в процессе разработки API IPv6 (главы 21 и 27), однако индексы интерфейсов имеются и в API IPv4 (например, в вызове IP_RECVIF или AF_LINK для маршрутизирующего сокета). Основной принцип, объявляемый в этом документе, состоит в том, что каждый интерфейс имеет уникальное имя и уникальный положительный индекс (нуль в качестве индекса никогда не используется).
#include <net/if.h>
unsigned int if_nametoindex(const char *ifname);
Возвращает: положительный индекс интерфейса в случае успешного выполнения, 0 в случае ошибки
char *if_indextoname(unsigned int ifindex, char *ifname);
Возвращает: указатель на имя интерфейса в случае успешного выполнения, NULL в случае ошибки
struct if_nameindex *if_nameindex(void);
Возвращает: непустой указатель в случае успешного выполнения, NULL в случае ошибки
void if_freenameindex(struct if_nameindex *Iptr);
Функция if_nametoindex возвращает индекс интерфейса, имеющего имя ifname. Функция if_indextoname возвращает указатель на имя интерфейса, если задан его индекс ifindex. Аргумент ifname указывает на буфер размера IFNAMSIZ (определяемый в заголовочном файле <net/if.h> из листинга 17.1), который вызывающий процесс должен выделить для хранения результата, и этот указатель возвращается в случае успешного выполнения функции if_indextoname.
Функция if_nameindex возвращает указатель на массив структур if_nameindex:
struct if_nameindex {
unsigned int if_index; /* 1, 2. ... */
char *if_name; /* имя, завершаемое нулем: "le0", ... */
};
Последняя запись в этом массиве содержит структуру с нулевым индексом if_index и с пустым указателем ifname. Память для этого массива, а также для имен, на которые указывают элементы массива, выделяется динамически и освобождается при вызове функции if_freenameindex.
Теперь мы представим реализацию этих четырех функций с использованием маршрутизирующих сокетов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пополнение индекса
Пополнение индекса Как говорилось выше, по умолчанию проиндексированными являются только личные папки пользователей. Если попытаться найти файл в неиндексированной папке, появляется всплывающее предложение добавить каталог в список индексируемых. Однако вы можете
22.2. Получение флагов, IP-адреса получателя и индекса интерфейса
22.2. Получение флагов, IP-адреса получателя и индекса интерфейса Исторически функции sendmsg и recvmsg использовались только для передачи дескрипторов через доменные сокеты Unix (см. раздел 15.7), но даже это происходило сравнительно редко. Однако в настоящее время популярность этих
4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА) В ИДЕНТИФИКАТОР ИНДЕКСА
4.4 ПРЕВРАЩЕНИЕ СОСТАВНОГО ИМЕНИ ФАЙЛА (ПУТИ ПОИСКА) В ИДЕНТИФИКАТОР ИНДЕКСА Начальное обращение к файлу производится по его составному имени (имени пути поиска), как в командах open, chdir (изменить каталог) или link. Поскольку внутри системы ядро работает с индексами, а не с
4.6 НАЗНАЧЕНИЕ ИНДЕКСА НОВОМУ ФАЙЛУ
4.6 НАЗНАЧЕНИЕ ИНДЕКСА НОВОМУ ФАЙЛУ Для выделения известного индекса, то есть индекса, для которого предварительно определен собственный номер (и номер файловой системы), ядро использует алгоритм iget. В алгоритме namei, например, ядро определяет номер индекса, устанавливая
Определение имени узла
Определение имени узла При использовании многих протоколов семейства TCP/IP необходимо, чтобы к компьютеру можно было обращаться по имени. Для того чтобы упростить настройку отдельных программ, в Linux содержится специальная утилита hostname, позволяющая определить имя узла.
12.14.3 Дополнение имени
12.14.3 Дополнение имени Имя, которое не заканчивается точкой, дополняется именем домена для зоны, например fishfood.com. Таким образом, в этом файле ns будет соответствовать
Глава 19 Отправка фотографий по электронной почте, публикация в Интернете, создание индекса снимков
Глава 19 Отправка фотографий по электронной почте, публикация в Интернете, создание индекса снимков В этой небольшой главе мы познакомимся с тем, как подготовить фотографию к отправке по электронной почте и к размещению в Интернете. Так как эта книга посвящена прежде
Изменение индекса
Изменение индекса Активация/деактивация Оператор ALTER INDEX используется для переключения состояния индекса из активного в неактивное и наоборот. Он может быть применен для отключения индекса перед добавлением или изменением большого пакета строк и устранения при этом
Изменение структуры индекса
Изменение структуры индекса В отличие от большинства операторов ALTER синтаксис ALTER INDEX не может быть использован для изменения структуры данного объекта. Для этого необходимо удалить индекс и заново его создать с использованием оператора CREATE
Удаление индекса
Удаление индекса Оператор DROP INDEX удаляет созданный пользователем индекс из базы данных.Используйте DROP INDEX также в случае необходимости изменения структуры индекса: добавление, удаление сегментов, изменение порядка сегментов или изменение порядка сортировки. Вначале
Улучшение селективности индекса
Улучшение селективности индекса Вообще говоря, селективность (избирательность) индекса - это оценочное количество строк, которые могут быть выбраны при поиске по каждому значению индекса. Уникальный индекс имеет максимально возможную селективность, потому что он не
Получение индекса компонента в списке родителя
Получение индекса компонента в списке родителя Мне необходимо найти индекс компонента в родительском списке дочерних элементов управления. Я попытался модифицировать prjexp.dll, но без успеха. У кого-нибудь есть идеи?Есть такая функция. Ищет родителя заданного компонента,