9.3 使用WinPcap过滤数据包
9.3.1 wpcap.dll库导出的相应函数
wpcap.dll库为数据包过滤提供了下列函数。
pcap_compile函数用于将一个用高级语言描述的过滤表达式编译成一个能够被过滤虚拟机执行的低层字节码,其原型如下:
int pcap_compile(pcap_tp,struct bpf_programfp,char*str,
int optimize,bpf_u_int32 netmask)
pcap_compile_nopcap函数用于将高级语言描述的过滤表达式转换成能被过滤虚拟机执行的低层字节码。不过该函数在不需要打开适配器的情况下就可以执行此转换。该函数的原型如下:
int pcap_compile_nopcap(int snaplen_arg,int linktype_arg,
struct bpf_programprogram,charbuf,int optimize,bpf_u_int32 mask)
pcap_setfilter函数用于将一个过滤器的字节码与一个内核捕获实例相关联,其原型如下:
int pcap_setflter(pcap_tp,struct bpf_programfp)
pcap_freecode函数释放pcap_compile或pcap_compile_nopcap函数用来存储字节码的program结构体,其原型如下:
void pcap_freecode(struct bpf_program*fp)