suricata 3.1 源码分析10
2016-09-08 17:21
661 查看
原文链接: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
创建Flow管理线程,用于对流表进行超时删除处理。管理线程创建是通过TmThreadCreateMgmtThread函数,类型为TVT_MGMT,执行函数为FlowManager。
同样是对流超时进行处理,没有仔细研究和上面的区别,执行函数为FlowRecycler。
创建性能计数相关线程,包括一个定期对各计数器进行同步的唤醒线程(StatsWakeupThread),和一个定期输出计数值的管理线程(StatsMgmtThread)。
/* 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)。
}
相关文章推荐
- suricata 3.1 源码分析4
- suricata 3.1 源码分析1
- suricata 3.1 源码分析9
- suricata 3.1 源码分析23 (数据包解码模块注册及初始化)
- suricata 3.1 源码分析31 (RespondReject)
- suricata 3.1 源码分析22 (数据包处理2)
- suricata 3.1 源码分析28 (数据包TCP解码)
- suricata 3.1 源码分析18 (模块注册及初始化)
- suricata 3.1 源码分析24 (数据包解码模块执行)
- suricata 3.1 源码分析7
- suricata 3.1 源码分析16 (流管理1)
- suricata 3.1 源码分析12
- suricata 3.1 源码分析25 (数据包以太层解码)
- suricata 3.1 源码分析2
- suricata 3.1 源码分析8
- suricata 3.1 源码分析14 (流查找分配)
- suricata 3.1 源码分析15 (流更新)
- suricata 3.1 源码分析29 (数据包队列)
- suricata 3.1 源码分析27 (数据包IPv4解码)
- suricata 3.1 源码分析5