summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nat.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/nat.c b/src/nat.c
index 236f5454..5447eb71 100644
--- a/src/nat.c
+++ b/src/nat.c
@@ -59,6 +59,7 @@ static int enable_ip_forward(connman_bool_t enable)
static int enable_nat(struct connman_nat *nat)
{
+ char *cmd;
int err;
g_free(nat->interface);
@@ -68,11 +69,12 @@ static int enable_nat(struct connman_nat *nat)
return 0;
/* Enable masquerading */
- err = __connman_iptables_command("-t nat -A POSTROUTING "
- "-s %s/%d -o %s -j MASQUERADE",
+ cmd = g_strdup_printf("-s %s/%d -o %s -j MASQUERADE",
nat->address,
nat->prefixlen,
nat->interface);
+ err = __connman_iptables_append("nat", "POSTROUTING", cmd);
+ g_free(cmd);
if (err < 0)
return err;
@@ -81,17 +83,19 @@ static int enable_nat(struct connman_nat *nat)
static void disable_nat(struct connman_nat *nat)
{
+ char *cmd;
int err;
if (nat->interface == NULL)
return;
/* Disable masquerading */
- err = __connman_iptables_command("-t nat -D POSTROUTING "
- "-s %s/%d -o %s -j MASQUERADE",
+ cmd = g_strdup_printf("-s %s/%d -o %s -j MASQUERADE",
nat->address,
nat->prefixlen,
nat->interface);
+ err = __connman_iptables_delete("nat", "POSTROUTING", cmd);
+ g_free(cmd);
if (err < 0)
return;