Linux kernel 导出gre模块函数

Linux kernel 导出gre模块函数,linux-kernel,kernel,kernel-module,Linux Kernel,Kernel,Kernel Module,我正在写一个Netfilter钩子函数,它钩住INET_PRE_路由。在这个钩子函数中,我想访问ip_gre.c中定义为静态的ipgre_tunnel_locate。查看/proc/kallsyms时,ipgre_tunnel_位置如下所示: ffffffffa03acb30 t ipgre_tunnel_locate [ip_gre] 上面的第二列表示该函数是本地的且未报告。我可以使用位于ip\u gre.c中的export\u SymbolicPGRE\u tunnel\u导出此函数,以

我正在写一个Netfilter钩子函数,它钩住INET_PRE_路由。在这个钩子函数中,我想访问ip_gre.c中定义为静态的ipgre_tunnel_locate。查看/proc/kallsyms时,ipgre_tunnel_位置如下所示:

ffffffffa03acb30 t ipgre_tunnel_locate  [ip_gre]
上面的第二列表示该函数是本地的且未报告。我可以使用位于ip\u gre.c中的export\u SymbolicPGRE\u tunnel\u导出此函数,以便在我的NetFilter预路由钩子函数中使用它吗`


默认情况下,函数没有导出到内核中有什么强有力的原因吗???

您可以导出函数,但您的模块将只能使用修补过的内核运行

我认为,它不导出的原因很简单:这不是外部接口的一部分。例如,自从内核的3.10版本以来,就没有ipgre_tunnel_locate

我应该再次指出,仅仅因为需要而输出符号并不是一种可靠的技术