简单的netfilter hook函数注册以及内核链表的使用
来源:互联网 发布:php微信分享接口开发 编辑:程序博客网 时间:2024/06/03 17:36
#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>#include <linux/list.h>struct fox{int a;struct list_head list;};struct list_head fox_list;/** * 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; struct fox fox_red ,fox_yellow , *f; fox_red.a = 1; fox_yellow.a = 2; LIST_HEAD(fox_list); list_add(&fox_red.list, &fox_list); list_add(&fox_yellow.list, &fox_list); list_for_each_entry(f, &fox_list, list) { printk("the fox is %d\n", f->a); } 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("zhangsk");MODULE_LICENSE("GPL");
该内核模块只是简单的注册一个钩子函数
阅读全文
0 0
- 简单的netfilter hook函数注册以及内核链表的使用
- Linux netfilter 学习笔记 之二 ip 层netfilter的hook 注册以及执行hook函数的概要分析
- Linux netfilter 学习笔记 之二 ip 层netfilter的hook 注册以及执行hook函数的概要分析
- 文章标题 netfilter的hook函数
- linux内核netfilter的实现以及ipset
- Linux netfilter 学习笔记 之六 ip层netfilter的filter表的创建及其hook函数分析
- Linux netfilter 学习笔记 之六 ip层netfilter的filter表的创建及其hook函数分析
- 2.6.30内核Netfilter的简单例子、一(DropAll)
- 2.6.30内核Netfilter的简单例子、二(DropLo)
- 2.6.30内核Netfilter的简单例子、三(whoVisit)
- 2.6.30内核Netfilter的简单例子、四(filterIp)
- 2.6.30内核Netfilter的简单例子、五(filterProtocol)
- 2.6.30内核Netfilter的简单例子、六(filterPort)
- Linux2.6内核Netfilter的简单例子、七(netMonitor)
- Linux2.6内核Netfilter的简单例子、八(simpNat)
- Netfilter中5个HOOK 的理解
- linux netfilter IP层的HOOK点
- 关于netfilter钩子 hook值的问题
- Android5.0 显示系统(三)————Surface的创建
- 程序 进程 线程 的区别和联系
- Hive实现数据抽样的三种方法
- 第三章垃圾收集器和内存分配策略
- 指针入门
- 简单的netfilter hook函数注册以及内核链表的使用
- 51 nod 1043 幸运号码(数位DP)
- win10VirtualBox没有64位选项
- 回文质数
- hello,word 这是我开通博客的第一天
- 对拍教程-By skyler2003
- foreach的内部实现和泛型代码
- React项目的打包与部署到腾讯云
- 《JavaScript 高级程序设计》 继承有关的总结