原文链接: http://www.9mblog.com/93.html
CSetStartTime(&suri);
设置记录开始时间
SCDropMainThreadCaps(suri.userid, suri.groupid);
去除主线程的权限。这个是通过libcap-ng实现的,首先调用capng_clear清空所有权限,然后根据运行模式添加一些必要权限(主要是为了抓包),最后调用capng_change_id设置新的uid和gid。主线程的权限应该会被新建的子线程继承,因此只需要在主线程设置即可。
if (suri.run_mode != RUNMODE_UNIX_SOCKET) {
RunModeInitializeOutputs();
初始化所有Output模块。这些模块之前在线程模块注册函数里已经都注册了,这里会根据配置文件再进行配置和初始化,最后把当前配置下启用了的output模块放到RunModeOutputs链表中。目前我了解到的全部的log都是在这里初始化的,包括自己扩展的log模块也在这里。
StatsSetupPostConfig();
根据配置初始化stats的各项内容,stats主要用于统计收发包的数量,从2~4层全部都有。自己添加的统计也在这里面。
}
if (suri.run_mode == RUNMODE_CONF_TEST){
SCLogNotice("Configuration provided was successfully loaded. Exiting.");
MagicDeinit();
初始化Magic模块。Magic模块只是对libmagic库进行了一层封装,通过文件中的magic字段来检测文件的类型(如”PDF-1.3“对应PDF文件)。
exit(EXIT_SUCCESS);
}