在 linux 内核 4.13-rc2 及更高版本中找不到 nf_register_hook

Ris*_*das 4 linux kernel-modules linux-kernel netfilter

我刚开始学习 netfilter 并且我正在尝试制作一个简单的 netfilter 模块,所有教程和 HOW TO 都使用nf_register_hook().

据我了解,该nf_register_hook()函数用于调用_nf_register_hook()进一步调用nf_register_net_hook()函数的函数,迭代net链表的每个成员,但后来我有点难以理解。

随着nf_register_hook()功能消失,我正在解决如何注册一个钩子。

nf_register_net_hook()功能仍然存在,但我不确定它是如何工作的。

所以我的问题归结为,

如何在 4.13-rc1 以上的内核中注册 netfilter 钩子?

Way*_*yne 7

使用以下代码:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0)
    nf_register_net_hook(&init_net, reg)
#else
    nf_register_hook(reg)
#endif
Run Code Online (Sandbox Code Playgroud)

参考:init_net

  • 这很好用!!我有一个疑问.... 为什么使用 `init_net` 结构?它是用来保存所有的 netfilter 钩子的吗? (2认同)