diff options
Diffstat (limited to 'tools/iptables-test.c')
-rw-r--r-- | tools/iptables-test.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/tools/iptables-test.c b/tools/iptables-test.c index a7193c2e..887fd3ce 100644 --- a/tools/iptables-test.c +++ b/tools/iptables-test.c @@ -1137,9 +1137,22 @@ static int add_entry(struct ipt_entry *entry, struct connman_iptables *table) static struct connman_iptables *connman_iptables_init(const char *table_name) { - struct connman_iptables *table; + struct connman_iptables *table = NULL; + char *module = NULL; socklen_t s; + if (xtables_insmod("ip_tables", NULL, TRUE) != 0) + goto err; + + module = g_strconcat("iptable_", table_name, NULL); + if (module == NULL) + goto err; + + if (xtables_insmod(module, NULL, TRUE) != 0) + goto err; + + g_free(module); + table = g_try_new0(struct connman_iptables, 1); if (table == NULL) return NULL; @@ -1182,10 +1195,10 @@ static struct connman_iptables *connman_iptables_init(const char *table_name) table->blob_entries->size, add_entry, table); - return table; err: + g_free(module); connman_iptables_cleanup(table); |