首页
社区
课程
招聘
[原创]linux下netfilter使用的问题
发表于: 2016-12-29 09:47 5763

[原创]linux下netfilter使用的问题

2016-12-29 09:47
5763

我想使用netfilter进行开发,写了一个非常简单的测试例子,如下:


#include	<stdio.h>


#include 	<linux/netfilter.h>  
#include 	<linux/init.h>  
#include 	<linux/module.h>  
#include 	<linux/netfilter_ipv4.h>  
#include 	<linux/ip.h>  
#include 	<linux/inet.h> 

/** 
 * Hook function to be called. 
 * We modify the packet's src IP. 
 */  
unsigned int my_hookfn(unsigned int hooknum,  
    struct sk_buff *skb,  
    const struct net_device *in,  
    const struct net_device *out,  
    int (*okfn)(struct sk_buff *))  
{  
	struct iphdr *iph;  
	iph = ip_hdr(skb);  
  
	/* log the original src IP */  
	printk(KERN_INFO"src IP %pI4\n", &iph->saddr);  
  
	/* modify the packet's src IP */  
	iph->saddr = in_aton("8.8.8.8");  
  
	return NF_ACCEPT;  
}  
  
/* A netfilter instance to use */  
static struct nf_hook_ops nfho = {  
	.hook = my_hookfn,  
	.pf = PF_INET,  
	.hooknum = NF_INET_PRE_ROUTING,  
	.priority = NF_IP_PRI_FIRST,  
	.owner = THIS_MODULE,  
};  
  
static int __init sknf_init(void)  
{  
	if (nf_register_hook(&nfho)) 
	{  
	        printk(KERN_ERR"nf_register_hook() failed\n");  
	        return -1;  
	}  
	return 0;  
}  
  
static void __exit sknf_exit(void)  
{  
	nf_unregister_hook(&nfho);  
}  
  
module_init(sknf_init);  
module_exit(sknf_exit);  
MODULE_AUTHOR("test");  
MODULE_LICENSE("GPL"); 

static	int	test(int argc, char*argv[])
{
	
	printf("--start test--,%d, %s\n",argc, argv[1]);

	

	printf("--end test--\n");
	
	
	return 0;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 70
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
头文件里面少分号
2016-12-29 14:20
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我将test.c改为test.cpp(即换了后缀名),上面的错误少了很多(仍有)。这里是否真的涉及到交叉编译(包含了c++)?请做过类似的给个指引
2016-12-29 17:07
0
游客
登录 | 注册 方可回帖
返回
//