mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-06-14 20:02:04 +08:00
kernel: nf_conntrack_rtcache: fix cleanup on netns delete and rmmod
This commit is contained in:
parent
210243ca57
commit
16c686b001
@ -127,7 +127,7 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
# netlink interface for nf_conntrack
|
||||
--- /dev/null
|
||||
+++ b/net/netfilter/nf_conntrack_rtcache.c
|
||||
@@ -0,0 +1,428 @@
|
||||
@@ -0,0 +1,430 @@
|
||||
+/* route cache for netfilter.
|
||||
+ *
|
||||
+ * (C) 2014 Red Hat GmbH
|
||||
@ -444,6 +444,11 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ .destroy = nf_conn_rtcache_destroy,
|
||||
+};
|
||||
+
|
||||
+static int __net_init rtcache_net_init(struct net *net)
|
||||
+{
|
||||
+ return nf_register_net_hooks(net, rtcache_ops, ARRAY_SIZE(rtcache_ops));
|
||||
+}
|
||||
+
|
||||
+static void __net_exit rtcache_net_exit(struct net *net)
|
||||
+{
|
||||
+ /* remove hooks so no new connections get rtcache extension */
|
||||
@ -451,6 +456,7 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+}
|
||||
+
|
||||
+static struct pernet_operations rtcache_ops_net_ops = {
|
||||
+ .init = rtcache_net_init,
|
||||
+ .exit = rtcache_net_exit,
|
||||
+};
|
||||
+
|
||||
@ -469,18 +475,8 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = nf_register_net_hooks(&init_net, rtcache_ops,
|
||||
+ ARRAY_SIZE(rtcache_ops));
|
||||
+ if (ret < 0) {
|
||||
+ nf_ct_extend_unregister(&rtcache_extend);
|
||||
+ unregister_pernet_subsys(&rtcache_ops_net_ops);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = register_netdevice_notifier(&nf_rtcache_notifier);
|
||||
+ if (ret) {
|
||||
+ nf_unregister_net_hooks(&init_net, rtcache_ops,
|
||||
+ ARRAY_SIZE(rtcache_ops));
|
||||
+ nf_ct_extend_unregister(&rtcache_extend);
|
||||
+ unregister_pernet_subsys(&rtcache_ops_net_ops);
|
||||
+ }
|
||||
@ -531,6 +527,11 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ synchronize_net();
|
||||
+
|
||||
+ unregister_netdevice_notifier(&nf_rtcache_notifier);
|
||||
+ unregister_pernet_subsys(&rtcache_ops_net_ops);
|
||||
+ for_each_net(net)
|
||||
+ nf_unregister_net_hooks(net, rtcache_ops, ARRAY_SIZE(rtcache_ops));
|
||||
+
|
||||
+ synchronize_net();
|
||||
+
|
||||
+ rtnl_lock();
|
||||
+
|
||||
@ -547,6 +548,7 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ }
|
||||
+
|
||||
+ rtnl_unlock();
|
||||
+
|
||||
+ synchronize_net();
|
||||
+ nf_ct_extend_unregister(&rtcache_extend);
|
||||
+}
|
||||
|
@ -127,7 +127,7 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
# netlink interface for nf_conntrack
|
||||
--- /dev/null
|
||||
+++ b/net/netfilter/nf_conntrack_rtcache.c
|
||||
@@ -0,0 +1,428 @@
|
||||
@@ -0,0 +1,430 @@
|
||||
+/* route cache for netfilter.
|
||||
+ *
|
||||
+ * (C) 2014 Red Hat GmbH
|
||||
@ -444,6 +444,11 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ .destroy = nf_conn_rtcache_destroy,
|
||||
+};
|
||||
+
|
||||
+static int __net_init rtcache_net_init(struct net *net)
|
||||
+{
|
||||
+ return nf_register_net_hooks(net, rtcache_ops, ARRAY_SIZE(rtcache_ops));
|
||||
+}
|
||||
+
|
||||
+static void __net_exit rtcache_net_exit(struct net *net)
|
||||
+{
|
||||
+ /* remove hooks so no new connections get rtcache extension */
|
||||
@ -451,6 +456,7 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+}
|
||||
+
|
||||
+static struct pernet_operations rtcache_ops_net_ops = {
|
||||
+ .init = rtcache_net_init,
|
||||
+ .exit = rtcache_net_exit,
|
||||
+};
|
||||
+
|
||||
@ -469,18 +475,8 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = nf_register_net_hooks(&init_net, rtcache_ops,
|
||||
+ ARRAY_SIZE(rtcache_ops));
|
||||
+ if (ret < 0) {
|
||||
+ nf_ct_extend_unregister(&rtcache_extend);
|
||||
+ unregister_pernet_subsys(&rtcache_ops_net_ops);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = register_netdevice_notifier(&nf_rtcache_notifier);
|
||||
+ if (ret) {
|
||||
+ nf_unregister_net_hooks(&init_net, rtcache_ops,
|
||||
+ ARRAY_SIZE(rtcache_ops));
|
||||
+ nf_ct_extend_unregister(&rtcache_extend);
|
||||
+ unregister_pernet_subsys(&rtcache_ops_net_ops);
|
||||
+ }
|
||||
@ -531,6 +527,11 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ synchronize_net();
|
||||
+
|
||||
+ unregister_netdevice_notifier(&nf_rtcache_notifier);
|
||||
+ unregister_pernet_subsys(&rtcache_ops_net_ops);
|
||||
+ for_each_net(net)
|
||||
+ nf_unregister_net_hooks(net, rtcache_ops, ARRAY_SIZE(rtcache_ops));
|
||||
+
|
||||
+ synchronize_net();
|
||||
+
|
||||
+ rtnl_lock();
|
||||
+
|
||||
@ -547,6 +548,7 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
+ }
|
||||
+
|
||||
+ rtnl_unlock();
|
||||
+
|
||||
+ synchronize_net();
|
||||
+ nf_ct_extend_unregister(&rtcache_extend);
|
||||
+}
|
||||
|
Loading…
x
Reference in New Issue
Block a user