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