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);
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);
}
/**
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)
struct connman_ipconfig {
gint refcount;
- int index;
+ unsigned int index;
char *interface;
enum connman_ipconfig_method method;
};
*
* 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);