Написание фильтра PATTERNMATCH
Фильтр сопоставления шаблонов уведомляет драйвер принять кадры с определенным смещением. Можно указать не более четырех подробных совпадений шаблонов, которые можно объединить в логических инструкциях AND или OR для оценки драйвера сетевого монитора.
Чтобы реализовать совпадения шаблонов, используйте следующие структуры сетевого монитора:
Чтобы оценить оператор OR , объединить два до четырех шаблонов соответствует структуре ANDEXP (PatternMatch1 || PatternMatch2 || PatternMatch3). Чтобы оценить оператор AND, объедините одну из четырех структур ANDEXP и структуру EXPRESSION (AndExp1 && AndExp2).
Определения сопоставления шаблонов
Одно сопоставление шаблонов определяется структурой PATTERNMATCH . Отдельный матч может работать одним из двух способов.
Как правило, драйвер будет принимать основу смещения (которые могут быть OFFSET_BASIS_RELATIVE_TO_FRAME, OFFSET_BASIS_RELATIVE_TO_EFFECTIVE_PROTOCOL, OFFSET_BASIS_RELATIVE_TO_IPX или OFFSET_BASIS_RELATIVE_TO_IP) и начать подсчет там. Драйвер будет подсчитывать байты смещения оттуда, а затем сопоставлять данные, которые он находит с первой длиной байтов в PatternToMatch. Если они одинаковы, и флаг PATTERN_MATCH_FLAGS_NOT не задан, этот шаблон передается. Если они отличаются и PATTERN_MATCH_FLAGS_NOT заданы, шаблон передается. В противном случае этот шаблон завершается ошибкой.
Или сделайте так:
Если установлен флаг PATTERN_MATCH_FLAGS_PORT_SPECIFIED, а для основы задано значение OFFSET_BASIS_RELATIVE_TO_IPX или OFFSET_BASIS_RELATIVE_TO_IP, сравнение будет более сложным. Во-первых, драйвер гарантирует наличие протокола смещения, то драйвер проверяет, соответствует ли указанный порт порту в кадре. Наконец, драйвер гарантирует, что член PatternToMatch соответствует ранее, за исключением того, что смещение находится в конце IP-адреса или IPX. Обратите внимание, что если основу не является одной из этих двух, то флаг PATTERN_MATCH_FLAGS_PORT_SPECIFIED будет игнорироваться, и шаблон будет оцениваться как описано выше.
Чтобы оценить совпадение с одним шаблоном, структура EXPRESSION должна иметь один элемент AndExp, содержащий одно сопоставление шаблонов.
Создание фильтра сопоставления шаблонов включает создание структур PATTERNMATCH и логически объединение их со структурами EXPRESSION и ANDEXP.
Запись фильтра PATTERNMATCH
- В структуре ANDEXP заполните массив совпадениями шаблонов.
- Заполните структуру EXPRESSION массивом элементов AndExp .
- Не превышать четыре совпадения шаблона для фильтра записи.
- В структуре PATTERNMATCH выберите тип флага.
- Выберите основу смещения.
- Перечисление значения порта.
- Определите значение смещения.
- Определите длину шаблона.
- Перечислите значение шаблона.
Примеры PATTERNMATCH
Этот кадр представляет стандартное смещение.
Фрагмент кода реализуется следующим образом:
Basis -> IP
Offset -> 4 (bytes)
Length -> 2 (bytes)
PatternToMatch[ ] = {x00, x00}
Этот кадр изображает указанное портом смещение (по IPX).
Пример кода реализуется следующим образом:
Port -> 544
Basis -> IPX
Offset -> 2 (bytes)
Length -> 2 (bytes)
PatternToMatch[ ] = {x00, x00}