From: Pasi Sjöholm <[email protected]>

__connman_ipconfig_newaddr() needs to return success / fail for
rtln.c:process_newaddr() so that we know if it's necessary
to run __connman_resolver_redo_servers().
---
 src/connman.h  |  2 +-
 src/ipconfig.c | 11 ++++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index d4765cc..cbd88d8 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -338,7 +338,7 @@ void __connman_ipconfig_newlink(int index, unsigned short 
type,
                                                        unsigned short mtu,
                                                struct rtnl_link_stats *stats);
 void __connman_ipconfig_dellink(int index, struct rtnl_link_stats *stats);
-void __connman_ipconfig_newaddr(int index, int family, const char *label,
+int __connman_ipconfig_newaddr(int index, int family, const char *label,
                                unsigned char prefixlen, const char *address);
 void __connman_ipconfig_deladdr(int index, int family, const char *label,
                                unsigned char prefixlen, const char *address);
diff --git a/src/ipconfig.c b/src/ipconfig.c
index 0f548e3..f8c148b 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -638,7 +638,7 @@ static inline gint check_duplicate_address(gconstpointer a, 
gconstpointer b)
        return g_strcmp0(addr1->local, addr2->local);
 }
 
-void __connman_ipconfig_newaddr(int index, int family, const char *label,
+int __connman_ipconfig_newaddr(int index, int family, const char *label,
                                unsigned char prefixlen, const char *address)
 {
        struct connman_ipdevice *ipdevice;
@@ -651,11 +651,11 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
 
        ipdevice = g_hash_table_lookup(ipdevice_hash, GINT_TO_POINTER(index));
        if (!ipdevice)
-               return;
+               return -ENXIO;
 
        ipaddress = connman_ipaddress_alloc(family);
        if (!ipaddress)
-               return;
+               return -ENOMEM;
 
        ipaddress->prefixlen = prefixlen;
        ipaddress->local = g_strdup(address);
@@ -663,7 +663,7 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
        if (g_slist_find_custom(ipdevice->address_list, ipaddress,
                                        check_duplicate_address)) {
                connman_ipaddress_free(ipaddress);
-               return;
+               return -EALREADY;
        }
 
        if (family == AF_INET)
@@ -671,7 +671,7 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
        else if (family == AF_INET6)
                type = CONNMAN_IPCONFIG_TYPE_IPV6;
        else
-               return;
+               return -EINVAL;
 
        ipdevice->address_list = g_slist_prepend(ipdevice->address_list,
                                                                ipaddress);
@@ -715,6 +715,7 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
 
 out:
        g_free(ifname);
+       return 0;
 }
 
 void __connman_ipconfig_deladdr(int index, int family, const char *label,
-- 
2.1.0

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to