When interface name is needed, then just get it from index.
This should minimize the race conditions when interface name is
changed.
---
 src/connman.h  |  17 +++--
 src/ipconfig.c | 193 ++++++++++++++++++++++++++++++++-------------------------
 src/ipv6pd.c   |   9 +--
 src/service.c  |  35 ++++++-----
 4 files changed, 143 insertions(+), 111 deletions(-)

diff --git a/src/connman.h b/src/connman.h
index e323385..0e3ec47 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -275,14 +275,14 @@ struct connman_ipaddress {
 };
 
 struct connman_ipconfig_ops {
-       void (*up) (struct connman_ipconfig *ipconfig);
-       void (*down) (struct connman_ipconfig *ipconfig);
-       void (*lower_up) (struct connman_ipconfig *ipconfig);
-       void (*lower_down) (struct connman_ipconfig *ipconfig);
-       void (*ip_bound) (struct connman_ipconfig *ipconfig);
-       void (*ip_release) (struct connman_ipconfig *ipconfig);
-       void (*route_set) (struct connman_ipconfig *ipconfig);
-       void (*route_unset) (struct connman_ipconfig *ipconfig);
+       void (*up) (struct connman_ipconfig *ipconfig, const char *ifname);
+       void (*down) (struct connman_ipconfig *ipconfig, const char *ifname);
+       void (*lower_up) (struct connman_ipconfig *ipconfig, const char 
*ifname);
+       void (*lower_down) (struct connman_ipconfig *ipconfig, const char 
*ifname);
+       void (*ip_bound) (struct connman_ipconfig *ipconfig, const char 
*ifname);
+       void (*ip_release) (struct connman_ipconfig *ipconfig, const char 
*ifname);
+       void (*route_set) (struct connman_ipconfig *ipconfig, const char 
*ifname);
+       void (*route_unset) (struct connman_ipconfig *ipconfig, const char 
*ifname);
 };
 
 struct connman_ipconfig *__connman_ipconfig_create(int index,
@@ -304,7 +304,6 @@ void *__connman_ipconfig_get_data(struct connman_ipconfig 
*ipconfig);
 void __connman_ipconfig_set_data(struct connman_ipconfig *ipconfig, void 
*data);
 
 int __connman_ipconfig_get_index(struct connman_ipconfig *ipconfig);
-const char *__connman_ipconfig_get_ifname(struct connman_ipconfig *ipconfig);
 
 void __connman_ipconfig_set_ops(struct connman_ipconfig *ipconfig,
                                const struct connman_ipconfig_ops *ops);
diff --git a/src/ipconfig.c b/src/ipconfig.c
index 68ece54..9c29e62 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -62,7 +62,6 @@ struct connman_ipconfig {
 
 struct connman_ipdevice {
        int index;
-       char *ifname;
        unsigned short type;
        unsigned int flags;
        char *address;
@@ -234,6 +233,13 @@ static void set_ipv6_state(gchar *ifname, bool enable)
        fclose(f);
 }
 
+static void set_ipv6_state_by_index(int ifindex, bool enable)
+{
+       char *ifname = connman_inet_ifname(ifindex);
+       set_ipv6_state(ifname, enable);
+       g_free(ifname);
+}
+
 static int get_ipv6_privacy(gchar *ifname)
 {
        gchar *path;
@@ -295,6 +301,13 @@ static void set_ipv6_privacy(gchar *ifname, int value)
        fclose(f);
 }
 
+static void set_ipv6_privacy_by_index(int ifindex, int value)
+{
+       char *ifname = connman_inet_ifname(ifindex);
+       set_ipv6_privacy(ifname, value);
+       g_free(ifname);
+}
+
 static int get_rp_filter(void)
 {
        FILE *f;
@@ -360,6 +373,8 @@ bool __connman_ipconfig_ipv6_privacy_enabled(struct 
connman_ipconfig *ipconfig)
 bool __connman_ipconfig_ipv6_is_enabled(struct connman_ipconfig *ipconfig)
 {
        struct connman_ipdevice *ipdevice;
+       char *ifname;
+       bool ret;
 
        if (!ipconfig)
                return false;
@@ -369,15 +384,19 @@ bool __connman_ipconfig_ipv6_is_enabled(struct 
connman_ipconfig *ipconfig)
        if (!ipdevice)
                return false;
 
-       return get_ipv6_state(ipdevice->ifname);
+       ifname = connman_inet_ifname(ipconfig->index);
+       ret = get_ipv6_state(ifname);
+       g_free(ifname);
+
+       return ret;
 }
 
 static void free_ipdevice(gpointer data)
 {
        struct connman_ipdevice *ipdevice = data;
+       char *ifname = connman_inet_ifname(ipdevice->index);
 
-       connman_info("%s {remove} index %d", ipdevice->ifname,
-                                                       ipdevice->index);
+       connman_info("%s {remove} index %d", ifname, ipdevice->index);
 
        if (ipdevice->config_ipv4) {
                __connman_ipconfig_unref(ipdevice->config_ipv4);
@@ -396,10 +415,10 @@ static void free_ipdevice(gpointer data)
 
        g_free(ipdevice->address);
 
-       set_ipv6_state(ipdevice->ifname, ipdevice->ipv6_enabled);
-       set_ipv6_privacy(ipdevice->ifname, ipdevice->ipv6_privacy);
+       set_ipv6_state(ifname, ipdevice->ipv6_enabled);
+       set_ipv6_privacy(ifname, ipdevice->ipv6_privacy);
 
-       g_free(ipdevice->ifname);
+       g_free(ifname);
        g_free(ipdevice);
 }
 
@@ -428,15 +447,20 @@ static void update_stats(struct connman_ipdevice 
*ipdevice,
                                                struct rtnl_link_stats *stats)
 {
        struct connman_service *service;
+       char *ifname;
 
        if (stats->rx_packets == 0 && stats->tx_packets == 0)
                return;
 
-       connman_info("%s {RX} %u packets %u bytes", ipdevice->ifname,
+       ifname = connman_inet_ifname(ipdevice->index);
+
+       connman_info("%s {RX} %u packets %u bytes", ifname,
                                        stats->rx_packets, stats->rx_bytes);
-       connman_info("%s {TX} %u packets %u bytes", ipdevice->ifname,
+       connman_info("%s {TX} %u packets %u bytes", ifname,
                                        stats->tx_packets, stats->tx_bytes);
 
+       g_free(ifname);
+
        if (!ipdevice->config_ipv4 && !ipdevice->config_ipv6)
                return;
 
@@ -476,43 +500,34 @@ void __connman_ipconfig_newlink(int index, unsigned short 
type,
        GString *str;
        bool up = false, down = false;
        bool lower_up = false, lower_down = false;
+       char *ifname;
 
        DBG("index %d", index);
 
        if (type == ARPHRD_LOOPBACK)
                return;
 
-       ipdevice = g_hash_table_lookup(ipdevice_hash, GINT_TO_POINTER(index));
-       if (ipdevice) {
-               char *ifname = connman_inet_ifname(index);
-               if (g_strcmp0(ipdevice->ifname, ifname) != 0) {
-                       DBG("interface name changed %s -> %s",
-                               ipdevice->ifname, ifname);
-
-                       g_free(ipdevice->ifname);
-                       ipdevice->ifname = ifname;
-               } else
-                       g_free(ifname);
+       ifname = connman_inet_ifname(index);
 
+       ipdevice = g_hash_table_lookup(ipdevice_hash, GINT_TO_POINTER(index));
+       if (ipdevice)
                goto update;
-       }
 
        ipdevice = g_try_new0(struct connman_ipdevice, 1);
        if (!ipdevice)
-               return;
+               goto out;
 
        ipdevice->index = index;
-       ipdevice->ifname = connman_inet_ifname(index);
        ipdevice->type = type;
 
-       ipdevice->ipv6_enabled = get_ipv6_state(ipdevice->ifname);
-       ipdevice->ipv6_privacy = get_ipv6_privacy(ipdevice->ifname);
+       ipdevice->ipv6_enabled = get_ipv6_state(ifname);
+       ipdevice->ipv6_privacy = get_ipv6_privacy(ifname);
 
        ipdevice->address = g_strdup(address);
 
        g_hash_table_insert(ipdevice_hash, GINT_TO_POINTER(index), ipdevice);
 
-       connman_info("%s {create} index %d type %d <%s>", ipdevice->ifname,
+       connman_info("%s {create} index %d type %d <%s>", ifname,
                                                index, type, type2str(type));
 
 update:
@@ -521,7 +536,7 @@ update:
        update_stats(ipdevice, stats);
 
        if (flags == ipdevice->flags)
-               return;
+               goto out;
 
        if ((ipdevice->flags & IFF_UP) != (flags & IFF_UP)) {
                if (flags & IFF_UP)
@@ -543,7 +558,7 @@ update:
 
        str = g_string_new(NULL);
        if (!str)
-               return;
+               goto out;
 
        if (flags & IFF_UP)
                g_string_append(str, "UP");
@@ -556,8 +571,7 @@ update:
        if (flags & IFF_LOWER_UP)
                g_string_append(str, ",LOWER_UP");
 
-       connman_info("%s {update} flags %u <%s>", ipdevice->ifname,
-                                                       flags, str->str);
+       connman_info("%s {update} flags %u <%s>", ifname, flags, str->str);
 
        g_string_free(str, TRUE);
 
@@ -572,26 +586,30 @@ update:
                        continue;
 
                if (up && ipconfig->ops->up)
-                       ipconfig->ops->up(ipconfig);
+                       ipconfig->ops->up(ipconfig, ifname);
                if (lower_up && ipconfig->ops->lower_up)
-                       ipconfig->ops->lower_up(ipconfig);
+                       ipconfig->ops->lower_up(ipconfig, ifname);
 
                if (lower_down && ipconfig->ops->lower_down)
-                       ipconfig->ops->lower_down(ipconfig);
+                       ipconfig->ops->lower_down(ipconfig, ifname);
                if (down && ipconfig->ops->down)
-                       ipconfig->ops->down(ipconfig);
+                       ipconfig->ops->down(ipconfig, ifname);
        }
 
        if (lower_up)
                __connman_ipconfig_lower_up(ipdevice);
        if (lower_down)
                __connman_ipconfig_lower_down(ipdevice);
+
+out:
+       g_free(ifname);
 }
 
 void __connman_ipconfig_dellink(int index, struct rtnl_link_stats *stats)
 {
        struct connman_ipdevice *ipdevice;
        GList *list;
+       char *ifname;
 
        DBG("index %d", index);
 
@@ -600,6 +618,7 @@ void __connman_ipconfig_dellink(int index, struct 
rtnl_link_stats *stats)
                return;
 
        update_stats(ipdevice, stats);
+       ifname = connman_inet_ifname(index);
 
        for (list = g_list_first(ipconfig_list); list;
                                                list = g_list_next(list)) {
@@ -614,11 +633,13 @@ void __connman_ipconfig_dellink(int index, struct 
rtnl_link_stats *stats)
                        continue;
 
                if (ipconfig->ops->lower_down)
-                       ipconfig->ops->lower_down(ipconfig);
+                       ipconfig->ops->lower_down(ipconfig, ifname);
                if (ipconfig->ops->down)
-                       ipconfig->ops->down(ipconfig);
+                       ipconfig->ops->down(ipconfig, ifname);
        }
 
+       g_free(ifname);
+
        __connman_ipconfig_lower_down(ipdevice);
 
        g_hash_table_remove(ipdevice_hash, GINT_TO_POINTER(index));
@@ -642,6 +663,7 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
        struct connman_ipaddress *ipaddress;
        enum connman_ipconfig_type type;
        GList *list;
+       char *ifname;
 
        DBG("index %d", index);
 
@@ -672,8 +694,9 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
        ipdevice->address_list = g_slist_prepend(ipdevice->address_list,
                                                                ipaddress);
 
+       ifname = connman_inet_ifname(index);
        connman_info("%s {add} address %s/%u label %s family %d",
-               ipdevice->ifname, address, prefixlen, label, family);
+               ifname, address, prefixlen, label, family);
 
        if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
                __connman_ippool_newaddr(index, address, prefixlen);
@@ -686,7 +709,7 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
                connman_ipaddress_copy_address(ipdevice->config_ipv6->system,
                                        ipaddress);
        else
-               return;
+               goto out;
 
        if ((ipdevice->flags & (IFF_RUNNING | IFF_LOWER_UP)) != (IFF_RUNNING | 
IFF_LOWER_UP))
                return;
@@ -705,8 +728,11 @@ void __connman_ipconfig_newaddr(int index, int family, 
const char *label,
                        continue;
 
                if (ipconfig->ops->ip_bound)
-                       ipconfig->ops->ip_bound(ipconfig);
+                       ipconfig->ops->ip_bound(ipconfig, ifname);
        }
+
+out:
+       g_free(ifname);
 }
 
 void __connman_ipconfig_deladdr(int index, int family, const char *label,
@@ -716,6 +742,7 @@ void __connman_ipconfig_deladdr(int index, int family, 
const char *label,
        struct connman_ipaddress *ipaddress;
        enum connman_ipconfig_type type;
        GList *list;
+       char *ifname;
 
        DBG("index %d", index);
 
@@ -743,14 +770,15 @@ void __connman_ipconfig_deladdr(int index, int family, 
const char *label,
        connman_ipaddress_clear(ipaddress);
        g_free(ipaddress);
 
-       connman_info("%s {del} address %s/%u label %s", ipdevice->ifname,
+       ifname = connman_inet_ifname(index);
+       connman_info("%s {del} address %s/%u label %s", ifname,
                                                address, prefixlen, label);
 
        if ((ipdevice->flags & (IFF_RUNNING | IFF_LOWER_UP)) != (IFF_RUNNING | 
IFF_LOWER_UP))
-               return;
+               goto out;
 
        if (g_slist_length(ipdevice->address_list) > 0)
-               return;
+               goto out;
 
        for (list = g_list_first(ipconfig_list); list;
                                                list = g_list_next(list)) {
@@ -766,14 +794,18 @@ void __connman_ipconfig_deladdr(int index, int family, 
const char *label,
                        continue;
 
                if (ipconfig->ops->ip_release)
-                       ipconfig->ops->ip_release(ipconfig);
+                       ipconfig->ops->ip_release(ipconfig, ifname);
        }
+
+out:
+       g_free(ifname);
 }
 
 void __connman_ipconfig_newroute(int index, int family, unsigned char scope,
                                        const char *dst, const char *gateway)
 {
        struct connman_ipdevice *ipdevice;
+       char *ifname;
 
        DBG("index %d", index);
 
@@ -781,6 +813,8 @@ void __connman_ipconfig_newroute(int index, int family, 
unsigned char scope,
        if (!ipdevice)
                return;
 
+       ifname = connman_inet_ifname(index);
+
        if (scope == 0 && (g_strcmp0(dst, "0.0.0.0") == 0 ||
                                                g_strcmp0(dst, "::") == 0)) {
                GList *config_list;
@@ -809,7 +843,7 @@ void __connman_ipconfig_newroute(int index, int family, 
unsigned char scope,
                                        g_strdup(gateway);
                        }
                } else
-                       return;
+                       goto out;
 
                for (config_list = g_list_first(ipconfig_list); config_list;
                                        config_list = g_list_next(config_list)) 
{
@@ -825,19 +859,22 @@ void __connman_ipconfig_newroute(int index, int family, 
unsigned char scope,
                                continue;
 
                        if (ipconfig->ops->route_set)
-                               ipconfig->ops->route_set(ipconfig);
+                               ipconfig->ops->route_set(ipconfig, ifname);
                }
        }
 
        connman_info("%s {add} route %s gw %s scope %u <%s>",
-                                       ipdevice->ifname, dst, gateway,
-                                               scope, scope2str(scope));
+               ifname, dst, gateway, scope, scope2str(scope));
+
+out:
+       g_free(ifname);
 }
 
 void __connman_ipconfig_delroute(int index, int family, unsigned char scope,
                                        const char *dst, const char *gateway)
 {
        struct connman_ipdevice *ipdevice;
+       char *ifname;
 
        DBG("index %d", index);
 
@@ -845,6 +882,8 @@ void __connman_ipconfig_delroute(int index, int family, 
unsigned char scope,
        if (!ipdevice)
                return;
 
+       ifname = connman_inet_ifname(index);
+
        if (scope == 0 && (g_strcmp0(dst, "0.0.0.0") == 0 ||
                                                g_strcmp0(dst, "::") == 0)) {
                GList *config_list;
@@ -871,7 +910,7 @@ void __connman_ipconfig_delroute(int index, int family, 
unsigned char scope,
                                ipdevice->config_ipv4->system->gateway = NULL;
                        }
                } else
-                       return;
+                       goto out;
 
                for (config_list = g_list_first(ipconfig_list); config_list;
                                        config_list = g_list_next(config_list)) 
{
@@ -887,13 +926,15 @@ void __connman_ipconfig_delroute(int index, int family, 
unsigned char scope,
                                continue;
 
                        if (ipconfig->ops->route_unset)
-                               ipconfig->ops->route_unset(ipconfig);
+                               ipconfig->ops->route_unset(ipconfig, ifname);
                }
        }
 
        connman_info("%s {del} route %s gw %s scope %u <%s>",
-                                       ipdevice->ifname, dst, gateway,
-                                               scope, scope2str(scope));
+               ifname, dst, gateway, scope, scope2str(scope));
+
+out:
+       g_free(ifname);
 }
 
 void __connman_ipconfig_foreach(void (*function) (int index, void *user_data),
@@ -1284,30 +1325,6 @@ int __connman_ipconfig_get_index(struct connman_ipconfig 
*ipconfig)
 }
 
 /**
- * connman_ipconfig_get_ifname:
- * @ipconfig: ipconfig structure
- *
- * Get interface name
- */
-const char *__connman_ipconfig_get_ifname(struct connman_ipconfig *ipconfig)
-{
-       struct connman_ipdevice *ipdevice;
-
-       if (!ipconfig)
-               return NULL;
-
-       if (ipconfig->index < 0)
-               return NULL;
-
-       ipdevice = g_hash_table_lookup(ipdevice_hash,
-                                       GINT_TO_POINTER(ipconfig->index));
-       if (!ipdevice)
-               return NULL;
-
-       return ipdevice->ifname;
-}
-
-/**
  * connman_ipconfig_set_ops:
  * @ipconfig: ipconfig structure
  * @ops: operation callbacks
@@ -1516,7 +1533,7 @@ static void disable_ipv6(struct connman_ipconfig 
*ipconfig)
        if (!ipdevice)
                return;
 
-       set_ipv6_state(ipdevice->ifname, false);
+       set_ipv6_state_by_index(ipdevice->index, false);
 }
 
 static void enable_ipv6(struct connman_ipconfig *ipconfig)
@@ -1531,10 +1548,10 @@ static void enable_ipv6(struct connman_ipconfig 
*ipconfig)
                return;
 
        if (ipconfig->method == CONNMAN_IPCONFIG_METHOD_AUTO)
-               set_ipv6_privacy(ipdevice->ifname,
+               set_ipv6_privacy_by_index(ipdevice->index,
                                ipconfig->ipv6_privacy_config);
 
-       set_ipv6_state(ipdevice->ifname, true);
+       set_ipv6_state_by_index(ipdevice->index, true);
 }
 
 void __connman_ipconfig_enable_ipv6(struct connman_ipconfig *ipconfig)
@@ -1578,6 +1595,7 @@ int __connman_ipconfig_enable(struct connman_ipconfig 
*ipconfig)
        bool up = false, down = false;
        bool lower_up = false, lower_down = false;
        enum connman_ipconfig_type type;
+       char *ifname;
 
        DBG("ipconfig %p", ipconfig);
 
@@ -1642,15 +1660,19 @@ int __connman_ipconfig_enable(struct connman_ipconfig 
*ipconfig)
        else if ((ipdevice->flags & (IFF_RUNNING | IFF_LOWER_UP)) == 0)
                lower_down = true;
 
+       ifname = connman_inet_ifname(ipconfig->index);
+
        if (up && ipconfig->ops->up)
-               ipconfig->ops->up(ipconfig);
+               ipconfig->ops->up(ipconfig, ifname);
        if (lower_up && ipconfig->ops->lower_up)
-               ipconfig->ops->lower_up(ipconfig);
+               ipconfig->ops->lower_up(ipconfig, ifname);
 
        if (lower_down && ipconfig->ops->lower_down)
-               ipconfig->ops->lower_down(ipconfig);
+               ipconfig->ops->lower_down(ipconfig, ifname);
        if (down && ipconfig->ops->down)
-               ipconfig->ops->down(ipconfig);
+               ipconfig->ops->down(ipconfig, ifname);
+
+       g_free(ifname);
 
        return 0;
 }
@@ -2151,9 +2173,12 @@ void __connman_ipconfig_append_ethernet(struct 
connman_ipconfig *ipconfig,
        if (!ipdevice)
                return;
 
-       if (ipdevice->ifname)
+       if (ipconfig->index >= 0) {
+               char *ifname = connman_inet_ifname(ipconfig->index);
                connman_dbus_dict_append_basic(iter, "Interface",
-                                       DBUS_TYPE_STRING, &ipdevice->ifname);
+                                       DBUS_TYPE_STRING, &ifname);
+               g_free(ifname);
+       }
 
        if (ipdevice->address)
                connman_dbus_dict_append_basic(iter, "Address",
diff --git a/src/ipv6pd.c b/src/ipv6pd.c
index 7146d42..5ecda38 100644
--- a/src/ipv6pd.c
+++ b/src/ipv6pd.c
@@ -289,8 +289,9 @@ static void update_ipconfig(struct connman_service *service,
                        g_free(default_interface);
                        default_interface = NULL;
                }
-               DBG("No IPv6 support for interface %s",
-                               __connman_ipconfig_get_ifname(ipconfig));
+
+               DBG("No IPv6 support for interface index %d",
+                       __connman_ipconfig_get_index(ipconfig));
                return;
        }
 
@@ -298,8 +299,8 @@ static void update_ipconfig(struct connman_service *service,
         * Did we had PD activated already? If not, then start it.
         */
        if (!default_interface) {
-               DBG("IPv6 ipconfig %p changed for interface %s", ipconfig,
-                       __connman_ipconfig_get_ifname(ipconfig));
+               DBG("IPv6 ipconfig %p changed for interface index %d", ipconfig,
+                       __connman_ipconfig_get_index(ipconfig));
 
                setup_prefix_delegation(service);
        }
diff --git a/src/service.c b/src/service.c
index e4882db..8753247 100644
--- a/src/service.c
+++ b/src/service.c
@@ -6158,11 +6158,12 @@ static int service_register(struct connman_service 
*service)
        return 0;
 }
 
-static void service_up(struct connman_ipconfig *ipconfig)
+static void service_up(struct connman_ipconfig *ipconfig,
+               const char *ifname)
 {
        struct connman_service *service = __connman_ipconfig_get_data(ipconfig);
 
-       DBG("%s up", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s up", ifname);
 
        link_changed(service);
 
@@ -6170,25 +6171,28 @@ static void service_up(struct connman_ipconfig 
*ipconfig)
        service->stats_roaming.valid = false;
 }
 
-static void service_down(struct connman_ipconfig *ipconfig)
+static void service_down(struct connman_ipconfig *ipconfig,
+                       const char *ifname)
 {
-       DBG("%s down", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s down", ifname);
 }
 
-static void service_lower_up(struct connman_ipconfig *ipconfig)
+static void service_lower_up(struct connman_ipconfig *ipconfig,
+                       const char *ifname)
 {
        struct connman_service *service = __connman_ipconfig_get_data(ipconfig);
 
-       DBG("%s lower up", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s lower up", ifname);
 
        stats_start(service);
 }
 
-static void service_lower_down(struct connman_ipconfig *ipconfig)
+static void service_lower_down(struct connman_ipconfig *ipconfig,
+                       const char *ifname)
 {
        struct connman_service *service = __connman_ipconfig_get_data(ipconfig);
 
-       DBG("%s lower down", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s lower down", ifname);
 
        if (!is_idle_state(service, service->state_ipv4))
                __connman_ipconfig_disable(service->ipconfig_ipv4);
@@ -6200,13 +6204,14 @@ static void service_lower_down(struct connman_ipconfig 
*ipconfig)
        service_save(service);
 }
 
-static void service_ip_bound(struct connman_ipconfig *ipconfig)
+static void service_ip_bound(struct connman_ipconfig *ipconfig,
+                       const char *ifname)
 {
        struct connman_service *service = __connman_ipconfig_get_data(ipconfig);
        enum connman_ipconfig_method method = CONNMAN_IPCONFIG_METHOD_UNKNOWN;
        enum connman_ipconfig_type type = CONNMAN_IPCONFIG_TYPE_UNKNOWN;
 
-       DBG("%s ip bound", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s ip bound", ifname);
 
        type = __connman_ipconfig_get_config_type(ipconfig);
        method = __connman_ipconfig_get_method(ipconfig);
@@ -6223,13 +6228,14 @@ static void service_ip_bound(struct connman_ipconfig 
*ipconfig)
        settings_changed(service, ipconfig);
 }
 
-static void service_ip_release(struct connman_ipconfig *ipconfig)
+static void service_ip_release(struct connman_ipconfig *ipconfig,
+                       const char *ifname)
 {
        struct connman_service *service = __connman_ipconfig_get_data(ipconfig);
        enum connman_ipconfig_method method = CONNMAN_IPCONFIG_METHOD_UNKNOWN;
        enum connman_ipconfig_type type = CONNMAN_IPCONFIG_TYPE_UNKNOWN;
 
-       DBG("%s ip release", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s ip release", ifname);
 
        type = __connman_ipconfig_get_config_type(ipconfig);
        method = __connman_ipconfig_get_method(ipconfig);
@@ -6252,11 +6258,12 @@ static void service_ip_release(struct connman_ipconfig 
*ipconfig)
        settings_changed(service, ipconfig);
 }
 
-static void service_route_changed(struct connman_ipconfig *ipconfig)
+static void service_route_changed(struct connman_ipconfig *ipconfig,
+                               const char *ifname)
 {
        struct connman_service *service = __connman_ipconfig_get_data(ipconfig);
 
-       DBG("%s route changed", __connman_ipconfig_get_ifname(ipconfig));
+       DBG("%s route changed", ifname);
 
        settings_changed(service, ipconfig);
 }
-- 
1.7.11.7

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

Reply via email to