17.7. Операции с интерфейсами

17.7. Операции с интерфейсами

Как мы показали в предыдущем разделе, запрос SIOCGIFCONF возвращает имя и структуру адреса сокета для каждого сконфигурированного интерфейса. Существует множество других вызовов, позволяющих установить или получить все остальные характеристики интерфейса. Версия get этих вызовов (SIOCGxxx) часто запускается программой netstat, а версия set (SIOCSxxx) — программой ifconfig. Любой пользователь может получить информацию об интерфейсе, в то время как установка этой информации требует прав привилегированного пользователя.

Эти вызовы получают или возвращают структуру ifreq, адрес которой задается в качестве третьего аргумента функции ioctl. Интерфейс всегда идентифицируется по имени: le0, lo0, ppp0, — то есть по имени, заданному в элементе ifr_name структуры ifreq.

Многие из этих запросов используют структуру адреса сокета, для того чтобы задать или возвратить IP-адрес или маску адреса. Для IPv4 адрес или маска содержится в элементе sin_addr из структуры адреса сокета Интернета. Для IPv6 они помещаются в элемент sin6_addr структуры адреса сокета IPv6.

SIOCGIFADDR. Возвращает адрес направленной передачи в элементе ifr_addr.

SIOCSIFADDR. Устанавливает адрес интерфейса из элемента ifr_addr. Также вызывается функция инициализации для интерфейса.

SIOCGIFFLAGS. Возвращает флаги интерфейса в элементе ifr_flags. Имена различных флагов определяются в виде IFF_xxx в заголовочном файле <net/if.h>. Флаги указывают, например, включен ли интерфейс (IFF_UP), является ли он интерфейсом типа «точка-точка» (IFF_POINTOPOINT), поддерживает ли широковещательную передачу (IFF_BROADCAST) и т.д.

SIOCSIFFLAGS. Устанавливает флаги из элемента ifr_flags.

SIOCGIFDSTADDR. Возвращает адрес типа «точка-точка» в элементе ifr_dstaddr.

SIOCSIFDSTADDR. Устанавливает адрес типа «точка-точка» из элемента ifr_dstaddr.

SIOCGIFBRDADDR. Возвращает широковещательный адрес в элементе ifr_broadaddr. Приложение сначала должно получить флаги интерфейса, а затем сделать корректный вызов: SIOCGIFBRDADDR для широковещательного интерфейса или SIOCGIFDSTADDR — для интерфейса типа «точка-точка».

SIOCSIFBRDADDR. Устанавливает широковещательный адрес из элемента ifr_broadaddr.

SIOCGIFNETMASK. Возвращает маску подсети в элементе ifr_addr.

SIOCSIFNETMASK. Устанавливает маску подсети из элемента ifr_addr.

SIOCGIFMETRIC. Возвращает метрику интерфейса в элементе ifr_metric. Метрика поддерживается ядром для каждого интерфейса, но используется демоном маршрутизации routed. Метрика интерфейса добавляется к счетчику количества переходов.

SIOCSIFMETRIC. Устанавливает метрику интерфейса из элемента ifr_metric.

В этом разделе мы описали наиболее типичные операции интерфейсов. Во многих реализациях появились дополнительные операции.

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

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

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

Операции

Из книги Модель зрелости процессов разработки программного обеспечения автора Паулк Марк

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


Операции += и -=

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Операции += и -= Если вы изучаете C#, уже имея опыт использования C++, то можете обратить внимание на отсутствие возможности перегрузки операторных сокращений, включающих операцию присваивания (+=, -= и т.д.). Не волнуйтесь, в C# операторные сокращения с присваиванием


1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами Как однажды заметил Браян Керниган, "управление сложностью является сущностью компьютерного программирования" [41]. Отладка занимает большую часть времени разработки, и выпуск


Код операции MI

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Код операции MI В таблице 4.14 показано назначение битов кода операции MI. Бит 3 задает вычислительный или невычислительный формат команды. Во втором случае функция, которая должна быть выполнена, закодирована в битах 5-15 кода операции. Функция, выполняемая вычислительной


1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

1.6.1. Правило модульности: следует писать простые части, связанные ясными интерфейсами Как однажды заметил Браян Керниган, "управление сложностью является сущностью компьютерного программирования" [41]. Отладка занимает большую часть времени разработки, и выпуск


16.1. Операции tty

Из книги Язык Си - руководство для начинающих автора Прата Стивен

16.1. Операции tty Устройства tty предоставляют огромное количество опций обработки данных; они относятся к наиболее сложным устройствам ядра. Настраивать можно опции обработки входных и выходных данных, а также потока данных. Также можно контролировать ограниченное


Операции

Из книги C++ для начинающих автора Липпман Стенли


Операции

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Операции Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).Существенным свойством любой операции является ее


IV. Логические операции

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

IV. Логические операции Обычно логические операции "считают" условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа. && Логическое И: результат операции имеет значение "истина",


V. Операции над указателями

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

V. Операции над указателями & Операция получения адреса: выдаст адрес переменной, имя которой стоит за обозначением операции: &nurse является адресом переменной nurse * Косвенная адресация: выдает значение, записанное по адресу, на который ссылается указатель: nurse = 22;ptr =


Операции

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

Операции В языке Си предусматриваются поразрядные логические операции и операции сдвига. Далее мы будем записывать значения в двоичном коде, чтобы вы могли видеть, как выполняются операции. В реальных программах используются целые переменные или константы, записанные в


Операции

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

Операции Теперь рассмотрим, что можно и нельзя делать с величинами типа enum. Вы можете присвоить константу типа enum переменной того же типа enum feline pet;pet = tiger;Нельзя использовать другие операции присваивания: pet += cat; /* недопустимо */Можно провести сравнение с целью выявления


4.3. Операции сравнения и логические операции

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

4.3. Операции сравнения и логические операции Символ операции Значение Использование ! Логическое НЕ !expr меньше exprexpr = Меньше либо равно expr=expr больше exprexpr = больше либо равно expr=expr == равно expr==expr != не равно expr!=expr логическое


Операции is и as

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

Операции is и as Операция is предназначена для проверки того, имеет ли классовая переменная указанный динамический тип. Операция as позволяет безопасно преобразовать переменную одного классового типа к другому классовому типу (в отличие от явного приведения классового