| Index: plugins/newwifi.c
|
| diff --git a/plugins/newwifi.c b/plugins/newwifi.c
|
| index 7ebc3b691cc941c2a27c9fc4cbb24f325c3254af..cfdd250dfa9e75258da594016af90948e0e9bae6 100644
|
| --- a/plugins/newwifi.c
|
| +++ b/plugins/newwifi.c
|
| @@ -810,21 +810,23 @@ static void append_8021x(DBusMessageIter *dict,
|
| }
|
| }
|
|
|
| -static int check_wpa(struct connman_network *network)
|
| +static int check_psk(struct connman_network *network)
|
| {
|
| const char *passphrase =
|
| connman_network_get_string(network, "WiFi.Passphrase");
|
| return (passphrase == NULL || strlen(passphrase) == 0 ? -EINVAL : 0);
|
| }
|
|
|
| -static void append_wpa(DBusMessageIter *dict,
|
| - struct connman_network *network)
|
| +static void append_psk(DBusMessageIter *dict,
|
| + struct connman_network *network, const char *proto)
|
| {
|
| const char *key_mgmt = "WPA-PSK";
|
| const char *passphrase;
|
|
|
| connman_dbus_dict_append_variant(dict, "key_mgmt",
|
| DBUS_TYPE_STRING, &key_mgmt);
|
| + connman_dbus_dict_append_variant(dict, "proto",
|
| + DBUS_TYPE_STRING, &proto);
|
|
|
| passphrase = connman_network_get_string(network, "WiFi.Passphrase");
|
| connman_dbus_dict_append_variant(dict, "psk",
|
| @@ -899,9 +901,12 @@ static void append_network_properties(struct supplicant_task *task,
|
| security = connman_network_get_string(network, "WiFi.Security");
|
| if (g_ascii_strcasecmp(security, "802_1x") == 0) {
|
| append_8021x(&dict, network);
|
| - } else if (g_ascii_strcasecmp(security, "wpa") == 0 ||
|
| - g_ascii_strcasecmp(security, "rsn") == 0) {
|
| - append_wpa(&dict, network);
|
| + } else if (g_ascii_strcasecmp(security, "psk") == 0) {
|
| + append_psk(&dict, network, "WPA RSN");
|
| + } else if (g_ascii_strcasecmp(security, "wpa") == 0) {
|
| + append_psk(&dict, network, "WPA");
|
| + } else if (g_ascii_strcasecmp(security, "rsn") == 0) {
|
| + append_psk(&dict, network, "RSN");
|
| } else if (g_ascii_strcasecmp(security, "wep") == 0) {
|
| append_wep(&dict, network);
|
| } else {
|
| @@ -1349,71 +1354,6 @@ static int interface_scan(struct supplicant_task *task)
|
| __func__, "interface scan");
|
| }
|
|
|
| -static struct {
|
| - char *name;
|
| - char *value;
|
| -} special_ssid[] = {
|
| - { "<hidden>", "hidden" },
|
| - { "default", "linksys" },
|
| - { "wireless" },
|
| - { "linksys" },
|
| - { "netgear" },
|
| - { "dlink" },
|
| - { "2wire" },
|
| - { "compaq" },
|
| - { "tsunami" },
|
| - { "comcomcom", "3com" },
|
| - { "3Com", "3com" },
|
| - { "Symbol", "symbol" },
|
| - { "Motorola", "motorola" },
|
| - { "Wireless" , "wireless" },
|
| - { "WLAN", "wlan" },
|
| - { }
|
| -};
|
| -
|
| -static char *build_group(const char *addr, const char *name,
|
| - const unsigned char *ssid, unsigned int ssid_len,
|
| - const char *mode, const char *security)
|
| -{
|
| - GString *str;
|
| - unsigned int i;
|
| -
|
| - if (addr == NULL)
|
| - return NULL;
|
| -
|
| - str = g_string_sized_new((ssid_len * 2) + 24);
|
| - if (str == NULL)
|
| - return NULL;
|
| -
|
| - if (ssid == NULL) {
|
| - g_string_append_printf(str, "hidden_%s", addr);
|
| - goto done;
|
| - }
|
| -
|
| - for (i = 0; special_ssid[i].name; i++) {
|
| - if (g_strcmp0(special_ssid[i].name, name) == 0) {
|
| - if (special_ssid[i].value == NULL)
|
| - g_string_append_printf(str, "%s_%.*s",
|
| - name, 2*ETH_ALEN, addr);
|
| - else
|
| - g_string_append_printf(str, "%s_%.*s",
|
| - special_ssid[i].value, 2*ETH_ALEN, addr);
|
| - goto done;
|
| - }
|
| - }
|
| -
|
| - if (ssid_len > 0 && ssid[0] != '\0') {
|
| - for (i = 0; i < ssid_len; i++)
|
| - g_string_append_printf(str, "%02x", ssid[i]);
|
| - } else
|
| - g_string_append_printf(str, "hidden_%.*s", 2*ETH_ALEN, addr);
|
| -
|
| -done:
|
| - g_string_append_printf(str, "_%s_%s", mode, security);
|
| -
|
| - return g_string_free(str, FALSE);
|
| -}
|
| -
|
| /*
|
| * Construct the identifier for a network from the bssid and ssid.
|
| * We intentionally construct a valid d-bus object path because
|
| @@ -1834,7 +1774,7 @@ static struct connman_network *add_bss(struct supplicant_task *task,
|
| struct connman_network *network;
|
| char *group;
|
|
|
| - group = build_group(bss->path, bss->name,
|
| + group = connman_wifi_build_group(bss->path, bss->name,
|
| bss->ssid, bss->ssid_len, bss->mode, bss->security);
|
|
|
| network = connman_device_get_network(task->device, bss->path);
|
| @@ -2667,9 +2607,10 @@ static int task_connect(struct supplicant_task *task,
|
| err = -EINVAL;
|
| else if (g_ascii_strcasecmp(security, "802_1x") == 0)
|
| err = check_8021x(network);
|
| - else if (g_ascii_strcasecmp(security, "wpa") == 0 ||
|
| + else if (g_ascii_strcasecmp(security, "psk") == 0 ||
|
| + g_ascii_strcasecmp(security, "wpa") == 0 ||
|
| g_ascii_strcasecmp(security, "rsn") == 0)
|
| - err = check_wpa(network);
|
| + err = check_psk(network);
|
| else if (g_ascii_strcasecmp(security, "wep") == 0)
|
| err = check_wep(network);
|
| if (err != 0) {
|
|
|