12.4. Макроопределения проверки адреса IPv6

12.4. Макроопределения проверки адреса IPv6

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

#include <netinet/in.h>

int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *aptr);

int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *aptr);

int IN6_IS_ADDR_MULTICAST(const struct in6_addr *aptr);

int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *aptr);

int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *aptr);

int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *aptr);

int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *aptr);

int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *aptr);

int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *aptr);

int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *aptr);

int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *aptr);

int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *aptr);

Все возвращают: ненулевое значение, если адрес IPv6 имеет указанный тип, 0 в противном случае

Первые семь макросов проверяют базовый тип адреса IPv6. Мы покажем различные типы адресов в разделе А.5. Последние пять макросов проверяют область действия адреса многоадресной передачи IPv6 (см. раздел 19.2).

Клиент IPv6 может вызвать макрос IN6_IS_ADDR_V4MAPPED для проверки адреса IPv6, возвращенного распознавателем. Сервер IPv6 может вызвать этот макрос для проверки адреса IPv6, возвращенного функцией accept или recvfrom.

Как пример приложения, которому нужен этот макрос, можно привести FTP и его команду PORT. Если мы запустим FTP-клиент, зарегистрируемся на FTP-сервере и выполним команду FTP dir, FTP-клиент пошлет команду PORT FTP-серверу через управляющее соединение. Она сообщит серверу IP-адрес и порт клиента, с которым затем сервер создаст соединение. (В главе 27 [111] содержатся подробные сведения о протоколе приложения FTP.) Но FTP-клиент IPv6 должен знать, с каким сервером имеет дело — IPv4 или IPv6, поскольку сервер IPv4 требует команду в формате PORT a1, a2, a3, a4, p1, p2 (где первые четыре числа, каждое от 0 до 255, формируют 4-байтовый адрес IPv4, а два последних — 2-байтовый номер порта), а серверу IPv6 необходима команда EPRT (RFC 2428 [3]), содержащая семейство адреса, адрес в текстовом формате и порт в текстовом формате. В упражнении 12.1 приводятся примеры использования обеих команд.

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

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

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

3.3.1 Проверки

Из книги C++ автора Хилл Мюррей

3.3.1 Проверки Проверка значения может осуществляться или оператором if, или оператором switch:if ( выражение ) оператор if ( выражение ) оператор else оператор switch ( выражение ) операторВ С++ нет отдельного булевского типа. Операции сравнения== != « „= “ »=возвращают целое 1, если


Непрерывность проверки кода

Из книги Парное программирование: преимущества и недостатки автора Коуберн Алистэр

Непрерывность проверки кода Уже двадцать лет тому назад было установлено, что визуальная проверка кода - это эффективный, с точки зрения стоимости, метод исправления дефектов в программных продуктах. Это подтверждают и эмпирическими исследованиями, однако несмотря на


17.5.4. Проверки

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

17.5.4. Проверки Документация, поставляемая вместе с ядром, советует после завершения конфигурации выполнить два действия: 1. Заглянуть в файл Makefile, чтобы вручную поправить некоторые значения. 2. Дать команду make dep для установки зависимостей.Конечно, для ручной правки файла


Утилиты для проверки почты

Из книги 200 лучших программ для Linux автора Яремчук Сергей Акимович

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


Настройки проверки орфографии

Из книги Adobe InDesign CS3 автора Завгородний Владимир

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


22.4 Адреса IPv6

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

22.4 Адреса IPv6 Адреса IPv6 имеют длину 16 октетов (128 бит). Для записи адресов используется компактная (хотя и уродливая) нотация. Адреса представлены как 8 шестнадцатеричных чисел, разделенных двоеточиями. Каждое шестнадцатеричное число представляет 16 бит.


22.8.3 Адреса интерфейсов IPv6

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

22.8.3 Адреса интерфейсов IPv6 Каждый интерфейс версии 6 имеет список соответствующих ему адресов. Как минимум, список содержит уникальный адрес локальной связи (link local address), имеющий формат: 1111111010 (10 бит) 00…00 Уникальный адрес технологии связи Каждому узлу необходим способ


Именованные константы и макроопределения

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

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


Выполнение проверки

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

Выполнение проверки В первую очередь используются переключатели -v[alidate] и -f[ull] утилиты gfix для проверки структур записей и страниц. Процесс проверки сообщает о разрушенных структурах и освобождает неназначенные фрагменты записей или "осиротевших страниц" (т. е. страниц,


7.2. Операции проверки файлов

Из книги Linux программирование в примерах автора Роббинс Арнольд

7.2. Операции проверки файлов Возвращает true если...-eфайл существует-fобычный файл (не каталог и не файл устройства)-sненулевой размер файла-dфайл является каталогом-bфайл является блочным устройством (floppy, cdrom и т.п.)-cфайл является символьным устройством (клавиатура, модем,


Лаборатория проверки оборудования

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Лаборатория проверки оборудования В лаборатории собрано много нетбуков и других устройств, на которых можно регулировать сетевые настройки (для проводного и беспроводного соединений), управлять питанием и т.д. Это инфраструктура для тестирования отдельных сервисов


Структура адреса сокета IPv6

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

Структура адреса сокета IPv6 Структура адреса сокета IPv6 задается при помощи включения заголовочного файла <netinet/in.h>, как показано в листинге 3.3.Листинг 3.3. Структура адреса сокета IPv6: sockaddr_in6struct in6_addr { uint8_t s6_addr[16]; /* 128-разрядный адрес IPv6 */                      /* сетевой


Адреса многоадресной передачи IPv6

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

Адреса многоадресной передачи IPv6 Старший байт адреса многоадресной передачи IPv6 имеет значение ff. На рис. 21.1 показано сопоставление 16-байтового адреса многоадресной передачи IPv6 6-байтовому адресу Ethernet. Младшие 32 бита группового адреса копируются в младшие 32 бита адреса


Адреса IPv4, преобразованные к виду IPv6

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

Адреса IPv4, преобразованные к виду IPv6 Адреса IPv4, преобразованные к виду IPv6 (IPv4-mapped IPv6 addresses), позволяют приложениям, запущенным на узлах, поддерживающих как IPv4, так и IPv6, связываться с узлами, поддерживающими только IPv4, в процессе перехода сети Интернет на версию протокола IPv6.


Адреса IPv6, совместимые с IPv4

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

Адреса IPv6, совместимые с IPv4 Для перехода от версии IPv4 к IPv6 планировалось также использовать адреса IPv6, совместимые с IPv4 (IPv4-compatible IPv6 addresses). Администратор узла, поддерживающего как IPv4, так и IPv6, и не имеющего соседнего IPv6-маршрутизатора, должен создать DNS запись типа AAAA,