diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2008-10-31 02:55:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-10-31 02:55:16 -0400 |
commit | 485ac57bc1238719b1508f91b0f9eeda4a3c84bb (patch) | |
tree | daa4c6fde9255c7d3a2a1add5c8c78b418d5e81e /include | |
parent | ad1d967c88e349c7e822ad75dd3247a2a50d2ea3 (diff) |
netns: add register_pernet_gen_subsys/unregister_pernet_gen_subsys
netns ops which are registered with register_pernet_gen_device() are
shutdown strictly before those which are registered with
register_pernet_subsys(). Sometimes this leads to opposite (read: buggy)
shutdown ordering between two modules.
Add register_pernet_gen_subsys()/unregister_pernet_gen_subsys() for modules
which aren't elite enough for entry in struct net, and which can't use
register_pernet_gen_device(). PPTP conntracking module is such one.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/net_namespace.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 708009be88b6..700c53a3c6fa 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -214,6 +214,8 @@ struct pernet_operations { | |||
214 | 214 | ||
215 | extern int register_pernet_subsys(struct pernet_operations *); | 215 | extern int register_pernet_subsys(struct pernet_operations *); |
216 | extern void unregister_pernet_subsys(struct pernet_operations *); | 216 | extern void unregister_pernet_subsys(struct pernet_operations *); |
217 | extern int register_pernet_gen_subsys(int *id, struct pernet_operations *); | ||
218 | extern void unregister_pernet_gen_subsys(int id, struct pernet_operations *); | ||
217 | extern int register_pernet_device(struct pernet_operations *); | 219 | extern int register_pernet_device(struct pernet_operations *); |
218 | extern void unregister_pernet_device(struct pernet_operations *); | 220 | extern void unregister_pernet_device(struct pernet_operations *); |
219 | extern int register_pernet_gen_device(int *id, struct pernet_operations *); | 221 | extern int register_pernet_gen_device(int *id, struct pernet_operations *); |