libpcap数据类型定义.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:5 大小:27KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

libpcap数据类型定义.docx

libpcap数据类型定义.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一、lipcap的声明:#definePCAP_VERSION_MAJOR2libpcapdump文件的主版本号;#definePCAP_VERSION_MINOR4libpcapdump文件的从版本号;#definePCAP_ERRBUF_SIZE256用来存放libpcap出错信息的缓冲区的大小;#definePCAP_IF_LOOPBACK0x00000001网卡是回环网卡;#defineMODE_CAPT0抓报模式,在调用pcap_setmode()时使用;#defineMODE_STAT1静态模式,在调用pcap_setmode()时使用;二、libpcap的类型定义:0)、typedefintbpf_int321)、typedefu_intbpf_u_int3232bit的无类型整形;2)、typedefpcappcap_tDescriptorofanopencaptureinstance(一个打开的捕获实例的描述符?)这个结构对用户是不透明的。3)、typedefpcap_dumperpcap_dumper_tlibpcap保存文件的描述符。4)、typedefpcap_ifpcap_if_t网卡链表的一个元素;5)、typedefpcap_addrpcap_addr_t网卡地址的表示;6)、typedefvoid(*pcap_handler)(u_char*args,conststructpcap_pkthdr*header,constu_char*packet);其中agrs是从pcap_dispatch()函数传递过来的第四个形参,一般我们自己的包捕捉程序不需要提供它,总是为NULL;header指向pcap_pkthdr结构,该结构位于真正的物理帧前面,用于消除不同链路层支持的差异;packet指向所捕获报文的物理帧。三、libpcap结构体Libpcap库函数所必须的数据结构定义主要包含在pcap.h和pcap-int.h两个头文件中1)、pcap结构在pcap-int.h头文件中被定义:编程时需要涉及到的成员有:intfd;打开设备的描述符;u_char*buffer;是指向所捕获到数据的缓冲区指针structpcap{intfd;/*文件描述字,实际就是socket*/intselectable_fd;/*在socket上,可以使用select()和poll()等I/O复用类型函数*/intsnapshot;/*用户期望的捕获数据包最大长度*/intlinktype;/*设备类型*/inttzoff;/*时区位置,实际上没有被使用*/intoffset;/*边界对齐偏移量*/intbreak_loop;/*强制从读数据包循环中跳出的标志*/structpcap_sfsf;/*数据包保存到文件的相关配置数据结构*/structpcap_mdmd;/*具体描述如下*/intbufsize;/*读缓冲区的长度*/u_charbuffer;/*读缓冲区指针*/u_char*bp;intcc;u_char*pkt;/*相关抽象操作的函数指针,最终指向特定操作系统的处理函数*/int(*read_op)(pcap_t*,intcnt,pcap_handler,u_char*);int(*setfilter_op)(pcap_t*,structbpf_program*);int(*set_datalink_op)(pcap_t*,int);int(*getnonblock_op)(pcap_t*,char*);int(*setnonblock_op)(pcap_t*,int,char*);int(*stats_op)(pcap_t*,structpcap_stat*);void(*close_op)(pcap_t*);/*如果BPF过滤代码不能在内核中执行,则将其保存并在用户空间执行*/structbpf_programfcode;/*函数调用出错信息缓冲区*/charerrbuf[PCAP_ERRBUF_SIZE+1];/*当前设备支持的、可更改的数据链路类型的个数*/intdlt_count;/*可更改的数据链路类型号链表,在linux下没有使用*/int*dlt_list;/*数据包自定义头部,对数据包捕获时间、捕获长度、真实长度进行描述[pcap.h]*/structpcap_pkthdrpcap_header;};/*包含了捕获句柄的接口、状态、过滤信息[pcap-int.h]*/structpc