首页 > 其他 > 详细

包过滤指令

时间:2016-01-05 16:55:57      阅读:193      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!