Пример #1
0
static int enable_nat(const char *interface)
{
	int err;

	if (interface == NULL)
		return 0;

	/* Enable IPv4 forwarding */
	err = enable_ip_forward(TRUE);
	if (err < 0)
		return err;

	/* POSTROUTING flush */
	err = __connman_iptables_command("-t nat -F POSTROUTING");
	if (err < 0)
		return err;

	/* Enable masquerading */
	err = __connman_iptables_command("-t nat -A POSTROUTING "
					"-o %s -j MASQUERADE", interface);
	if (err < 0)
		return err;

	return __connman_iptables_commit("nat");
}
Пример #2
0
static int enable_nat(struct connman_nat *nat)
{
	int err;

	g_free(nat->interface);
	nat->interface = g_strdup(default_interface);

	if (nat->interface == NULL)
		return 0;

	/* Enable masquerading */
	if(nat->address) {

		err = __connman_iptables_command("-t nat -A POSTROUTING "
					"-s %s/%d -o %s -j MASQUERADE",
					nat->address,
					nat->prefixlen,
					nat->interface);
		if (err < 0)
			return err;
	}
	else {

		err = __connman_iptables_command("-t nat -A POSTROUTING "
					"-o %s -j MASQUERADE",
					nat->interface);
		if (err < 0)
			return err;
	}

	return __connman_iptables_commit("nat");
}
Пример #3
0
static void disable_nat(struct connman_nat *nat)
{
	int err;

	if (nat->interface == NULL)
		return;

	/* Disable masquerading */
	if(nat->address) {

		err = __connman_iptables_command("-t nat -D POSTROUTING "
						"-s %s/%d -o %s -j MASQUERADE",
						nat->address,
						nat->prefixlen,
						nat->interface);
		if (err < 0)
			return;
	}
	else {

		err = __connman_iptables_command("-t nat -D POSTROUTING "
						"-o %s -j MASQUERADE",
						nat->interface);
		if (err < 0)
			return;
	}

	__connman_iptables_commit("nat");
}
Пример #4
0
static void flush_nat(void)
{
	int err;

	err = __connman_iptables_command("-t nat -F POSTROUTING");
	if (err < 0) {
		DBG("Flushing the nat table failed");

		return;
	}

	__connman_iptables_commit("nat");
}
Пример #5
0
static void disable_nat(const char *interface)
{
	int err;

	/* Disable IPv4 forwarding */
	enable_ip_forward(FALSE);

	/* POSTROUTING flush */
	err = __connman_iptables_command("-t nat -F POSTROUTING");
	if (err < 0)
		return;

	__connman_iptables_commit("nat");
}