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"); }
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"); }
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"); }
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"); }
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"); }