简介
Linux内核在Netfilter框架的基础上提供了IP Queue机制,从而使得基于用户态的防火墙开发成为可能。从而可以在用户态对报文内容进行分析,同时可以给出对这个报文的处理意见,也可以修改报文。
libipq是基于netfilter提供的接口进行二次封装的库,目的是让大家能够更多专注于用户态的数据处理,简化用户态和内核态数据交换流程。
环境依赖
需要安装libnetfilter_queue,libnetfilter_queue-devel,iptables,iptables-devel
yum install -y libnetfilter_queue libnetfilter_queue-devel iptables iptables-devel
头文件
#include <linux/netfilter.h>
#include <libipq.h>
示例
ipq_test.c
/*
* * This code is GPL.
* */
#include <linux/netfilter.h>
#include <libipq.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 2048
static void die(struct ipq_handle *h)
{
ipq_perror("passer");
ipq_destroy_handle(h);
exit(1);
}
int main(int argc, char **argv)
{
int status;
unsigned char buf[BUFSIZE];