您的位置:首页 > 其它

suricata 3.1 源码分析10

2016-09-08 17:21 615 查看
原文链接:http://www.9mblog.com/99.html

/* In Unix socket runmode, Flow manager is started on demand */

if (suri.run_mode != RUNMODE_UNIX_SOCKET) {

/* Spawn the unix socket manager thread */

int unix_socket = 0;

if (ConfGetBool(“unix-command.enabled”, &unix_socket) != 1)

unix_socket = 0;

if (unix_socket == 1) {

UnixManagerThreadSpawn(0);

#ifdef BUILD_UNIX_SOCKET

UnixManagerRegisterCommand(“iface-stat”, LiveDeviceIfaceStat, NULL,

UNIX_CMD_TAKE_ARGS);

UnixManagerRegisterCommand(“iface-list”, LiveDeviceIfaceList, NULL, 0);

#endif

}

若unix-command为enable状态,则创建Unix-socket命令线程,可与suricata客户端使用JSON格式信息进行通信。命令线程的创建是通过TmThreadCreateCmdThread函数,创建的线程类型为TVT_CMD。线程执行函数为UnixManagerThread

/* Spawn the flow manager thread */
FlowManagerThreadSpawn();


创建Flow管理线程,用于对流表进行超时删除处理。管理线程创建是通过TmThreadCreateMgmtThread函数,类型为TVT_MGMT,执行函数为FlowManager。

FlowRecyclerThreadSpawn();


同样是对流超时进行处理,没有仔细研究和上面的区别,执行函数为FlowRecycler。

StatsSpawnThreads();


创建性能计数相关线程,包括一个定期对各计数器进行同步的唤醒线程(StatsWakeupThread),和一个定期输出计数值的管理线程(StatsMgmtThread)。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unix 源码