static int __init arptable_filter_init(void) { int ret; arpfilter_ops = xt_hook_ops_alloc(&packet_filter, arptable_filter_hook); if (IS_ERR(arpfilter_ops)) return PTR_ERR(arpfilter_ops); ret = register_pernet_subsys(&arptable_filter_net_ops); if (ret < 0) { kfree(arpfilter_ops); return ret; } return ret; }
static int __init ip6table_security_init(void) { int ret; sectbl_ops = xt_hook_ops_alloc(&security_table, ip6table_security_hook); if (IS_ERR(sectbl_ops)) return PTR_ERR(sectbl_ops); ret = register_pernet_subsys(&ip6table_security_net_ops); if (ret < 0) { kfree(sectbl_ops); return ret; } ret = ip6table_security_table_init(&init_net); if (ret) { unregister_pernet_subsys(&ip6table_security_net_ops); kfree(sectbl_ops); } 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; }