static int __init nf_conntrack_l3proto_ipv6_init(void) { int ret = 0; need_conntrack(); ret = nf_ct_frag6_init(); if (ret < 0) { printk("nf_conntrack_ipv6: can't initialize frag6.\n"); return ret; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_tcp6); if (ret < 0) { printk("nf_conntrack_ipv6: can't register tcp.\n"); goto cleanup_frag6; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udp6); if (ret < 0) { printk("nf_conntrack_ipv6: can't register udp.\n"); goto cleanup_tcp; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_icmpv6); if (ret < 0) { printk("nf_conntrack_ipv6: can't register icmpv6.\n"); goto cleanup_udp; } ret = nf_conntrack_l3proto_register(&nf_conntrack_l3proto_ipv6); if (ret < 0) { printk("nf_conntrack_ipv6: can't register ipv6\n"); goto cleanup_icmpv6; } ret = nf_register_hooks(ipv6_conntrack_ops, ARRAY_SIZE(ipv6_conntrack_ops)); if (ret < 0) { printk("nf_conntrack_ipv6: can't register pre-routing defrag " "hook.\n"); goto cleanup_ipv6; } return ret; cleanup_ipv6: nf_conntrack_l3proto_unregister(&nf_conntrack_l3proto_ipv6); cleanup_icmpv6: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_icmpv6); cleanup_udp: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_udp6); cleanup_tcp: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_tcp6); cleanup_frag6: nf_ct_frag6_cleanup(); return ret; }
static int __init nf_conntrack_proto_udplite_init(void) { int err; err = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udplite4); if (err < 0) goto err1; err = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udplite6); if (err < 0) goto err2; return 0; err2: nf_conntrack_l4proto_unregister(&nf_conntrack_l4proto_udplite4); err1: return err; }
static int __init nf_conntrack_proto_dccp_init(void) { int err; err = nf_conntrack_l4proto_register(&dccp_proto4); if (err < 0) goto err1; err = nf_conntrack_l4proto_register(&dccp_proto6); if (err < 0) goto err2; return 0; err2: nf_conntrack_l4proto_unregister(&dccp_proto4); err1: return err; }
static int ipv4_net_init(struct net *net) { int ret = 0; ret = nf_conntrack_l4proto_register(net, &nf_conntrack_l4proto_tcp4); if (ret < 0) { pr_err("nf_conntrack_l4proto_tcp4 :protocol register failed\n"); goto out_tcp; } ret = nf_conntrack_l4proto_register(net, &nf_conntrack_l4proto_udp4); if (ret < 0) { pr_err("nf_conntrack_l4proto_udp4 :protocol register failed\n"); goto out_udp; } ret = nf_conntrack_l4proto_register(net, &nf_conntrack_l4proto_icmp); if (ret < 0) { pr_err("nf_conntrack_l4proto_icmp4 :protocol register failed\n"); goto out_icmp; } ret = nf_conntrack_l3proto_register(net, &nf_conntrack_l3proto_ipv4); if (ret < 0) { pr_err("nf_conntrack_l3proto_ipv4 :protocol register failed\n"); goto out_ipv4; } return 0; out_ipv4: nf_conntrack_l4proto_unregister(net, &nf_conntrack_l4proto_icmp); out_icmp: nf_conntrack_l4proto_unregister(net, &nf_conntrack_l4proto_udp4); out_udp: nf_conntrack_l4proto_unregister(net, &nf_conntrack_l4proto_tcp4); out_tcp: 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; }
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) { pr_err("nf_conntrack_ipv4: can't register tcp.\n"); goto cleanup_sockopt; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_udp4); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register udp.\n"); goto cleanup_tcp; } ret = nf_conntrack_l4proto_register(&nf_conntrack_l4proto_icmp); if (ret < 0) { pr_err("nf_conntrack_ipv4: can't register icmp.\n"); goto cleanup_udp; } ret = nf_conntrack_l3proto_register(&nf_conntrack_l3proto_ipv4); if (ret < 0) { pr_err("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) { pr_err("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; }