17.5. Конфигурация интерфейса

17.5. Конфигурация интерфейса

Один из шагов, выполняемых многими программами, работающими с сетевыми интерфейсами системы, — это получение от ядра списка всех интерфейсов, сконфигурированных в системе. Это делается с помощью вызова SIOCGIFCONF, использующего структуру ifconf, которая, в свою очередь, использует структуру ifreq. Обе эти структуры показаны в листинге 17.1[1].

Листинг 17.1. Структуры ifconf и ifreq, используемые в различных вызовах функции ioctl, относящихся к интерфейсам

//<net/if.h> struct ifconf {

 int ifc_len; /* размер буфера, "значение-результат" */

 union {

  caddr_t      ifcu_buf;  /* ввод от пользователя к ядру */

  struct ifreq *ifcu_req; /* ядро возвращает пользователю */

 } ifc_ifcu;

};

#define ifc_buf ifc_ifcu.ifcu_buf /* адрес буфера */

#define ifc_req ifc_ifcu.ifcu_req /* массив возвращенных структур */

#define IFNAMSIZ 16

struct ifreq {

 char ifr_name[IFNAMSIZ]; /* имя интерфейса, например "le0" */

 union {

  struct sockaddr ifru_addr;

  struct sockaddr ifru_dstaddr;

  struct sockaddr ifru_broadaddr;

  short           ifru_flags;

  int             ifru_metric;

  caddr_t         ifru_data;

 } ifr_ifru;

};

#define ifr_addr ifr_ifru.ifru_addr       /* адрес */

#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* другой конец линии передачи, называемой

                                             "точка-точка" */

#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* широковещательный адрес */

#define ifr_flags ifr_ifru.ifru_flags     /* флаги */

#define ifr_metric ifr_ifru.ifru_metric   /* метрика */

#define ifr_data ifr_ifru.ifru_data       /* с использованием интерфейсом */

Прежде чем вызвать функцию ioctl, мы выделяем в памяти место для буфера и для структуры ifconf, а затем инициализируем эту структуру. Мы показываем это на рис. 17.1, предполагая, что наш буфер имеет размер 1024 байта. Третий аргумент функции ioctl — это указатель на нашу структуру ifconf.

Рис. 17.1. Инициализация структуры ifconf перед вызовом SIOCGIFCONF

Если мы предположим, что ядро возвращает две структуры ifreq, то при завершении функции ioctl мы можем получить ситуацию, представленную на рис. 17.2. Затененные области были изменены функцией ioctl. Буфер заполняется двумя структурами, и элемент ifc_len структуры ifconf обновляется, с тем чтобы соответствовать количеству информации, хранимой в буфере. Предполагается, что на этом рисунке каждая структура ifreq занимает 32 байта.

Рис. 17.2. Значения, возвращаемые в результате вызова SIOCGIFCONF

Указатель на структуру ifreq также используется в качестве аргумента оставшихся функций ioctl интерфейса, показанных в табл. 17.1, которые мы описываем в разделе 17.7. Отметим, что каждая структура ifreq содержит объединение (union), а директивы компилятора #define позволяют непосредственно обращаться к полям объединения по их именам. Помните о том, что в некоторых системах в объединение ifr_ifru добавлено много зависящих от реализации элементов.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Конфигурация

Из книги Сборка Qt с использованием MinGW32 автора Литкевич Юрий

Конфигурация Теперь нужно провести конфигурацию, т.е. создать файлы проекта *.pro и мэйкфайлы для конкретного компилятора.Как я говорил в предисловии, пользоваться будем bat-файлом. В каталоге <QTDIR> создайте bat-файл для запуска командной строки в нужном нам окружении.


Конфигурация

Из книги Запись CD и DVD: профессиональный подход автора Бахур Виктор


10.1.1 Конфигурация системы

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

10.1.1 Конфигурация системы Задание конфигурации системы это процедура указания администраторами значений параметров, с помощью которых производится настройка системы. Некоторые из параметров указывают размеры таблиц ядра, таких как таблица процессов, таблица индексов


7.2.1. Конфигурация

Из книги Iptables Tutorial 1.1.19 автора Andreasson Oskar

7.2.1. Конфигурация Первая часть файла rc.firewall.txt является конфигурационным разделом. Здесь задаются основные настройки брандмауэра, которые зависят от вашей конфигурации сети. Например IP адреса – наверняка должны быть изменены на ваши собственные. Переменная $INET_IP должна


Программная конфигурация

Из книги Sound Forge 9 автора Квинт Игорь

Программная конфигурация Для полноценной работы программы Sound Forge 9.0 желательно иметь следующую программную конфигурацию.• Операционная система Microsoft Windows 2000 SP4, XP или Windows Vista. Версия Sound Forge, рассматриваемая в этой книге, официально сертифицирована на совместимость с


Конфигурация диалплана

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Конфигурация диалплана Приведенный ниже простейший диалплан использует приложение Echo() для проверки работы двунаправленной связи в канале:[incoming]; входящие вызовы, поступающие через порт FXO,;направляются в этот контекст из zapata.conf exten => s,1,Answer()exten => s,n,Echo()Приложение Echo()


Мостовая конфигурация (конфигурация hub-and-spoke)

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

Мостовая конфигурация (конфигурация hub-and-spoke) В мостовой конфигурации каждый головной УЦ устанавливает отношения кросс-сертификации с единственным центральным УЦ, в чьи функции входит обеспечение таких взаимных связей [101]. Центральный УЦ иногда называют "втулкой" (hub),


Конфигурация ядра

Из книги Сетевые средства Linux автора Смит Родерик В.

Конфигурация ядра Для того чтобы установить опции, определяющие процесс компиляции ядра, необходимо иметь в наличии исходный код ядра. Исходный код входит в состав всех дистрибутивных пакетов, но при установке системы можно либо разрешить, либо запретить копирование


Глава 2 Конфигурация

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Глава 2 Конфигурация Программа rundll32.exe применяется не только для вызова многообразных диалоговых окон Windows. С ее помощью можно выполнить конфигурирование различных настроек операционной системы Windows — от переустановки всевозможных компонентов Windows до восстановления


Конфигурация Windows

Из книги автора

Конфигурация Windows Первым рассмотренным вопросом будет возможность удаления либо повторной регистрации тех или иных частей операционной системы. Это может быть полезно не только при ограничении доступа к различным компонентам, но и для восстановления поврежденных


Конфигурация компонентов

Из книги автора

Конфигурация компонентов Сначала будут описаны вопросы работы с некоторыми компонентами системы с помощью команд rundll32.exe. Не будем углубляться в функционирование данных компонентов, ведь книга, которую вы держите в руках, написана совершенно не для этого. Вместо этого


Конфигурация

Из книги автора

Конфигурация И наконец-то команды rundll32.exe для настройки конфигурации Internet Explorer. Этих команд не очень много, но они могут быть полезны в некоторых случаях. Например, если вы изменили настройки брэндов Internet Explorer (логотип в правом верхнем углу браузера, высота и фон панели


Конфигурация

Из книги автора

Конфигурация Теперь поговорим о конфигурации программы Outlook Express. В данном случае речь пойдет о различных компонентах почтового клиента, которые можно удалить либо воссоздать с помощью команд rundll32.exe. Бывают ситуации, когда после неправильно установленной программы или


Конфигурация

Из книги автора

Конфигурация Теперь рассмотрим несколько параметров строкового типа, предназначенных для настройки конфигурации Проводника.? MenuShowDelay — определяет задержку перед отображением меню, которую оболочка будет ожидать. Он расположен в ветви реестра HKEY_CURRENT_USERControl PanelDesktop. По


Конфигурация

Из книги автора

Конфигурация Теперь несколько слов будет сказано о параметрах браузера Internet Explorer, которые изменяют настройки конфигурации браузера или способ его подключения к Интернету. Например, к ним можно отнести параметр строкового типа Download Directory. Он находится в ветви реестра


Конфигурация

Из книги автора

Конфигурация Теперь несколько слов скажем о конфигурации Outlook Express. В этом разделе будет рассмотрен способ хранения паролей для удостоверений почтового клиента, а также способ использования этих паролей при запуске почтового клиента Outlook