Фильтрация по типу сообщений ICMPv6

Фильтрация по типу сообщений ICMPv6

Символьный сокет ICMPv4 получает большинство сообщений ICMPv4, полученных ядром. Но ICMPv6 является расширением ICMPv4, включающим функциональные возможности ARP и IGMP (см. раздел 2.2). Следовательно, символьный сокет ICMPv6 потенциально может принимать гораздо больше пакетов по сравнению с символьным сокетом ICMPv4. Но большинство приложений, использующих символьные сокеты, заинтересованы только в небольшом подмножестве всех ICMP-сообщений.

Для уменьшения количества пакетов, передаваемых от ядра к приложению через символьный ICMPv6-сокет, предусмотрен фильтр, связанный с приложением. Фильтр объявляется с типом данных struct icmp6_filter, который определяется в заголовочном файле <netinet/icmp6.h>. Для установки и получения текущего ICMPv6-фильтра для символьного сокета ICMPv6 используются функции setsockopt и getsockopt с аргументом level, равным IPPROTO_ICMPV6, и аргументом optname, равным ICMP6_FILTER.

Со структурой icmp6_filter работают шесть макросов.

#include <netinet/icmp6.h>

void ICMP6_FILTER_SETPASSALL(struct icmp6_filter *filt);

void ICMP6_FILTER_SETBLOCKALL(struct icmp6_filter *filt);

void ICMP6_FILTER_SETPASS(int msgtype, struct icmp6_filter *filt);

void ICMP6_FILTER_SETBLOCK(int msgtype, struct icmp6_filter *filt);

int ICMP6_FILTER_WILLPASS(int msgtype, const struct icmp6_filter *filt);

int ICMP6_FILTER_WILLBLOCK(int msgtype, const struct icmp6_filter *filt);

Все возвращают: 1, если фильтр пропускает (блокирует) сообщение данного типа, 0 в противном случае

Аргумент filt всех макрокоманд является указателем на переменную icmp6_filter, изменяемую первыми четырьмя макрокомандами и проверяемую последними двумя. Аргумент msgtype является значением в интервале от 0 до 255, определяющим тип ICMP-сообщения.

Макрокоманда SETPASSALL указывает, что все типы сообщений должны пересылаться приложению, а макрокоманда SETBLOCKALL — что никакие сообщения не должны посылаться приложениям. По умолчанию при создании символьного сокета ICMPv6 подразумевается, что все типы ICMP-сообщений пересылаются приложению.

Макрокоманда SETPASS определяет конкретный тип сообщений, который должен пересылаться приложению, а макрокоманда SETBLOCK блокирует один конкретный тип сообщений. Макрокоманда WILLPASS возвращает значение 1, если определенный тип пропускается фильтром. Макрокоманда WILLBLOCK возвращает значение 1, если определенный тип блокирован фильтром, и нуль в противном случае.

В качестве примера рассмотрим приложение, которое будет получать только ICMPv6-извещения маршрутизатора:

struct icmp6_filter myfilt;

fd = Socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);

ICMP6_FILTER_SETBLOCKALL(&myfilt);

ICMP6_FILTER_SETPASS(ND_ROUTER_ADVERT, &myfilt);

Setsockopt(fd, IPPROTO_ICMPV6, ICMP6_FILTER, &myfilt, sizeof(myfilt));

Сначала мы блокируем все типы сообщений (поскольку по умолчанию все типы сообщений пересылаются), а затем разрешаем пересылать только извещения маршрутизатора. Несмотря на то, что мы используем фильтр, приложение должно быть готово к получению всех типов пакетов ICMPv6, потому что любые пакеты ICMPv6, полученные между вызовами socket и setsockopt, будут добавлены в очередь на сокете. Параметр ICMP6_FILTER — лишь средство оптимизации условий функционирования приложения.

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

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

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

Классификация ТВ-тюнеров по типу принимаемого сигнала

Из книги Компьютер + TV: телевидение на ПК автора Гольцман Виктор Иосифович

Классификация ТВ-тюнеров по типу принимаемого сигнала Телевизионные тюнеры для компьютеров могут характеризоваться способностью обработки аналогового и цифрового сигналов. Можно встретить тюнеры трех видов: работающие с аналоговым сигналом, работающие с цифровым


Фильтрация

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

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


Получение и пересылка сообщений. Создание ответных сообщений

Из книги Office 2007. Мультимедийный курс автора Мединов Олег

Получение и пересылка сообщений. Создание ответных сообщений Чтобы получить новую почту, выполните команду главного меню Сервис ? Отправить/Получить ? Доставить почту либо нажмите клавишу F9. Все полученные почтовые сообщения будут помещены в папку Входящие и помечены


Фильтрация

Из книги Windows Vista автора Вавилов Сергей

Фильтрация Система позволяет фильтровать объекты по одному или нескольким признакам. Для этого щелкните кнопкой мыши на стрелке заголовка интересующего вас столбца и отметьте флажками категории, соответствующие условию отбора. Выполните эту же операцию для другого


Глава 23 ICMPv6 и исследование соседей

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

Глава 23 ICMPv6 и исследование соседей 23.1 Введение Версия 6 протокола Internet Control Message Protocol (ICMPv6) сохраняет многие функции версии 4, но вводит и несколько важных изменений:? Сообщения ICMPv6 помогают в автоматической конфигурации адресов.? Новые сообщения и процедуры ICMPv6 заменяют


23.2 Базовые сообщения ICMPv6

Из книги О чём не пишут в книгах по Delphi автора Григорьев А. Б.

23.2 Базовые сообщения ICMPv6 В таблице 23.1 перечислены основные типы сообщений ICMPv6. Отметим, что сообщениям об ошибке присвоены номера от 0 до 127, а информационным сообщениям — от 128 до 255. Общий формат сообщения ICMP показан на рис. 23.1. Сначала рассмотрим сообщения ICMP, сходные с


Фильтрация сообщений

Из книги Технология XSLT автора Валиков Алексей Николаевич

Фильтрация сообщений Leafnode позволяет удалять сообщения, соответствующие определенным критериям. Решение об удалении принимается исходя из информации, содержащейся в заголовке сообщения. Предположим, например, что в статьях, получаемых от пользователя obnoxious@annoying.com


Фильтрация

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

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


5.2.9. Сортировка и Фильтрация

Из книги AutoCAD 2009. Учебный курс автора Соколова Татьяна Юрьевна

5.2.9. Сортировка и Фильтрация Для сортировки всей таблицы и отдельных строк приложение Numbers предлагает два инструмента:? команды Sort Ascending (Сортировать по возрастанию) и Sort Descending (Сортировать по убыванию), находящиеся в списке заголовка любого столбца;? раздел Sort (Сортировка)


Фильтрация слоев

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

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


4.10.1. Фильтрация пакетов

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

4.10.1. Фильтрация пакетов Итак, основной, но не единственной задачей сетевого экрана является фильтрация пакетов. В Linux уже встроен Firewall, и вам его не надо устанавливать отдельно. Точнее сказать, их даже два: iptables и ipchains. Они позволяют контролировать трафик, который проходит


Локальная фильтрация

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид


Фильтрация текста

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

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


7.7. Параметр сокета ICMPv6

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

7.7. Параметр сокета ICMPv6 Единственный параметр сокета, обрабатываемый ICMPv6, имеет аргумент level, равный


А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет

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

А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет Протокол ICMP (Internet Control Message Protocol) является необходимой и неотъемлемой частью любой реализации IPv4 или IPv6. Протокол ICMP обычно используется для обмена сообщениями об ошибках между узлами, как маршрутизирующими,