Fill WiFi channel property with correct values
[connman] / src / detect.c
index 1415638..c8247ee 100644 (file)
@@ -157,7 +157,7 @@ static char *index2ident(int index, const char *prefix)
                return NULL;
 
        eth = (void *) &ifr.ifr_hwaddr.sa_data;
-       snprintf(str, len, "%s%02X_%02X_%02X_%02X_%02X_%02X",
+       snprintf(str, len, "%s%02x%02x%02x%02x%02x%02x",
                                                prefix ? prefix : "",
                                                eth->ether_addr_octet[0],
                                                eth->ether_addr_octet[1],
@@ -175,7 +175,7 @@ static void detect_newlink(unsigned short type, int index,
        enum connman_device_type devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
        enum connman_device_mode mode = CONNMAN_DEVICE_MODE_UNKNOWN;
        struct connman_device *device;
-       gchar *addr, *name, *devname;
+       char *addr, *name, *devname, *ident = NULL;
 
        DBG("type %d index %d", type, index);
 
@@ -203,14 +203,18 @@ static void detect_newlink(unsigned short type, int index,
 
                sk = socket(PF_INET, SOCK_DGRAM, 0);
 
-               if (g_str_has_prefix(devname, "bnep") == TRUE)
+               if (g_str_has_prefix(devname, "vmnet") == TRUE ||
+                               g_str_has_prefix(devname, "vboxnet") == TRUE) {
+                       connman_info("Ignoring network interface %s", devname);
                        devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
-               else if (g_str_has_prefix(devname, "wmx") == TRUE)
+               } else if (g_str_has_prefix(devname, "bnep") == TRUE)
                        devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
-               else if (stat(bridge_path, &st) == 0 && (st.st_mode & S_IFDIR))
+               else if (g_str_has_prefix(devname, "wmx") == TRUE)
                        devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
                else if (stat(wimax_path, &st) == 0 && (st.st_mode & S_IFDIR))
                        devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
+               else if (stat(bridge_path, &st) == 0 && (st.st_mode & S_IFDIR))
+                       devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
                else if (ioctl(sk, SIOCGIWNAME, &iwr) == 0)
                        devtype = CONNMAN_DEVICE_TYPE_WIFI;
                else
@@ -229,7 +233,7 @@ static void detect_newlink(unsigned short type, int index,
        case CONNMAN_DEVICE_TYPE_ETHERNET:
        case CONNMAN_DEVICE_TYPE_WIFI:
        case CONNMAN_DEVICE_TYPE_WIMAX:
-               name = index2ident(index, "dev_");
+               name = index2ident(index, "");
                addr = index2addr(index);
                break;
        case CONNMAN_DEVICE_TYPE_BLUETOOTH:
@@ -263,10 +267,12 @@ static void detect_newlink(unsigned short type, int index,
                break;
        case CONNMAN_DEVICE_TYPE_ETHERNET:
                mode = CONNMAN_DEVICE_MODE_TRANSPORT_IP;
+               ident = index2ident(index, NULL);
                break;
        case CONNMAN_DEVICE_TYPE_WIFI:
        case CONNMAN_DEVICE_TYPE_WIMAX:
                mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
+               ident = index2ident(index, NULL);
                break;
        case CONNMAN_DEVICE_TYPE_BLUETOOTH:
                mode = CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE;
@@ -282,6 +288,11 @@ static void detect_newlink(unsigned short type, int index,
        connman_device_set_index(device, index);
        connman_device_set_interface(device, devname);
 
+       if (ident != NULL) {
+               connman_device_set_ident(device, ident);
+               g_free(ident);
+       }
+
        connman_device_set_string(device, "Address", addr);
 
        g_free(devname);