您的位置:首页 > 其它

包过滤指令

2016-01-05 16:45 169 查看
参考: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 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: