Как установить приоритет нового препроцессора, написанного для трафика уровня 2 c в SNORT2? - PullRequest
0 голосов
/ 20 июня 2020

Я написал декодер для уровня 2 и написал поверх него препроцессор для генерации некоторых необходимых предупреждений в SNORT2. Он работает отлично, как и ожидалось, но выдает следующее сообщение об ошибке утверждения в потоке TCP / UDP (препроцессор stream6) traffic c:

snort: snort_stream_tcp. c: 3407: StreamUpdatePerfBaseState: Assertion `sf_base -> iSessionsInitializing 'не удалось. Прервано (ядро выгружено)

Это не должно вызывать эту ошибку, поскольку я не нарушаю никакой другой исходный код выше уровня 3, но добавляю новые функции на уровне 2. Насколько я понимаю, это из-за приоритета мы устанавливаем для разных препроцессоров через следующую функцию (в данном случае функция arp) в препроцессорах:

AddFuncToPreprocList (s c, DetectARPattacks, PRIORITY_NETWORK, PP_ARPSPOOF, PROTO_BIT__ARP); * 1011 1012 * Я установил тот же приоритет (PRIORITY_NETWORK) и для своего препроцессора, но когда я проигрываю TCP / UDP трафик c, это дает мне ошибку утверждения stream6, указанную выше. Когда я меняю приоритет, он дает другой результат, поэтому мой вопрос: каким должен быть приоритет новых препроцессоров, работающих над недавно написанным декодером для протокола уровня 2? Или есть какая-то другая причина для такого сообщения об ошибке подтверждения?

...