码迷,mamicode.com
首页 > 其他好文 > 详细

包过滤指令

时间:2016-01-05 16:57:46      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

参考:https://www.kernel.org/doc/Documentation/networking/filter.txt

tcpdump的-dd可以dump出过滤指令。

在设置socket的包过滤时,用到结构体linux/filter.h/struct sock_filter{

  __u16 code; // 操作码

  __u8 jt; // Jump if true

  __u8 jf; // Jump if false

  __u32 k; // 参数,不同操作码用图不同

}

每一个struct socket_filter代表一条指令。

BPF(Berkeley Packet Filter)定义了一些宏帮助构造过滤指令。

#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }  

#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }  

BPF_LD:将值拷贝到寄存器

  BPF_W   0x00    /* word */
BPF_H 0x08 /* half word */
BPF_B 0x10 /* byte */
BPF_DW 0x18 /* eBPF only, double word */

 

包过滤指令

标签:

原文地址:http://www.cnblogs.com/qmdlinux/p/5102897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!