static int __init nf_nat_init(void) { int ret; ret = rhltable_init(&nf_nat_bysource_table, &nf_nat_bysource_params); if (ret) return ret; ret = nf_ct_extend_register(&nat_extend); if (ret < 0) { rhltable_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); 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: rhltable_destroy(&nf_nat_bysource_table); nf_ct_extend_unregister(&nat_extend); return ret; }
int nf_conntrack_tstamp_init(struct net *net) { int ret; net->ct.sysctl_tstamp = nf_ct_tstamp; if (net_eq(net, &init_net)) { ret = nf_ct_extend_register(&tstamp_extend); if (ret < 0) { printk(KERN_ERR "nf_ct_tstamp: Unable to register " "extension\n"); goto out_extend_register; } } ret = nf_conntrack_tstamp_init_sysctl(net); if (ret < 0) goto out_sysctl; return 0; out_sysctl: if (net_eq(net, &init_net)) nf_ct_extend_unregister(&tstamp_extend); out_extend_register: return ret; }
int nf_conntrack_timeout_init(void) { int ret = nf_ct_extend_register(&timeout_extend); if (ret < 0) pr_err("nf_ct_timeout: Unable to register timeout extension.\n"); return ret; }
int nf_conntrack_acct_init(void) { int ret = nf_ct_extend_register(&acct_extend); if (ret < 0) pr_err("nf_conntrack_acct: Unable to register extension\n"); return ret; }
int nf_conntrack_tstamp_init(void) { int ret; ret = nf_ct_extend_register(&tstamp_extend); if (ret < 0) pr_err("Unable to register extension\n"); return ret; }
static int __init synproxy_core_init(void) { int err; err = nf_ct_extend_register(&nf_ct_synproxy_extend); if (err < 0) goto err1; err = register_pernet_subsys(&synproxy_net_ops); if (err < 0) goto err2; return 0; err2: nf_ct_extend_unregister(&nf_ct_synproxy_extend); err1: return err; }
int nf_conntrack_seqadj_init(void) { return nf_ct_extend_register(&nf_ct_seqadj_extend); }