|
@@ -2072,25 +2072,28 @@ static struct pernet_operations ip_set_net_ops = {
|
|
|
static int __init
|
|
|
ip_set_init(void)
|
|
|
{
|
|
|
- int ret = nfnetlink_subsys_register(&ip_set_netlink_subsys);
|
|
|
+ int ret = register_pernet_subsys(&ip_set_net_ops);
|
|
|
|
|
|
+ if (ret) {
|
|
|
+ pr_err("ip_set: cannot register pernet_subsys.\n");
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = nfnetlink_subsys_register(&ip_set_netlink_subsys);
|
|
|
if (ret != 0) {
|
|
|
pr_err("ip_set: cannot register with nfnetlink.\n");
|
|
|
+ unregister_pernet_subsys(&ip_set_net_ops);
|
|
|
return ret;
|
|
|
}
|
|
|
+
|
|
|
ret = nf_register_sockopt(&so_set);
|
|
|
if (ret != 0) {
|
|
|
pr_err("SO_SET registry failed: %d\n", ret);
|
|
|
nfnetlink_subsys_unregister(&ip_set_netlink_subsys);
|
|
|
+ unregister_pernet_subsys(&ip_set_net_ops);
|
|
|
return ret;
|
|
|
}
|
|
|
- ret = register_pernet_subsys(&ip_set_net_ops);
|
|
|
- if (ret) {
|
|
|
- pr_err("ip_set: cannot register pernet_subsys.\n");
|
|
|
- nf_unregister_sockopt(&so_set);
|
|
|
- nfnetlink_subsys_unregister(&ip_set_netlink_subsys);
|
|
|
- return ret;
|
|
|
- }
|
|
|
+
|
|
|
pr_info("ip_set: protocol %u\n", IPSET_PROTOCOL);
|
|
|
return 0;
|
|
|
}
|
|
@@ -2098,9 +2101,10 @@ ip_set_init(void)
|
|
|
static void __exit
|
|
|
ip_set_fini(void)
|
|
|
{
|
|
|
- unregister_pernet_subsys(&ip_set_net_ops);
|
|
|
nf_unregister_sockopt(&so_set);
|
|
|
nfnetlink_subsys_unregister(&ip_set_netlink_subsys);
|
|
|
+
|
|
|
+ unregister_pernet_subsys(&ip_set_net_ops);
|
|
|
pr_debug("these are the famous last words\n");
|
|
|
}
|
|
|
|