int nf_conntrack_proto_init(void) { int ret = 0; ret = nf_register_sockopt(&so_getorigdst); if (ret < 0) return ret; #if IS_ENABLED(CONFIG_IPV6) ret = nf_register_sockopt(&so_getorigdst6); if (ret < 0) goto cleanup_sockopt; #endif ret = nf_ct_l4proto_register(builtin_l4proto, ARRAY_SIZE(builtin_l4proto)); if (ret < 0) goto cleanup_sockopt2; return ret; cleanup_sockopt2: nf_unregister_sockopt(&so_getorigdst); #if IS_ENABLED(CONFIG_IPV6) cleanup_sockopt: nf_unregister_sockopt(&so_getorigdst6); #endif return ret; }
static int __init init(void) { ip_pool_t i; int res; if (nr_pool < 1) { printk("ip_pool module init: bad nr_pool %d\n", nr_pool); return -EINVAL; } POOL = kmalloc(nr_pool * sizeof(*POOL), GFP_KERNEL); if (!POOL) { printk("ip_pool module init: out of memory for nr_pool %d\n", nr_pool); return -ENOMEM; } for (i=0; i<nr_pool; i++) { POOL[i].first_ip = 0; POOL[i].last_ip = 0; POOL[i].members = 0; POOL[i].nr_use = 0; POOL[i].nr_match = 0; POOL[i].lock = RW_LOCK_UNLOCKED; } res = nf_register_sockopt(&so_pool); DP("ip_pool:init %d pools, result %d\n", nr_pool, res); if (res != 0) { kfree(POOL); POOL = 0; } return res; }
static int __init init(void) { int res; res = nf_register_sockopt(&so_set); if (res != 0) { printk(KERN_ERR "authd-sockopt: SO_AUTHD registry failed: %d\n", res); return res; } return 0; }
static int init_or_cleanup(int init) { int ret = 0; if (!init) goto cleanup; ret = nf_register_sockopt(&sock_ops); if (ret < 0) goto cleanup_nothing; ret = ipfw_init_or_cleanup(1); if (ret < 0) goto cleanup_sockopt; ret = masq_init(); if (ret < 0) goto cleanup_ipfw; nf_register_hook(&preroute_ops); nf_register_hook(&postroute_ops); nf_register_hook(&forward_ops); nf_register_hook(&local_in_ops); return ret; cleanup: nf_unregister_hook(&preroute_ops); nf_unregister_hook(&postroute_ops); nf_unregister_hook(&forward_ops); nf_unregister_hook(&local_in_ops); masq_cleanup(); cleanup_ipfw: ipfw_init_or_cleanup(0); cleanup_sockopt: nf_unregister_sockopt(&sock_ops); cleanup_nothing: return ret; }
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; } #if defined(CONFIG_PROC_FS) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) ret = nf_conntrack_ipv4_compat_init(); if (ret < 0) goto cleanup_hooks; #endif return ret; #if defined(CONFIG_PROC_FS) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) cleanup_hooks: nf_unregister_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops)); #endif cleanup_pernet: unregister_pernet_subsys(&ipv4_net_ops); cleanup_sockopt: nf_unregister_sockopt(&so_getorigdst); return ret; }
static int __init init(void) { return nf_register_sockopt(&imp1_sockops); }
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 = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_tcp4); if (ret < 0) { printk("nf_conntrack_ipv4: can't register tcp.\n"); goto cleanup_sockopt; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udp4); if (ret < 0) { printk("nf_conntrack_ipv4: can't register udp.\n"); goto cleanup_tcp; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_icmp); if (ret < 0) { printk("nf_conntrack_ipv4: can't register icmp.\n"); goto cleanup_udp; } ret = nf_conntrack_l3proto_register(&nf_conntrack_l3proto_ipv4); if (ret < 0) { printk("nf_conntrack_ipv4: can't register ipv4\n"); goto cleanup_icmp; } ret = nf_register_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops)); if (ret < 0) { printk("nf_conntrack_ipv4: can't register hooks.\n"); goto cleanup_ipv4; } #if defined(CONFIG_PROC_FS) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) ret = nf_conntrack_ipv4_compat_init(); if (ret < 0) goto cleanup_hooks; #endif return ret; #if defined(CONFIG_PROC_FS) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) cleanup_hooks: nf_unregister_hooks(ipv4_conntrack_ops, ARRAY_SIZE(ipv4_conntrack_ops)); #endif cleanup_ipv4: nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv4); cleanup_icmp: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_icmp); cleanup_udp: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_udp4); cleanup_tcp: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_tcp4); cleanup_sockopt: nf_unregister_sockopt(&so_getorigdst); return ret; }
static int __init init_sockopt(void) { printk(KERN_INFO "sockopt: init_sockopt()\n"); return nf_register_sockopt(&test_sockops); }