在程序中与事件相关的几个文件:   event.h,event_queue.h,event_queue.c,event_wrapper.h,event_wrapper.c,和fsutil/sfeventq.h,/fsutil/sfeventq.c
1,event中主要定义了一个事件的数据结构
snort中的事件(Event)机制//事件的数据结构
snort中的事件(Event)机制
typedef struct _Event
 Event;
2,event_queue.h和event_queue.c中定义了
snort中的事件(Event)机制typedef struct s_SNORT_EVENTQ_USER
rule_info);
在event_queue.c中还有三个静态函数
static int OrderPriority(void *event1, void *event2)  //比较event1和event2的优先级(priority成员大小),
    if(event1->priority < event2->priority)     return 1;
static int OrderContentLength(void *event1, void *event2)  //比较event1和event2的规则信息的长度(rule_info的长度),event1大的话就返回1。

static int LogSnortEvents(void *event, void *user)

3,event_wrapper.h,event_wrapper.c中定义两个函数
snort中的事件(Event)机制//调用log.c 中的setEvent和detect.c中的CallLogFuncs设置生成的事件,并返回event.event_id
snort中的事件(Event)机制
u_int32_t GenerateSnortEvent(Packet *p,
snort中的事件(Event)机制                            u_int32_t gen_id,
snort中的事件(Event)机制                            u_int32_t sig_id,
snort中的事件(Event)机制                            u_int32_t sig_rev,
snort中的事件(Event)机制                            u_int32_t classification,
snort中的事件(Event)机制                            u_int32_t priority,
snort中的事件(Event)机制                            
char *msg);
snort中的事件(Event)机制
snort中的事件(Event)机制
//和上个函数差不多,只是多了一个事件参考(event_ref)和时间(ref_sec)的设置,返回0或1
snort中的事件(Event)机制
//如果event_ref和ref_sec都不为空,则返回1
snort中的事件(Event)机制
int LogTagData(Packet *p,
snort中的事件(Event)机制               u_int32_t gen_id,
snort中的事件(Event)机制               u_int32_t sig_id,
snort中的事件(Event)机制               u_int32_t sig_rev,
snort中的事件(Event)机制               u_int32_t classification,
snort中的事件(Event)机制               u_int32_t priority,
snort中的事件(Event)机制               u_int32_t event_ref,
snort中的事件(Event)机制               time_t ref_sec,
snort中的事件(Event)机制               
char *msg);
4,Sfeventq.h和Sfenentq.c文件
sfeventq.h中定义了五个函数

snort中的事件(Event)机制void *sfeventq_event_alloc(void);
//清空sfeventq
snort中的事件(Event)机制
void  sfeventq_reset(void);
//在sfeventq队列里添加一个event
snort中的事件(Event)机制
int   sfeventq_add(void *event);
//根据action_func处理
snort中的事件(Event)机制
int   sfeventq_action(int (*action_func)(void *eventvoid *user), void *user);
//sfeventq的空间分配
snort中的事件(Event)机制
int   sfeventq_init(int max_nodes, int log_nodes, int event_size, 
snort中的事件(Event)机制                    
int (*sort)(void *void *));
snort中的事件(Event)机制


相关文章: