Фильтрация по типу сообщений 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 — лишь средство оптимизации условий функционирования приложения.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Фильтрация
Фильтрация Система позволяет фильтровать объекты по одному или нескольким признакам. Для этого щелкните кнопкой мыши на стрелке заголовка интересующего вас столбца и отметьте флажками категории, соответствующие условию отбора. Выполните эту же операцию для другого
7.7. Параметр сокета ICMPv6
7.7. Параметр сокета ICMPv6 Единственный параметр сокета, обрабатываемый ICMPv6, имеет аргумент level, равный
А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет
А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет Протокол ICMP (Internet Control Message Protocol) является необходимой и неотъемлемой частью любой реализации IPv4 или IPv6. Протокол ICMP обычно используется для обмена сообщениями об ошибках между узлами, как маршрутизирующими,
4.10.1. Фильтрация пакетов
4.10.1. Фильтрация пакетов Итак, основной, но не единственной задачей сетевого экрана является фильтрация пакетов. В Linux уже встроен Firewall, и вам его не надо устанавливать отдельно. Точнее сказать, их даже два: iptables и ipchains. Они позволяют контролировать трафик, который проходит
Фильтрация сообщений
Фильтрация сообщений Leafnode позволяет удалять сообщения, соответствующие определенным критериям. Решение об удалении принимается исходя из информации, содержащейся в заголовке сообщения. Предположим, например, что в статьях, получаемых от пользователя obnoxious@annoying.com
Глава 23 ICMPv6 и исследование соседей
Глава 23 ICMPv6 и исследование соседей 23.1 Введение Версия 6 протокола Internet Control Message Protocol (ICMPv6) сохраняет многие функции версии 4, но вводит и несколько важных изменений:? Сообщения ICMPv6 помогают в автоматической конфигурации адресов.? Новые сообщения и процедуры ICMPv6 заменяют
23.2 Базовые сообщения ICMPv6
23.2 Базовые сообщения ICMPv6 В таблице 23.1 перечислены основные типы сообщений ICMPv6. Отметим, что сообщениям об ошибке присвоены номера от 0 до 127, а информационным сообщениям — от 128 до 255. Общий формат сообщения ICMP показан на рис. 23.1. Сначала рассмотрим сообщения ICMP, сходные с
Получение и пересылка сообщений. Создание ответных сообщений
Получение и пересылка сообщений. Создание ответных сообщений Чтобы получить новую почту, выполните команду главного меню Сервис ? Отправить/Получить ? Доставить почту либо нажмите клавишу F9. Все полученные почтовые сообщения будут помещены в папку Входящие и помечены
Фильтрация слоев
Фильтрация слоев Иногда требуется, чтобы в списке имеющихся слоев Диспетчера свойств слоев Layer Properties Manager перечислялись только определенные слои. Для указания выводимых в список слоев используется функция фильтрации. Фильтрация слоев может производиться по следующим
Фильтрация
Фильтрация Множества узлов, которые получаются в результате вычисления выражений, можно фильтровать — то есть выбирать из них узлы, удовлетворяющие заданным свойствам подобно тому, как это делалось предикатами в шагах выборки.В выражениях множества узлов могут также
Фильтрация текста
Фильтрация текста Во второй части дается подробный обзор важнейших инструментов фильтрации текста. Фильтрация может выполняться в разное время: до того как данные поступят на вход сценария, в процессе выполнения сценария и при выводе текста на экран.В отдельных главах
Классификация ТВ-тюнеров по типу принимаемого сигнала
Классификация ТВ-тюнеров по типу принимаемого сигнала Телевизионные тюнеры для компьютеров могут характеризоваться способностью обработки аналогового и цифрового сигналов. Можно встретить тюнеры трех видов: работающие с аналоговым сигналом, работающие с цифровым
5.2.9. Сортировка и Фильтрация
5.2.9. Сортировка и Фильтрация Для сортировки всей таблицы и отдельных строк приложение Numbers предлагает два инструмента:? команды Sort Ascending (Сортировать по возрастанию) и Sort Descending (Сортировать по убыванию), находящиеся в списке заголовка любого столбца;? раздел Sort (Сортировка)
Фильтрация
Фильтрация В режиме фильтрации вы можете выбрать для просмотра только одну или несколько групп файлов, которые отвечают определенным условиям. Для этого щелкните кнопкой мыши на стрелке справа от нужного заголовка и установите флажки возле названий интересующих вас