Netfilter_queue 知识总结
函数名称:
struct nfnl_handle *nfnl_open(void)
函数说明:
开启nfnetlink 处理程序
函数参数:
void
函数功能:
该函数创建一个nfnetlink 处理程序,此函数创建NFNETLink处理程序,这是需要建立的用户空间与NFNETLink系统之间的通信。
返回值:
成功 指向nfnl_handle structure的有效地址。
失败:NULL
函数名称:
int nfq_unbind_pf(struct nfq_handle *h, u_int16_t pf)
或者
int nfq_bind_pf(struct nfq_handle *h, u_int16_t pf)
函数说明:
解绑(绑定)nf_queue 队列
函数参数:
h:nfq_open()返回struct nfnl_handle结构的指针;
pf: 协议族 AF_BRIDGE:7多协议桥,AF_INET:2 路由模式
返回值:失败 : -1
成功 : 0
函数名称:
struct nfq_q_handle *nfq_create_queue(struct nfq_handle *h,
u_int16_t num,
nfq_callback *cb,
void *data)
函数说明:
将此套接字绑定到特定的队列号.
函数参数:
h : nfq_open()返回struct nfnl_handle结构的指针;
num: 队列的序列号
cb : 数据包的处理函数(回调函数)
data: 自定义数据
返回值:
成功:struct nfq_q_handle 指针
失败 : null
函数名称:
int nfq_set_mode(struct nfq_q_handle *qh,u_int8_t mode, u_int32_t range)
函数说明:
从netlink系统里设置copy数据的方式
函数参数:
qh : nfq_create_queue()函数的返回值
mode : copy 方式
NFQNL_COPY_NONE,
NFQNL_COPY_META,
NFQNL_COPY_PACKET,
range:copy 数据长度
返回值:
成功0
失败 -1
函数名称:
int nfq_handle_packet(struct nfq_handle *h, char *buf, int len)
函数说明:
处理接收的数据
函数参数:
h : nfq_open()返回struct nfnl_handle结构的指针;
buf: 待处理的数据
len:数据长度
综上所述:
nf_queue仍然使用的netlink机制与内核之间进行通信,不同的是</