コード例 #1
0
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);
}
コード例 #2
0
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);
}
コード例 #3
0
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;
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: ebtable_filter.c プロジェクト: Chong-Li/cse522
static void __net_exit frame_filter_net_exit(struct net *net)
{
	ebt_unregister_table(net, net->xt.frame_filter);
}
コード例 #6
0
static void __exit ebtable_broute_fini(void)
{
	rcu_assign_pointer(br_should_route_hook, NULL);
	synchronize_net();
	ebt_unregister_table(&broute_table);
}
コード例 #7
0
static void __net_exit broute_net_exit(struct net *net)
{
	ebt_unregister_table(net->xt.broute_table);
}
コード例 #8
0
static void __net_exit frame_nat_net_exit(struct net *net)
{
	ebt_unregister_table(net->xt.frame_nat);
}
コード例 #9
0
static void __exit ebtable_broute_fini(void)
{
	br_should_route_hook = NULL;
	synchronize_net();
	ebt_unregister_table(&broute_table);
}