From afc99f394364a5bf1a60e558b5672f721d47a68e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 8 Aug 2009 10:59:28 -0700 Subject: [PATCH] Create IP configuration based on the interface index --- include/ipconfig.h | 2 +- src/device.c | 10 +++++----- src/ipconfig.c | 11 +++-------- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/include/ipconfig.h b/include/ipconfig.h index 08fe558..c8062ba 100644 --- a/include/ipconfig.h +++ b/include/ipconfig.h @@ -47,7 +47,7 @@ enum connman_ipconfig_method { struct connman_ipconfig; -struct connman_ipconfig *connman_ipconfig_create(const char *interface); +struct connman_ipconfig *connman_ipconfig_create(unsigned int index); struct connman_ipconfig *connman_ipconfig_ref(struct connman_ipconfig *ipconfig); void connman_ipconfig_unref(struct connman_ipconfig *ipconfig); diff --git a/src/device.c b/src/device.c index 7ac2ab8..751d190 100644 --- a/src/device.c +++ b/src/device.c @@ -1029,6 +1029,11 @@ const char *connman_device_get_path(struct connman_device *device) void connman_device_set_index(struct connman_device *device, int index) { device->element.index = index; + + if (device->ipconfig != NULL) + connman_ipconfig_unref(device->ipconfig); + + device->ipconfig = connman_ipconfig_create(index); } /** @@ -1079,11 +1084,6 @@ void connman_device_set_interface(struct connman_device *device, device->name = g_strdup_printf("%s (%s)", str, device->interface); } - - if (device->ipconfig != NULL) - connman_ipconfig_unref(device->ipconfig); - - device->ipconfig = connman_ipconfig_create(interface); } const char *connman_device_get_control(struct connman_device *device) diff --git a/src/ipconfig.c b/src/ipconfig.c index 2e3d22b..e08f1e7 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -29,7 +29,7 @@ struct connman_ipconfig { gint refcount; - int index; + unsigned int index; char *interface; enum connman_ipconfig_method method; }; @@ -41,23 +41,18 @@ struct connman_ipconfig { * * Returns: a newly-allocated #connman_ipconfig structure */ -struct connman_ipconfig *connman_ipconfig_create(const char *interface) +struct connman_ipconfig *connman_ipconfig_create(unsigned int index) { struct connman_ipconfig *ipconfig; - int index; DBG(""); - index = connman_inet_ifindex(interface); - if (index < 0) - return NULL; - ipconfig = g_try_new0(struct connman_ipconfig, 1); if (ipconfig == NULL) return NULL; ipconfig->index = index; - ipconfig->interface = g_strdup(interface); + ipconfig->interface = connman_inet_ifname(index); DBG("ipconfig %p", ipconfig); -- 2.7.4