static int __init ip6table_mangle_init(void) { int ret; ret = register_pernet_subsys(&ip6table_mangle_net_ops); if (ret < 0) return ret; /* Register hooks */ mangle_ops = xt_hook_link(&packet_mangler, ip6table_mangle_hook); if (IS_ERR(mangle_ops)) { ret = PTR_ERR(mangle_ops); goto cleanup_table; } return ret; cleanup_table: unregister_pernet_subsys(&ip6table_mangle_net_ops); return ret; }
static int __init iptable_raw_init(void) { int ret; ret = register_pernet_subsys(&iptable_raw_net_ops); if (ret < 0) return ret; rawtable_ops = xt_hook_link(&packet_raw, iptable_raw_hook); if (IS_ERR(rawtable_ops)) { ret = PTR_ERR(rawtable_ops); goto cleanup_table; } return ret; cleanup_table: unregister_pernet_subsys(&iptable_raw_net_ops); return ret; }
static int __init vlan_proto_init(void) { int err; pr_info("%s v%s\n", vlan_fullname, vlan_version); err = register_pernet_subsys(&vlan_net_ops); if (err < 0) goto err0; err = register_netdevice_notifier(&vlan_notifier_block); if (err < 0) goto err2; err = vlan_gvrp_init(); if (err < 0) goto err3; err = vlan_mvrp_init(); if (err < 0) goto err4; err = vlan_netlink_init(); if (err < 0) goto err5; vlan_ioctl_set(vlan_ioctl_handler); return 0; err5: vlan_mvrp_uninit(); err4: vlan_gvrp_uninit(); err3: unregister_netdevice_notifier(&vlan_notifier_block); err2: unregister_pernet_subsys(&vlan_net_ops); err0: return err; }
int __init ip_misc_proc_init(void) { int rc = 0; if (register_pernet_subsys(&ip_proc_ops)) goto out_pernet; if (!proc_net_fops_create(&init_net, "netstat", S_IRUGO, &netstat_seq_fops)) goto out_netstat; if (!proc_net_fops_create(&init_net, "snmp", S_IRUGO, &snmp_seq_fops)) goto out_snmp; out: return rc; out_snmp: proc_net_remove(&init_net, "netstat"); out_netstat: unregister_pernet_subsys(&ip_proc_ops); out_pernet: rc = -ENOMEM; goto out; }
static __init int deth_init(void) { int rc; printk(KERN_DEBUG "[Module %s %s loaded]\n", DRV_NAME, DRV_VERSION); rc = register_pernet_subsys(&deth_net_ops); if (rc != 0) { return rc; } rc = rtnl_link_register(&deth_link_ops); if (rc != 0) { unregister_pernet_subsys(&deth_net_ops); } return rc; }
static int __init vrf_init_module(void) { int rc; register_netdevice_notifier(&vrf_notifier_block); rc = register_pernet_subsys(&vrf_net_ops); if (rc < 0) goto error; rc = rtnl_link_register(&vrf_link_ops); if (rc < 0) { unregister_pernet_subsys(&vrf_net_ops); goto error; } return 0; error: unregister_netdevice_notifier(&vrf_notifier_block); return rc; }
static int __init init_nlm(void) { int err; #ifdef CONFIG_SYSCTL err = -ENOMEM; nlm_sysctl_table = register_sysctl_table(nlm_sysctl_root); if (nlm_sysctl_table == NULL) goto err_sysctl; #endif err = register_pernet_subsys(&lockd_net_ops); if (err) goto err_pernet; return 0; err_pernet: #ifdef CONFIG_SYSCTL unregister_sysctl_table(nlm_sysctl_table); #endif err_sysctl: return err; }
static int __init iptable_security_init(void) { int ret; sectbl_ops = xt_hook_ops_alloc(&security_table, iptable_security_hook); if (IS_ERR(sectbl_ops)) return PTR_ERR(sectbl_ops); ret = register_pernet_subsys(&iptable_security_net_ops); if (ret < 0) { kfree(sectbl_ops); return ret; } ret = iptable_security_table_init(&init_net); if (ret) { unregister_pernet_subsys(&iptable_security_net_ops); kfree(sectbl_ops); } return ret; }
static int __init nf_nat_init(void) { int ret; ret = rhashtable_init(&nf_nat_bysource_table, &nf_nat_bysource_params); if (ret) return ret; ret = nf_ct_extend_register(&nat_extend); if (ret < 0) { rhashtable_destroy(&nf_nat_bysource_table); printk(KERN_ERR "nf_nat_core: Unable to register extension\n"); return ret; } ret = register_pernet_subsys(&nf_nat_net_ops); if (ret < 0) goto cleanup_extend; nf_ct_helper_expectfn_register(&follow_master_nat); /* Initialize fake conntrack so that NAT will skip it */ nf_ct_untracked_status_or(IPS_NAT_DONE_MASK); BUG_ON(nfnetlink_parse_nat_setup_hook != NULL); RCU_INIT_POINTER(nfnetlink_parse_nat_setup_hook, nfnetlink_parse_nat_setup); #ifdef CONFIG_XFRM BUG_ON(nf_nat_decode_session_hook != NULL); RCU_INIT_POINTER(nf_nat_decode_session_hook, __nf_nat_decode_session); #endif return 0; cleanup_extend: rhashtable_destroy(&nf_nat_bysource_table); nf_ct_extend_unregister(&nat_extend); return ret; }
static int __init log_tg_init(void) { int ret; ret = register_pernet_subsys(&log_net_ops); if (ret < 0) goto err_pernet; ret = xt_register_targets(log_tg_regs, ARRAY_SIZE(log_tg_regs)); if (ret < 0) goto err_target; nf_log_register(NFPROTO_IPV4, &ipt_log_logger); #if IS_ENABLED(CONFIG_IP6_NF_IPTABLES) nf_log_register(NFPROTO_IPV6, &ip6t_log_logger); #endif return 0; err_target: unregister_pernet_subsys(&log_net_ops); err_pernet: return ret; }
int __init ipv6_frag_init(void) { int ret; ip6_frags.constructor = ip6frag_init; ip6_frags.destructor = NULL; ip6_frags.qsize = sizeof(struct frag_queue); ip6_frags.frag_expire = ip6_frag_expire; ip6_frags.frags_cache_name = ip6_frag_cache_name; ip6_frags.rhash_params = ip6_rhash_params; ret = inet_frags_init(&ip6_frags); if (ret) goto out; ret = inet6_add_protocol(&frag_protocol, IPPROTO_FRAGMENT); if (ret) goto err_protocol; ret = ip6_frags_sysctl_register(); if (ret) goto err_sysctl; ret = register_pernet_subsys(&ip6_frags_ops); if (ret) goto err_pernet; out: return ret; err_pernet: ip6_frags_sysctl_unregister(); err_sysctl: inet6_del_protocol(&frag_protocol, IPPROTO_FRAGMENT); err_protocol: inet_frags_fini(&ip6_frags); goto out; }
static int __init init_sunrpc(void) { int err = rpc_init_mempool(); if (err) goto out; err = rpcauth_init_module(); if (err) goto out2; cache_initialize(); err = register_pernet_subsys(&sunrpc_net_ops); if (err) goto out3; err = register_rpc_pipefs(); if (err) goto out4; sunrpc_debugfs_init(); #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) rpc_register_sysctl(); #endif svc_init_xprt_sock(); /* svc sock transport */ init_socket_xprt(); /* clnt sock transport */ return 0; out4: unregister_pernet_subsys(&sunrpc_net_ops); out3: rpcauth_remove_module(); out2: rpc_destroy_mempool(); out: return err; }
int __init ipv6_misc_proc_init(void) { int rc = 0; if (register_pernet_subsys(&ipv6_proc_ops)) goto proc_net_fail; if (!proc_net_fops_create(&init_net, "snmp6", S_IRUGO, &snmp6_seq_fops)) goto proc_snmp6_fail; proc_net_devsnmp6 = proc_mkdir("dev_snmp6", init_net.proc_net); if (!proc_net_devsnmp6) goto proc_dev_snmp6_fail; out: return rc; proc_dev_snmp6_fail: proc_net_remove(&init_net, "snmp6"); proc_snmp6_fail: unregister_pernet_subsys(&ipv6_proc_ops); proc_net_fail: rc = -ENOMEM; goto out; }
int __init xfrm6_init(void) { int ret; dst_entries_init(&xfrm6_dst_ops); ret = xfrm6_policy_init(); if (ret) { dst_entries_destroy(&xfrm6_dst_ops); goto out; } ret = xfrm6_state_init(); if (ret) goto out_policy; #ifdef CONFIG_SYSCTL register_pernet_subsys(&xfrm6_net_ops); #endif out: return ret; out_policy: xfrm6_policy_fini(); goto out; }
static int __init vlan_proto_init(void) { int err; pr_info("%s v%s %s\n", vlan_fullname, vlan_version, vlan_copyright); pr_info("All bugs added by %s\n", vlan_buggyright); err = register_pernet_subsys(&vlan_net_ops); if (err < 0) goto err0; err = register_netdevice_notifier(&vlan_notifier_block); if (err < 0) goto err2; err = vlan_gvrp_init(); if (err < 0) goto err3; err = vlan_netlink_init(); if (err < 0) goto err4; dev_add_pack(&vlan_packet_type); vlan_ioctl_set(vlan_ioctl_handler); return 0; err4: vlan_gvrp_uninit(); err3: unregister_netdevice_notifier(&vlan_notifier_block); err2: unregister_pernet_subsys(&vlan_net_ops); err0: return err; }
static int __init nf_conntrack_proto_dccp_init(void) { int ret; ret = register_pernet_subsys(&dccp_net_ops); if (ret < 0) goto out_pernet; ret = nf_ct_l4proto_register(&dccp_proto4); if (ret < 0) goto out_dccp4; ret = nf_ct_l4proto_register(&dccp_proto6); if (ret < 0) goto out_dccp6; return 0; out_dccp6: nf_ct_l4proto_unregister(&dccp_proto4); out_dccp4: unregister_pernet_subsys(&dccp_net_ops); out_pernet: return ret; }
static int __init iptable_mangle_init(void) { int ret; mangle_ops = xt_hook_ops_alloc(&packet_mangler, iptable_mangle_hook); if (IS_ERR(mangle_ops)) { ret = PTR_ERR(mangle_ops); return ret; } ret = register_pernet_subsys(&iptable_mangle_net_ops); if (ret < 0) { kfree(mangle_ops); return ret; } ret = iptable_mangle_table_init(&init_net); if (ret) { unregister_pernet_subsys(&iptable_mangle_net_ops); kfree(mangle_ops); } return ret; }
static int __init nf_conntrack_proto_dccp_init(void) { int err; err = register_pernet_subsys(&dccp_net_ops); if (err < 0) goto err1; err = nf_conntrack_l4proto_register(&dccp_proto4); if (err < 0) goto err2; err = nf_conntrack_l4proto_register(&dccp_proto6); if (err < 0) goto err3; return 0; err3: nf_conntrack_l4proto_unregister(&dccp_proto4); err2: unregister_pernet_subsys(&dccp_net_ops); err1: return err; }
int __init nf_nat_rule_init(void) { int ret; ret = register_pernet_subsys(&nf_nat_rule_net_ops); if (ret != 0) goto out; ret = xt_register_target(&ipt_snat_reg); if (ret != 0) goto unregister_table; ret = xt_register_target(&ipt_dnat_reg); if (ret != 0) goto unregister_snat; return ret; unregister_snat: xt_unregister_target(&ipt_snat_reg); unregister_table: unregister_pernet_subsys(&nf_nat_rule_net_ops); out: return ret; }
static int __init vnsw_init(void) { int err; err = lacp_proto_register(&vnsw_lacp_proto); if (err < 0) { pr_err("vnsw: can't register sap for LACP\n"); return err; } /** * More proto register should come here */ err = vnsw_mtrie_init(); if (err) goto err_out; err = register_pernet_subsys(&vnsw_net_ops); if (err) goto err_out1; err = vnsw_policy_init(); if (err) goto err_out2; err = vnsw_if_init(); if (err) goto err_out3; err = register_netdevice_notifier(&vnsw_device_notifier); if (err) goto err_out4; /** * Should this move to linux directory */ err = vnsw_netlink_init(); if (err) goto err_out5; /** * Should this move to linux directory */ brioctl_set(vnsw_ioctl_deviceless_stub); /** * Should this move to linux directory linux module init */ br_handle_frame_hook = vnsw_handle_frame; return 0; err_out5: unregister_netdevice_notifier(&vnsw_device_notifier); err_out4: vnsw_if_fini(); err_out3: vnsw_policy_fini(); err_out2: unregister_pernet_subsys(&vnsw_net_ops); err_out1: vnsw_mtrie_fini(); err_out: lacp_proto_unregister(&vnsw_lacp_proto); return err; }
int __init ip_misc_proc_init(void) { return register_pernet_subsys(&ip_proc_ops); }
int ipvlan_l3s_init(void) { return register_pernet_subsys(&ipvlan_net_ops); }
static __init int sysctl_core_init(void) { register_net_sysctl(&init_net, "net/core", net_core_table); return register_pernet_subsys(&sysctl_core_ops); }
static int __init wireless_nlevent_init(void) { return register_pernet_subsys(&wext_pernet_ops); }
int __init raw_proc_init(void) { return register_pernet_subsys(&raw_net_ops); }
int ip6_flowlabel_init(void) { return register_pernet_subsys(&ip6_flowlabel_net_ops); }
int __init udplite6_proc_init(void) { return register_pernet_subsys(&udplite6_net_ops); }
static int __init nf_conntrack_l3proto_ipv4_init(void) { int ret = 0; need_conntrack(); nf_defrag_ipv4_enable(); ret = nf_register_sockopt(&so_getorigdst); if (ret < 0) { printk(KERN_ERR "Unable to register netfilter socket option\n"); return ret; } ret = register_pernet_subsys(&ipv4_net_ops); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register pernet ops\n"); goto cleanup_sockopt; } ret = nf_register_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops)); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register hooks.\n"); goto cleanup_pernet; } ret = nf_ct_l4proto_register(&nf_conntrack_l4proto_tcp4); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register tcp4 proto.\n"); goto cleanup_hooks; } ret = nf_ct_l4proto_register(&nf_conntrack_l4proto_udp4); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register udp4 proto.\n"); goto cleanup_tcp4; } ret = nf_ct_l4proto_register(&nf_conntrack_l4proto_icmp); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register icmpv4 proto.\n"); goto cleanup_udp4; } ret = nf_ct_l3proto_register(&nf_conntrack_l3proto_ipv4); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register ipv4 proto.\n"); goto cleanup_icmpv4; } #if defined(CONFIG_PROC_FS) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) ret = nf_conntrack_ipv4_compat_init(); if (ret < 0) goto cleanup_proto; #endif return ret; #if defined(CONFIG_PROC_FS) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) cleanup_proto: nf_ct_l3proto_unregister(&nf_conntrack_l3proto_ipv4); #endif cleanup_icmpv4: nf_ct_l4proto_unregister(&nf_conntrack_l4proto_icmp); cleanup_udp4: nf_ct_l4proto_unregister(&nf_conntrack_l4proto_udp4); cleanup_tcp4: nf_ct_l4proto_unregister(&nf_conntrack_l4proto_tcp4); cleanup_hooks: nf_unregister_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops)); cleanup_pernet: unregister_pernet_subsys(&ipv4_net_ops); cleanup_sockopt: nf_unregister_sockopt(&so_getorigdst); return ret; }
int __init netfilter_log_init(void) { return register_pernet_subsys(&nf_log_net_ops); }
int __init proc_net_init(void) { proc_symlink("net", NULL, "self/net"); return register_pernet_subsys(&proc_net_ns_ops); }