Пример #1
0
static int init(void)
{
	struct config_prefix6 pool6;
	struct pool4_entry_usr entry;
	int error;

	pool6.set = true;
	pool6.prefix.len = 96;
	error = str_to_addr6("3::", &pool6.prefix.addr);
	if (error)
		return error;

	error = xlator_add(FW_NETFILTER, INAME_DEFAULT, &pool6, &jool);
	if (error)
		return error;

	entry.mark = 0;
	entry.iterations = 0;
	entry.flags = ITERATIONS_SET | ITERATIONS_INFINITE;
	error = str_to_addr4("192.0.2.128", &entry.range.prefix.addr);
	if (error)
		goto fail;
	entry.range.prefix.len = 32;
	entry.range.ports.min = 1024;
	entry.range.ports.max = 1024;

	entry.proto = L4PROTO_TCP;
	error = pool4db_add(jool.nat64.pool4, &entry);
	if (error)
		goto fail;
	entry.proto = L4PROTO_UDP;
	error = pool4db_add(jool.nat64.pool4, &entry);
	if (error)
		goto fail;
	entry.proto = L4PROTO_ICMP;
	error = pool4db_add(jool.nat64.pool4, &entry);
	if (error)
		goto fail;

	return 0;

fail:
	xlator_put(&jool);
	xlator_rm(INAME_DEFAULT);
	return error;
}
Пример #2
0
static int __init jool_init(void)
{
	int error;

	log_debug("Inserting %s...", xlat_get_name());

	/* Init Jool's submodules. */
	error = xlator_init();
	if (error)
		goto xlator_fail;
	error = logtime_init();
	if (error)
		goto log_time_fail;
	error = nlhandler_init();
	if (error)
		goto nlhandler_fail;

	/* This needs to be last! (except for the hook registering.) */
	error = add_instance();
	if (error)
		goto instance_fail;

	/* Hook Jool to Netfilter. */
	error = nf_register_hooks(nfho, ARRAY_SIZE(nfho));
	if (error)
		goto nf_register_hooks_fail;

	/* Yay */
	log_info("%s v" JOOL_VERSION_STR " module inserted.", xlat_get_name());
	return 0;

nf_register_hooks_fail:
	xlator_rm();
instance_fail:
	nlhandler_destroy();
nlhandler_fail:
	logtime_destroy();
log_time_fail:
	xlator_destroy();
xlator_fail:
	return error;
}
Пример #3
0
static void clean(void)
{
	icmp64_pop();
	xlator_put(&jool);
	xlator_rm(INAME_DEFAULT);
}