iptables: Ignore module loading error
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Fri, 12 Oct 2012 11:01:31 +0000 (14:01 +0300)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Mon, 15 Oct 2012 06:36:26 +0000 (09:36 +0300)
In iptables 1.4.9 module loading gives an error even if the module
is built in. Ignore the loading errors because the missing iptables
support is noticed when trying to get the iptables socket options.

src/iptables.c

index ccd54acf27508714e19a8f03206f5d14751edede..147d604240802fb770b8a0ec1be18b2a04ead2b7 100644 (file)
@@ -1234,16 +1234,14 @@ static struct connman_iptables *iptables_init(char *table_name)
        DBG("%s", table_name);
 
        if (xtables_insmod("ip_tables", NULL, TRUE) != 0)
-               return NULL;
+               DBG("ip_tables module loading gives error but trying anyway");
 
        module = g_strconcat("iptable_", table_name, NULL);
        if (module == NULL)
                return NULL;
 
-       if (xtables_insmod(module, NULL, TRUE) != 0) {
-               g_free(module);
-               return NULL;
-       }
+       if (xtables_insmod(module, NULL, TRUE) != 0)
+               DBG("%s module loading gives error but trying anyway", module);
 
        g_free(module);
 
@@ -1266,8 +1264,11 @@ static struct connman_iptables *iptables_init(char *table_name)
        s = sizeof(*table->info);
        strcpy(table->info->name, table_name);
        if (getsockopt(table->ipt_sock, IPPROTO_IP, IPT_SO_GET_INFO,
-                                               table->info, &s) < 0)
+                                               table->info, &s) < 0) {
+               connman_error("iptables support missing error %d (%s)", errno,
+                       strerror(errno));
                goto err;
+       }
 
        table->blob_entries = g_try_malloc0(sizeof(struct ipt_get_entries) +
                                                table->info->size);