博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tcpdump源码分析系列6: main函数研究
阅读量:7063 次
发布时间:2019-06-28

本文共 1761 字,大约阅读时间需要 5 分钟。

hot3.png

*ebuf = '\0';

  pd = pcap_open_live(device, snaplen, !pflag, 1000, ebuf);
  if (pd == NULL)
   error("%s", ebuf);
  else if (*ebuf)
   warning("%s", ebuf);
  #endif /* HAVE_PCAP_CREATE */
  //如果没有定义HAVE_PCAP_CREATE,
  //则通过pcap_open_live 获得用于捕获网络数据包的数据包捕获描述字
  、、~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/*
   * Let user own process after socket has been opened.
   */
  #ifndef WIN32
   if (setgid(getgid()) != 0 || setuid(getuid()) != 0)
    fprintf(stderr, "Warning: setgid/setuid failed !\n");
  #endif /* WIN32 */
  //设置用户ID和组ID

 

//~~~~~~~~~~~~~~~~~~~~~~~~~~~

#if !defined(HAVE_PCAP_CREATE) && defined(WIN32)

  
  if(Bflag != 0)
   if(pcap_setbuff(pd, Bflag)==-1)
   {
    error("%s", pcap_geterr(pd));
   }
  #endif /* !defined(HAVE_PCAP_CREATE) && defined(WIN32) */
  //设置内核缓冲区
  //自定义检查点: 1 2 3

、、~~~~~~~~~~~~~~~~~~~~~~~~~~

i = pcap_snapshot(pd);  

  if (snaplen < i)
  {
   warning("snaplen raised from %d to %d", snaplen, i);
   snaplen = i;
  }
  //返回快照长度,并与snaplen比较

、、~~~~~~~~~~

 if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0)

    {
     localnet = 0;
     netmask = 0;
     warning("%s", ebuf);
    }
   //获取网卡的配置信息

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

 if (infile)

  cmdbuf = read_infile(infile);
 else
  cmdbuf = copy_argv(&argv[optind]);
 //这里假设我们没有读取文件
 //设置cmdbuf指向缓冲区

//自定义检查点: 1 2 3

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)

  error("%s", pcap_geterr(pd));
 //设置过滤条件

/

 

init_addrtoname(localnet, netmask);

    init_checksum();
 //做一些初始化操作
 

 

 #ifndef WIN32 
 (void)setsignal(SIGPIPE, cleanup);
 (void)setsignal(SIGTERM, cleanup);
 (void)setsignal(SIGINT, cleanup);
 #endif /* WIN32 */
 //设置一些信号处理函数句柄

 #if defined(HAVE_FORK) || defined(HAVE_VFORK)

 (void)setsignal(SIGCHLD, child_cleanup);
 #endif
 /* Cooperate with nohup(1) */
 //设置一些信号处理函数句柄

转载于:https://my.oschina.net/qiangzigege/blog/171410

你可能感兴趣的文章
解决windows系统80端口被占用问题
查看>>
redis基础和sentinel
查看>>
改变ubuntu终端显示语言(桌面系统是中文,终端提示是英文)
查看>>
13.scrapy框架的日志等级和请求传参
查看>>
linux 打开FTP 功能
查看>>
rollout
查看>>
上传图片前判断图片的尺寸
查看>>
dm8148 开发之---IDR帧
查看>>
电子自旋
查看>>
weka中算法说明[转]
查看>>
leetcode — plus-one
查看>>
less语法小结
查看>>
人人贷网的数据爬取
查看>>
索引选择性与cardinality
查看>>
如何处理变频器对PLC模拟量干扰?
查看>>
团队项目 第一次作业
查看>>
FatMouse' Trade
查看>>
jQuery 选择器项目实例
查看>>
osg反走样
查看>>
java的三元运算符
查看>>