Updated connman to version 1.35
[platform/upstream/connman.git] / src / tethering.c
index c0c9743..891ee51 100755 (executable)
@@ -346,7 +346,7 @@ static void tethering_restart(struct connman_ippool *pool, void *user_data)
        __connman_tethering_set_enabled();
 }
 
-void __connman_tethering_set_enabled(void)
+int __connman_tethering_set_enabled(void)
 {
        int index;
        int err;
@@ -362,12 +362,12 @@ void __connman_tethering_set_enabled(void)
        DBG("enabled %d", tethering_enabled + 1);
 
        if (__sync_fetch_and_add(&tethering_enabled, 1) != 0)
-               return;
+               return 0;
 
        err = __connman_bridge_create(BRIDGE_NAME);
        if (err < 0) {
                __sync_fetch_and_sub(&tethering_enabled, 1);
-               return;
+               return -EOPNOTSUPP;
        }
 
        index = connman_inet_ifindex(BRIDGE_NAME);
@@ -377,7 +377,7 @@ void __connman_tethering_set_enabled(void)
                connman_error("Fail to create IP pool");
                __connman_bridge_remove(BRIDGE_NAME);
                __sync_fetch_and_sub(&tethering_enabled, 1);
-               return;
+               return -EADDRNOTAVAIL;
        }
 
        gateway = __connman_ippool_get_gateway(dhcp_ippool);
@@ -393,7 +393,7 @@ void __connman_tethering_set_enabled(void)
                __connman_ippool_unref(dhcp_ippool);
                __connman_bridge_remove(BRIDGE_NAME);
                __sync_fetch_and_sub(&tethering_enabled, 1);
-               return;
+               return -EADDRNOTAVAIL;
        }
 
        ns = connman_setting_get_string_list("FallbackNameservers");
@@ -429,7 +429,7 @@ void __connman_tethering_set_enabled(void)
                __connman_ippool_unref(dhcp_ippool);
                __connman_bridge_remove(BRIDGE_NAME);
                __sync_fetch_and_sub(&tethering_enabled, 1);
-               return;
+               return -EOPNOTSUPP;
        }
 
        prefixlen = connman_ipaddress_calc_netmask_len(subnet_mask);
@@ -441,7 +441,7 @@ void __connman_tethering_set_enabled(void)
                __connman_ippool_unref(dhcp_ippool);
                __connman_bridge_remove(BRIDGE_NAME);
                __sync_fetch_and_sub(&tethering_enabled, 1);
-               return;
+               return -EOPNOTSUPP;
        }
 
        err = __connman_ipv6pd_setup(BRIDGE_NAME);
@@ -450,6 +450,8 @@ void __connman_tethering_set_enabled(void)
                        strerror(-err));
 
        DBG("tethering started");
+
+       return 0;
 }
 
 void __connman_tethering_set_disabled(void)
@@ -670,6 +672,8 @@ error:
        close(fd);
        g_free(iface);
        g_free(path);
+       if (pn)
+               g_free(pn->owner);
        g_free(pn);
        return err;
 }