Send signals for Powered and Connected changes
[connman] / plugins / wifi.c
index 39f288d..660ea9f 100644 (file)
@@ -148,6 +148,9 @@ static void state_change(struct connman_element *parent,
 
        DBG("state %d", state);
 
+       if (data == NULL)
+               return;
+
        if (data->identifier == NULL)
                return;
 
@@ -251,6 +254,8 @@ static void scan_result(struct connman_element *parent,
                connman_element_register(element, parent);
        }
 
+       element->available = TRUE;
+
        g_free(temp);
 }
 
@@ -332,6 +337,8 @@ static int wifi_disable(struct connman_element *element)
 
        connman_element_unregister_children(element);
 
+       __supplicant_stop(element);
+
        return 0;
 }
 
@@ -354,7 +361,7 @@ static void wifi_newlink(unsigned short type, int index,
        struct connman_element *device;
        GSList *list;
        gboolean exists = FALSE;
-       gchar *name;
+       gchar *name, *devname;
        struct iwreq iwr;
        int sk;
 
@@ -363,10 +370,11 @@ static void wifi_newlink(unsigned short type, int index,
        if (type != ARPHRD_ETHER)
                return;
 
-       name = inet_index2name(index);
+       name = inet_index2ident(index, "dev_");
+       devname = inet_index2name(index);
 
        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);
 
@@ -398,6 +406,7 @@ static void wifi_newlink(unsigned short type, int index,
 
        device->index = index;
        device->name = name;
+       device->devname = devname;
 
        connman_element_register(device, NULL);
        device_list = g_slist_append(device_list, device);