Шрифт:
Для полученного пакета могут быть возвращены четыре аналогичных характеристики. Они возвращаются в виде вспомогательных данных с функцией
IPv6-адрес получателя;
индекс интерфейса для входящих дейтаграмм;
предельное количество транзитных узлов для входящих дейтаграмм.
класс входящего трафика.
На рис. 22.5 показано содержимое вспомогательных данных, о которых рассказывается далее.
Рис. 22.5. Вспомогательные данные для информации о пакете IPv6
Структура
Эта структура определяется в заголовочном файле
Чтобы отправить эту информацию, никаких специальных действий не требуется — нужно только задать управляющую информацию во вспомогательных данных функции
Исходящий и входящий интерфейсы
Интерфейсы на узле IPv6 идентифицируются небольшими целыми положительными числами, как мы сказали в разделе 18.6. Вспомните, что ни одному интерфейсу не может быть присвоен нулевой индекс. При задании исходящего интерфейса ядро само выберет исходящий интерфейс, если значение
Адрес отправителя и адрес получателя IPv6
IPv6-адрес отправителя обычно определяется при помощи функции
Когда IPv6-адрес отправителя задан в качестве вспомогательных данных и элемент
Когда структура in6_
Задание и получение предельного количества транзитных узлов
Предельное количество транзитных узлов обычно задается параметром сокета
Полученное предельное количество транзитных узлов возвращается в виде вспомогательных данных функцией
Чтобы задать предельное количество транзитных узлов для исходящих пакетов, никаких специальных действий не требуется — нам нужно только указать управляющую информацию в виде вспомогательных данных для функции
Предельное количество транзитных узлов не содержится в структуре in6_pktinfo — некоторые серверы UDP хотят отвечать на запросы клиентов, посылая ответы на том же интерфейсе, на котором был получен запрос, с совпадением IPv6-адреса отправителя ответа и IPv6-адреса получателя запроса. Для этого приложение может включить параметр сокета IPV6_RECVPKTINFO, а затем использовать полученную управляющую информацию из функции recvmsg в качестве управляющей информации для функции sendmsg при отправке ответа. Приложению вообще никак не нужно проверять или изменять структуру in6_pktinfo. Но если в этой структуре содержался бы предел количества транзитных узлов, приложение должно было бы проанализировать полученную управляющую информацию и изменить значение этого предела, поскольку полученный предел не является желательным значением для исходящего пакета.