Libnids--函数调用顺序之nids_init()

本文记录了对Libnids库中关键函数nids_init()的研究过程,详细阐述了nids_exit()的资源释放、open_live()的网络接口开启、nids_syslog()的日志写入功能,以及init_procs()的详尽分析。后续将探讨剩余未涉及的函数。
摘要由CSDN通过智能技术生成

看了好几天,做个笔记理一下思路

先贴一张nids_init()的图:
这里写图片描述

  • nids_exit():释放之前被占用的资源;
  • open_live():打开网络接口
static int open_live()
{
    char *device;
    int promisc = 0;

    //初始化网络接口
    if (nids_params.device == NULL)
    nids_params.device = pcap_lookupdev(nids_errbuf);
    if (nids_params.device == NULL)
    return 0;

    device = nids_params.device;
    if (!strcmp(device, "all"))
    device = "any";
    else
    promisc = (nids_params.promisc != 0);

    //打开网络接口,返回desc,promisc表示网卡的混杂模式
    if ((desc = pcap_open_live(device, 16384, promisc,
                   nids_params.pcap_timeout, nids_errbuf)) == NULL)
    return 0;
    //下面的代码不看了
    .
    .
    .
}
  • nids_syslog():nids_syslog()函数完成日志的写入
  • init_procs():这个函数比较重要,该函数需要展开讨论
static void init_procs()
{
    //ip_frag_procs是处理ip_fragment的回调函数队列
    ip_frag_procs = mknew(struct proc_node);
    ip_frag_procs->item = gen_ip_frag_proc;
    ip_frag_procs->next = 0;
    //ip_frag_procs是处理ip的回调函数队列
    ip_procs = mknew(struct proc_node);
    ip_procs->item = gen_ip_proc;
    ip_procs->next = 0;
    tcp_procs = 0;
    udp_procs = 0;
}
  • 剩余的三个暂时不讨论,之后再完善
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值