9.2.3 编译过滤表达式生成过滤器的字节码
WinPcap使用了gencode.c、optimize.c、grammar.c、scanner.c源文件与tokdefs.h头文件来完成过滤表达式的编译操作,生成过滤器的字节码。其中scanner.c、grammar.c源文件与tokdefs.h头文件由flex和bison工具生成,WinPcap目录wpcap\libpcap\下的scanner.l与grammar.y文件分别对应于flex与bison的源程序。
应用程序调用gencode.c文件中的pcap_compile函数编译过滤表达式,生成所需的字节码。待不再使用该过滤器后,则调用配对的pcap_freecode函数,来释放存储该字节代码的bpf_program结构体所用的内存空间。详细的处理过程见后续章节。