1概述
官方的说明书有点老旧,针对最新的框架,创建一个测试的协议监控,作为一个设计模板demo。
2 实现
2.1 定义协议名称
每一个协议都必须在src/include/ndpi_protocol_ids.h头文件中定义一个对应的协议名称,如:
NDPI_PROTOCOL_ELASTICSEARCH = 330,
NDPI_PROTOCOL_MYTEST = 331, //new
331是这个协议的ID,且必须是独一无二的。
2.2 添加协议源文件
a 确定协议名称ID后,需要在src/lib/protocols/下创建一个新的协议源文件,如my_test_protocol.c。
文件开头添加头文件,如下图:
#include "ndpi_protocol_ids.h"
#define NDPI_CURRENT_PROTO NDPI_PROTOCOL_MYTEST
#include "ndpi_api.h"
中间的宏定义可以不用。
在里面需要定义一个入口函数,如:
void ndpi_search_my_test_protocol(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow)
{
struct ndpi_packet_struct *packet = &ndpi_struct->packet;
NDPI_LOG_DBG(ndpi_struct, "search my test protocol...\n");
if (ndpi_check_my_test_protocol(ndpi_struct