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

来源:互联网 发布:redis 缓存数据库表 编辑:程序博客网 时间:2024/05/29 12:53

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

先贴一张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;}
  • 剩余的三个暂时不讨论,之后再完善
0 0
原创粉丝点击