#include "inet.h"
-static GStaticMutex device_mutex = G_STATIC_MUTEX_INIT;
static GSList *device_list = NULL;
static void rtnllink_newlink(unsigned short type, int index,
struct connman_element *device;
GSList *list;
gboolean exists = FALSE;
- gchar *name;
+ gchar *name, *devname;
DBG("index %d", index);
- g_static_mutex_lock(&device_mutex);
-
for (list = device_list; list; list = list->next) {
struct connman_element *device = list->data;
}
}
- g_static_mutex_unlock(&device_mutex);
-
if (exists == TRUE)
return;
- name = inet_index2name(index);
+ name = inet_index2ident(index, "dev_");
+ devname = inet_index2name(index);
if (type == ARPHRD_ETHER) {
char bridge_path[PATH_MAX], wimax_path[PATH_MAX];
int sk;
snprintf(bridge_path, PATH_MAX,
- "/sys/class/net/%s/bridge", name);
+ "/sys/class/net/%s/bridge", devname);
snprintf(wimax_path, PATH_MAX,
- "/sys/class/net/%s/wimax", name);
+ "/sys/class/net/%s/wimax", devname);
memset(&iwr, 0, sizeof(iwr));
- strncpy(iwr.ifr_ifrn.ifrn_name, name, IFNAMSIZ);
+ strncpy(iwr.ifr_ifrn.ifrn_name, devname, IFNAMSIZ);
sk = socket(PF_INET, SOCK_DGRAM, 0);
if (g_str_has_prefix(name, "bnep") == TRUE)
- subtype = CONNMAN_ELEMENT_SUBTYPE_BLUETOOTH;
+ subtype = CONNMAN_ELEMENT_SUBTYPE_UNKNOWN;
else if (stat(bridge_path, &st) == 0 && (st.st_mode & S_IFDIR))
subtype = CONNMAN_ELEMENT_SUBTYPE_UNKNOWN;
else if (stat(wimax_path, &st) == 0 && (st.st_mode & S_IFDIR))
subtype = CONNMAN_ELEMENT_SUBTYPE_WIMAX;
else if (ioctl(sk, SIOCGIWNAME, &iwr) == 0)
- subtype = CONNMAN_ELEMENT_SUBTYPE_WIFI;
+ subtype = CONNMAN_ELEMENT_SUBTYPE_UNKNOWN;
else
subtype = CONNMAN_ELEMENT_SUBTYPE_ETHERNET;
device->index = index;
device->name = name;
-
- g_static_mutex_lock(&device_mutex);
+ device->devname = devname;
connman_element_register(device, NULL);
device_list = g_slist_append(device_list, device);
-
- g_static_mutex_unlock(&device_mutex);
}
static void rtnllink_dellink(unsigned short type, int index,
DBG("index %d", index);
- g_static_mutex_lock(&device_mutex);
-
for (list = device_list; list; list = list->next) {
struct connman_element *device = list->data;
break;
}
}
-
- g_static_mutex_unlock(&device_mutex);
}
static struct connman_rtnl rtnllink_rtnl = {
connman_rtnl_unregister(&rtnllink_rtnl);
- g_static_mutex_lock(&device_mutex);
-
for (list = device_list; list; list = list->next) {
struct connman_element *device = list->data;
g_slist_free(device_list);
device_list = NULL;
-
- g_static_mutex_unlock(&device_mutex);
}
-CONNMAN_PLUGIN_DEFINE("rtnllink", "RTNL link detection plugin", VERSION,
+CONNMAN_PLUGIN_DEFINE(rtnllink, "RTNL link detection plugin", VERSION,
rtnllink_init, rtnllink_exit)