我刚刚开始学习 netfilter,我试图制作一个简单的 netfilter 模块,所有教程和如何使用 注册钩子函数nf_register_hook()
,但我在 4.13-rc1 以上的 Linux 内核中找不到一个。
据我了解,该nf_register_hook()
函数用于调用_nf_register_hook()
函数,该函数进一步调用nf_register_net_hook()
函数,迭代net
链表的每个成员,但对我来说有点难以理解。
随着该nf_register_hook()
函数的消失,我正在解决如何注册钩子的问题。
该nf_register_net_hook()
功能仍然存在,但我不太确定它是如何工作的。
所以我的问题归结为,
如何在4.13-rc1以上的内核中注册netfilter钩子?
答案1
使用以下代码:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0)
nf_register_net_hook(&init_net, reg)
#else
nf_register_hook(reg)
#endif
参考:初始化网络