Suricata6一级函数

本文主要描述了int SuricataMain(int argc, char **argv)中的主要函数及其作用,来自文件suricata.c。

SCInstanceInit(&suricata, argv[0])

suricata实例初始化,其中结构体变量用来容纳配置文件的参数和命令行参数。

InitGlobal()

  • 初始化suricata_context的函数指针,其中rs_init(&suricata_context)调用了rust函数rs_intit,本人对rust没有研究,TODO。
  • SCLogInitLogModule(NULL),初始化日志模块,常用的日志有4个,分别是suricata.log, eve.json, fast.log, stats.log; 其他的日志输出如果有需要的话可以在suricata.yaml 配置文件中修改将enable:no 改为yes 即可。
  • ParseSizeInit() 与正则表达式有关的设置。
  • RunModeRegisterRunModes() 注册runmode函数,常用的有IDS模式(Intrusion detection system),IPS(intrusion protection system)模式,FilePcap(本地pcap包检测)模式等。

ParseCommandLine(argc, argv, &suricata)

用于解析命令行参数。

FinalizeRunMode(&suricata, argv)

确定运行模式。

StartInternalRunMode(&suricata, argc, argv)

开始运行内部模式,支持列出app-layer,版本,dump配置,keyword等进行查看。

GlobalsInitPreConfig()

Initializations for global vars, queues, etc (memsets, mutex init…)。

LoadYamlConfig(&suricata)

加载yaml配置

LogVersion,UtilCpuPrintSummary

打印出一些系统信息和日志信息。

ParseInterfacesList

解析网络接口列表,有pcap_deve, pfring, afp_dev, af_packet等。

PostConfLoadedSetup(&suricata)

解析配置文件后加载设置,会包含大部分运行代码。

  • MpmTableSetup,SpmTableSetup, 跟pattern match有关的函数设置;
  • AppLayerSetup(), 设置应用层函数,包括proto detect, proto parse, register proto, set up counters等功能;
  • SigTableSetup(), load the rule keywords;
  • RegisterAllModules(), 注册所有功能模块,这个函数非常重要;

CoredumpEnable()

设置coredump,可以在yaml文件中设置coredump的size,如果size为0,那么coredump就不生效。

RunModeDispatch

生成两个线程:FlowManager和FlowRecycle。

TmThreadContinueThreads()

让线程继续工作

SuricataMainLoop(&suricata)

循环检测suricata_ctl_flags,若设置为停止则退出程序。

GlobalsDestroy(&suricata)

释放资源,结束程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值