static void __exit fini(void) { int i; for (i = 0; i < sizeof(ebt_ops_filter) / sizeof(ebt_ops_filter[0]); i++) nf_unregister_hook(&ebt_ops_filter[i]); ebt_unregister_table(&frame_filter); }
static void __exit ebtable_filter_fini(void) { int i; for (i = 0; i < ARRAY_SIZE(ebt_ops_filter); i++) nf_unregister_hook(&ebt_ops_filter[i]); ebt_unregister_table(&frame_filter); }
static int __init ebtable_filter_init(void) { int i, j, ret; ret = ebt_register_table(&frame_filter); if (ret < 0) return ret; for (i = 0; i < ARRAY_SIZE(ebt_ops_filter); i++) if ((ret = nf_register_hook(&ebt_ops_filter[i])) < 0) goto cleanup; return ret; cleanup: for (j = 0; j < i; j++) nf_unregister_hook(&ebt_ops_filter[j]); ebt_unregister_table(&frame_filter); return ret; }
static int __init init(void) { int i, ret, j; ret = ebt_register_table(&frame_nat); if (ret < 0) return ret; for (i = 0; i < sizeof(ebt_ops_nat) / sizeof(ebt_ops_nat[0]); i++) if ((ret = nf_register_hook(&ebt_ops_nat[i])) < 0) goto cleanup; return ret; cleanup: for (j = 0; j < i; j++) nf_unregister_hook(&ebt_ops_nat[j]); ebt_unregister_table(&frame_nat); return ret; }
static void __net_exit frame_filter_net_exit(struct net *net) { ebt_unregister_table(net, net->xt.frame_filter); }
static void __exit ebtable_broute_fini(void) { rcu_assign_pointer(br_should_route_hook, NULL); synchronize_net(); ebt_unregister_table(&broute_table); }
static void __net_exit broute_net_exit(struct net *net) { ebt_unregister_table(net->xt.broute_table); }
static void __net_exit frame_nat_net_exit(struct net *net) { ebt_unregister_table(net->xt.frame_nat); }
static void __exit ebtable_broute_fini(void) { br_should_route_hook = NULL; synchronize_net(); ebt_unregister_table(&broute_table); }