wireless/wapi: authentication parameters should update before key set
set authentication parameters before key set on command mode Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
parent
7ce7eff9a9
commit
be516e4c5e
@ -117,7 +117,7 @@ static const struct wapi_command_s g_wapi_commands[] =
|
|||||||
{"mask", 2, 2, wapi_mask_cmd},
|
{"mask", 2, 2, wapi_mask_cmd},
|
||||||
{"freq", 3, 3, wapi_freq_cmd},
|
{"freq", 3, 3, wapi_freq_cmd},
|
||||||
{"essid", 3, 3, wapi_essid_cmd},
|
{"essid", 3, 3, wapi_essid_cmd},
|
||||||
{"psk", 3, 3, wapi_psk_cmd},
|
{"psk", 3, 4, wapi_psk_cmd},
|
||||||
{"disconnect", 1, 1, wapi_disconnect_cmd},
|
{"disconnect", 1, 1, wapi_disconnect_cmd},
|
||||||
{"mode", 2, 2, wapi_mode_cmd},
|
{"mode", 2, 2, wapi_mode_cmd},
|
||||||
{"ap", 2, 2, wapi_ap_cmd},
|
{"ap", 2, 2, wapi_ap_cmd},
|
||||||
@ -521,15 +521,64 @@ static int wapi_essid_cmd(int sock, int argc, FAR char **argv)
|
|||||||
static int wapi_psk_cmd(int sock, int argc, FAR char **argv)
|
static int wapi_psk_cmd(int sock, int argc, FAR char **argv)
|
||||||
{
|
{
|
||||||
enum wpa_alg_e alg_flag;
|
enum wpa_alg_e alg_flag;
|
||||||
|
uint8_t auth_wpa;
|
||||||
|
int cipher;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* Convert input strings to values */
|
/* Convert input strings to values */
|
||||||
|
|
||||||
alg_flag = (enum wpa_alg_e)wapi_str2ndx(argv[2], g_wapi_alg_flags);
|
alg_flag = (enum wpa_alg_e)wapi_str2ndx(argv[2], g_wapi_alg_flags);
|
||||||
|
|
||||||
/* Set the Passphrase */
|
if (argc > 3)
|
||||||
|
{
|
||||||
|
auth_wpa = atoi(argv[3]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auth_wpa = IW_AUTH_WPA_VERSION_WPA2;
|
||||||
|
}
|
||||||
|
|
||||||
return wpa_driver_wext_set_key_ext(sock, argv[0], alg_flag,
|
switch (alg_flag)
|
||||||
argv[1], strlen(argv[1]));
|
{
|
||||||
|
case WPA_ALG_NONE:
|
||||||
|
cipher = IW_AUTH_CIPHER_NONE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPA_ALG_WEP:
|
||||||
|
cipher = IW_AUTH_CIPHER_WEP40;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPA_ALG_TKIP:
|
||||||
|
cipher = IW_AUTH_CIPHER_TKIP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WPA_ALG_CCMP:
|
||||||
|
cipher = IW_AUTH_CIPHER_CCMP;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wpa_driver_wext_set_auth_param(sock, argv[0],
|
||||||
|
IW_AUTH_WPA_VERSION,
|
||||||
|
auth_wpa);
|
||||||
|
if (ret >= 0)
|
||||||
|
{
|
||||||
|
ret = wpa_driver_wext_set_auth_param(sock, argv[0],
|
||||||
|
IW_AUTH_CIPHER_PAIRWISE,
|
||||||
|
cipher);
|
||||||
|
|
||||||
|
/* Set the Passphrase */
|
||||||
|
|
||||||
|
if (ret >= 0)
|
||||||
|
{
|
||||||
|
ret = wpa_driver_wext_set_key_ext(sock, argv[0], alg_flag,
|
||||||
|
argv[1], strlen(argv[1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -957,8 +1006,8 @@ static void wapi_showusage(FAR const char *progname, int exitcode)
|
|||||||
progname);
|
progname);
|
||||||
fprintf(stderr, "\t%s essid <ifname> <essid> <index/flag>\n",
|
fprintf(stderr, "\t%s essid <ifname> <essid> <index/flag>\n",
|
||||||
progname);
|
progname);
|
||||||
fprintf(stderr, "\t%s psk <ifname> <passphrase> <index/flag>\n",
|
fprintf(stderr, "\t%s psk <ifname> <passphrase> <index/flag> "
|
||||||
progname);
|
"<wpa>\n", progname);
|
||||||
fprintf(stderr, "\t%s disconnect <ifname>\n", progname);
|
fprintf(stderr, "\t%s disconnect <ifname>\n", progname);
|
||||||
fprintf(stderr, "\t%s mode <ifname> <index/mode>\n",
|
fprintf(stderr, "\t%s mode <ifname> <index/mode>\n",
|
||||||
progname);
|
progname);
|
||||||
|
Loading…
Reference in New Issue
Block a user