static void cmd_wlan_ap_print_sta_info(wlan_ap_stas_t *stas) { int i; CMD_LOG(1, "sta_num: %d\n", stas->num); for (i = 0; i < stas->num; i++) { CMD_LOG(1, "[%02d]Mac addr: %02x:%02x:%02x:%02x:%02x:%02x\n", i + 1, stas->sta[i].addr[0], stas->sta[i].addr[1], stas->sta[i].addr[2], stas->sta[i].addr[3], stas->sta[i].addr[4], stas->sta[i].addr[5]); } }
void sntp_run(void *arg) { CMD_LOG(1, "<net> <sntp> <request>\n"); if (sntp_request(NULL) != 0) { CMD_LOG(1, "<net> <sntp> <response : fail>\n"); goto exit; } sntp_time *time = (sntp_time *)sntp_obtain_time(); CMD_LOG(1, "<net> <sntp> <response : success>\n"); CMD_LOG(1,"sntp(%u %u %u ",time->week, time->mon, time->day); CMD_LOG(1,"%u:%u:%u %u)\n", time->hour, time->min, time->sec, time->year); exit: SNTP_THREAD_EXIT(&g_sntp_thread); }
static void cmd_wlan_sta_print_scan_results(wlan_sta_scan_results_t *results) { int i; for (i = 0; i < results->num; ++i) { CMD_LOG(1, "\n%02d: ", i + 1); cmd_wlan_sta_print_ap(&results->ap[i]); } }
static __inline void cmd_wlan_sta_print_ap(wlan_sta_ap_t *ap) { CMD_LOG(1, "%02x:%02x:%02x:%02x:%02x:%02x ssid=%-32.32s " "beacon_int=%d freq=%d channel=%u rssi=%d level=%d " "flags=%#010x wpa_key_mgmt=%#010x wpa_cipher=%#010x " "wpa2_key_mgmt=%#010x wpa2_cipher=%#010x\n", ap->bssid[0], ap->bssid[1], ap->bssid[2], ap->bssid[3], ap->bssid[4], ap->bssid[5], ap->ssid.ssid, ap->beacon_int, ap->freq, ap->channel, ap->rssi, ap->level, ap->wpa_flags, ap->wpa_key_mgmt, ap->wpa_cipher, ap->wpa2_key_mgmt, ap->wpa2_cipher); }
/** *This function is involed when the argc == 2, *We just action the basement of the command *may some commands need argument,so here will *make a dicision */ static int default_action(char *cmd) { int ret; ret = convert_command_tbl(cmd); switch(ret) { case CMD_LS: ls_type = 0; return IS_LS; break; case CMD_FIND: show_find_usage(); break; case CMD_GREP: CMD_LOG("grep","%s\n","argument is needed"); break; default: CMD_ERR(cmd,"%s","This command may not show output by ncurses"); } return -1; }
enum cmd_status cmd_wlan_ap_exec(char *cmd) { int ret; cmd_write_respond(CMD_STATUS_OK, "OK"); if (cmd_strncmp(cmd, "config ", 7) == 0) { char *argv[2]; if (cmd_parse_argv(cmd + 7, argv, cmd_nitems(argv)) == 0) { ret = -2; goto out; } ret = wlan_ap_set((uint8_t *)argv[0], cmd_strlen(argv[0]), (uint8_t *)argv[1]); } else if (cmd_strncmp(cmd, "set ", 4) == 0) { ret = cmd_wlan_ap_set(cmd + 4); } else if (cmd_strncmp(cmd, "get ", 4) == 0) { ret = cmd_wlan_ap_get(cmd + 4); } else if (cmd_strcmp(cmd, "enable") == 0) { ret = wlan_ap_enable(); } else if (cmd_strcmp(cmd, "reload") == 0) { ret = wlan_ap_reload(); } else if (cmd_strcmp(cmd, "disable") == 0) { ret = wlan_ap_disable(); } else if (cmd_strcmp(cmd, "sta num") == 0) { int num; ret = wlan_ap_sta_num(&num); if (ret == 0) CMD_LOG(1, "sta num: %d\n", num); } else if (cmd_strncmp(cmd, "sta info ", 9) == 0) { int size; if (cmd_wpas_parse_int(cmd + 9, 1, 30, &size) != 0) { ret = -2; goto out; } wlan_ap_stas_t stas; stas.sta = (wlan_ap_sta_t *)cmd_malloc(size * sizeof(wlan_ap_sta_t)); if (stas.sta == NULL) { CMD_ERR("%s: malloc failed\n", __func__); ret = -1; goto out; } stas.size = size; ret = wlan_ap_sta_info(&stas); if (ret == 0) cmd_wlan_ap_print_sta_info(&stas); cmd_free(stas.sta); } else { CMD_ERR("%s: unknown command '%s'\n", __func__, cmd); return CMD_STATUS_ACKED; } out: if (ret == -2) { CMD_ERR("%s: command '%s' invalid arg\n", __func__, cmd); return CMD_STATUS_ACKED; } else if (ret == -1) { CMD_ERR("%s: command '%s' exec failed\n", __func__, cmd); return CMD_STATUS_ACKED; } return CMD_STATUS_ACKED; }
/* @return * -2: CMD_STATUS_INVALID_ARG * -1: CMD_STATUS_FAIL * 0: CMD_STATUS_OK */ static int cmd_wlan_ap_get(char *cmd) { wlan_ap_config_t config; cmd_memset(&config, 0, sizeof(config)); if (cmd_strcmp(cmd, "ssid") == 0) { config.field = WLAN_AP_FIELD_SSID; } else if (cmd_strcmp(cmd, "psk") == 0) { config.field = WLAN_AP_FIELD_PSK; } else if (cmd_strcmp(cmd, "key_mgmt") == 0) { config.field = WLAN_AP_FIELD_KEY_MGMT; } else if (cmd_strcmp(cmd, "wpa") == 0) { config.field = WLAN_AP_FIELD_WPA_CIPHER; } else if (cmd_strcmp(cmd, "rsn") == 0) { config.field = WLAN_AP_FIELD_RSN_CIPHER; } else if (cmd_strcmp(cmd, "proto") == 0) { config.field = WLAN_AP_FIELD_PROTO; } else if (cmd_strcmp(cmd, "auth_alg") == 0) { config.field = WLAN_AP_FIELD_AUTH_ALG; } else if (cmd_strcmp(cmd, "group_rekey") == 0) { config.field = WLAN_AP_FIELD_GROUP_REKEY; } else if (cmd_strcmp(cmd, "strict_rekey") == 0) { config.field = WLAN_AP_FIELD_STRICT_REKEY; } else if (cmd_strcmp(cmd, "gmk_rekey") == 0) { config.field = WLAN_AP_FIELD_GMK_REKEY; } else if (cmd_strcmp(cmd, "ptk_rekey") == 0) { config.field = WLAN_AP_FIELD_PTK_REKEY; } else if (cmd_strcmp(cmd, "hw_mode") == 0) { config.field = WLAN_AP_FIELD_HW_MODE; } else if (cmd_strcmp(cmd, "80211n") == 0) { config.field = WLAN_AP_FIELD_IEEE80211N; } else if (cmd_strcmp(cmd, "channel") == 0) { config.field = WLAN_AP_FIELD_CHANNEL; } else if (cmd_strcmp(cmd, "beacon_int") == 0) { config.field = WLAN_AP_FIELD_BEACON_INT; } else if (cmd_strcmp(cmd, "dtim") == 0) { config.field = WLAN_AP_FIELD_DTIM; } else if (cmd_strcmp(cmd, "max_num_sta") == 0) { config.field = WLAN_AP_FIELD_MAX_NUM_STA; } else { CMD_ERR("%s: invalid arg '%s'\n", __func__, cmd); return -2; } if (wlan_ap_get_config(&config) != 0) { CMD_ERR("%s: get config failed\n", __func__); return -1; } if (config.field == WLAN_AP_FIELD_SSID) { CMD_LOG(1, "ssid: %.32s\n", config.u.ssid.ssid); } else if (config.field == WLAN_AP_FIELD_PSK) { CMD_LOG(1, "psk: %s\n", config.u.psk); } else if (config.field == WLAN_AP_FIELD_KEY_MGMT) { CMD_LOG(1, "key_mgmt: %#06x\n", config.u.key_mgmt); } else if (config.field == WLAN_AP_FIELD_WPA_CIPHER) { CMD_LOG(1, "wpa_cipher: %#06x\n", config.u.wpa_cipher); } else if (config.field == WLAN_AP_FIELD_RSN_CIPHER) { CMD_LOG(1, "rsn_cipher: %#06x\n", config.u.rsn_cipher); } else if (config.field == WLAN_AP_FIELD_PROTO) { CMD_LOG(1, "proto: %#06x\n", config.u.proto); } else if (config.field == WLAN_AP_FIELD_AUTH_ALG) { CMD_LOG(1, "auth_alg: %#06x\n", config.u.auth_alg); } else if (config.field == WLAN_AP_FIELD_GROUP_REKEY) { CMD_LOG(1, "group_rekey: %d\n", config.u.group_rekey); } else if (config.field == WLAN_AP_FIELD_STRICT_REKEY) { CMD_LOG(1, "strict_rekey: %d\n", config.u.strict_rekey); } else if (config.field == WLAN_AP_FIELD_GMK_REKEY) { CMD_LOG(1, "gmk_rekey: %d\n", config.u.gmk_rekey); } else if (config.field == WLAN_AP_FIELD_PTK_REKEY) { CMD_LOG(1, "ptk_rekey: %d\n", config.u.ptk_rekey); } else if (config.field == WLAN_AP_FIELD_HW_MODE) { if (config.u.hw_mode == WLAN_AP_HW_MODE_IEEE80211B) { CMD_LOG(1, "hw_mode: b\n"); } else if (config.u.hw_mode == WLAN_AP_HW_MODE_IEEE80211G) { CMD_LOG(1, "hw_mode: g\n"); } else if (config.u.hw_mode == WLAN_AP_HW_MODE_IEEE80211A) { CMD_LOG(1, "hw_mode: a\n"); } else if (config.u.hw_mode == WLAN_AP_HW_MODE_IEEE80211AD) { CMD_LOG(1, "hw_mode: ad\n"); } else { CMD_ERR("%s: invalid hw_mode\n", __func__); } } else if (config.field == WLAN_AP_FIELD_IEEE80211N) { CMD_LOG(1, "ieee80211n: %d\n", config.u.ieee80211n); } else if (config.field == WLAN_AP_FIELD_CHANNEL) { CMD_LOG(1, "channel: %d\n", config.u.channel); } else if (config.field == WLAN_AP_FIELD_BEACON_INT) { CMD_LOG(1, "beacon_int: %d\n", config.u.beacon_int); } else if (config.field == WLAN_AP_FIELD_DTIM) { CMD_LOG(1, "dtim: %d\n", config.u.dtim); } else if (config.field == WLAN_AP_FIELD_MAX_NUM_STA) { CMD_LOG(1, "max_num_sta: %d\n", config.u.max_num_sta); } return 0; }
enum cmd_status cmd_wlan_sta_exec(char *cmd) { int ret; cmd_write_respond(CMD_STATUS_OK, "OK"); if (cmd_strncmp(cmd, "config ", 7) == 0) { char *argv[2]; if (cmd_parse_argv(cmd + 7, argv, cmd_nitems(argv)) == 0) { ret = -2; goto out; } ret = wlan_sta_set((uint8_t *)argv[0], cmd_strlen(argv[0]), (uint8_t *)argv[1]); } else if (cmd_strncmp(cmd, "set ", 4) == 0) { ret = cmd_wlan_sta_set(cmd + 4); } else if (cmd_strncmp(cmd, "get ", 4) == 0) { ret = cmd_wlan_sta_get(cmd + 4); } else if (cmd_strcmp(cmd, "enable") == 0) { ret = wlan_sta_enable(); } else if (cmd_strcmp(cmd, "disable") == 0) { ret = wlan_sta_disable(); } else if (cmd_strcmp(cmd, "scan once") == 0) { ret = wlan_sta_scan_once(); } else if (cmd_strncmp(cmd, "scan result ", 12) == 0) { int size; if (cmd_wpas_parse_int(cmd + 12, 1, 30, &size) != 0) { ret = -2; goto out; } wlan_sta_scan_results_t results; results.ap = cmd_malloc(size * sizeof(wlan_sta_ap_t)); if (results.ap == NULL) { CMD_ERR("%s: malloc failed\n", __func__); ret = -1; goto out; } results.size = size; ret = wlan_sta_scan_result(&results); if (ret == 0) cmd_wlan_sta_print_scan_results(&results); cmd_free(results.ap); } else if (cmd_strncmp(cmd, "scan interval ", 14) == 0) { int sec; if (cmd_wpas_parse_int(cmd + 14, 0, INT32_MAX, &sec) != 0) { ret = -2; goto out; } ret = wlan_sta_scan_interval(sec); } else if (cmd_strncmp(cmd, "bss max count ", 14) == 0) { int count; if (cmd_wpas_parse_int(cmd + 14, 0, UINT8_MAX, &count) != 0) { ret = -2; goto out; } ret = wlan_sta_bss_max_count((uint8_t)count); } else if (cmd_strncmp(cmd, "bss flush ", 10) == 0) { int age; if (cmd_wpas_parse_int(cmd + 10, 0, INT32_MAX, &age) != 0) { ret = -2; goto out; } ret = wlan_sta_bss_flush(age); } else if (cmd_strcmp(cmd, "connect") == 0) { ret = wlan_sta_connect(); } else if (cmd_strcmp(cmd, "disconnect") == 0) { ret = wlan_sta_disconnect(); } else if (cmd_strcmp(cmd, "state") == 0) { wlan_sta_states_t state; ret = wlan_sta_state(&state); if (ret == 0) CMD_LOG(1, "sta state: %d\n", state); } else if (cmd_strcmp(cmd, "ap") == 0) { wlan_sta_ap_t *ap = cmd_malloc(sizeof(wlan_sta_ap_t)); if (ap == NULL) { CMD_ERR("%s: malloc failed\n", __func__); ret = -1; goto out; } ret = wlan_sta_ap_info(ap); if (ret == 0) cmd_wlan_sta_print_ap(ap); cmd_free(ap); } else if (cmd_strcmp(cmd, "wps pbc") == 0) { ret = wlan_sta_wps_pbc(); } else if ((cmd_strlen(cmd) == 7) || (cmd_strcmp(cmd, "wps pin") == 0)) { wlan_sta_wps_pin_t wps; ret = wlan_sta_wps_pin_get(&wps); if (ret == 0) CMD_LOG(1, "WPS pin: %s\n", wps.pin); } else if (cmd_strncmp(cmd, "wps pin ", 8) == 0) { if (cmd_strlen(cmd + 8) != 8) { ret = -2; goto out; } wlan_sta_wps_pin_t wps; cmd_memcpy(wps.pin, cmd + 8, 8); wps.pin[8] = '\0'; ret = wlan_sta_wps_pin_set(&wps); } else { CMD_ERR("%s: unknown command '%s'\n", __func__, cmd); return CMD_STATUS_ACKED; } out: if (ret == -2) { CMD_ERR("%s: command '%s' invalid arg\n", __func__, cmd); return CMD_STATUS_ACKED; } else if (ret == -1) { CMD_ERR("%s: command '%s' exec failed\n", __func__, cmd); return CMD_STATUS_ACKED; } return CMD_STATUS_ACKED; }
/* @return * -2: CMD_STATUS_INVALID_ARG * -1: CMD_STATUS_FAIL * 0: CMD_STATUS_OK */ static int cmd_wlan_sta_get(char *cmd) { wlan_sta_config_t config; cmd_memset(&config, 0, sizeof(config)); if (cmd_strcmp(cmd, "ssid") == 0) { config.field = WLAN_STA_FIELD_SSID; } else if (cmd_strcmp(cmd, "psk") == 0) { config.field = WLAN_STA_FIELD_PSK; } else if (cmd_strcmp(cmd, "wep_key0") == 0) { config.field = WLAN_STA_FIELD_WEP_KEY0; } else if (cmd_strcmp(cmd, "wep_key1") == 0) { config.field = WLAN_STA_FIELD_WEP_KEY1; } else if (cmd_strcmp(cmd, "wep_key2") == 0) { config.field = WLAN_STA_FIELD_WEP_KEY2; } else if (cmd_strcmp(cmd, "wep_key3") == 0) { config.field = WLAN_STA_FIELD_WEP_KEY3; } else if (cmd_strcmp(cmd, "wep_key_index") == 0) { config.field = WLAN_STA_FIELD_WEP_KEY_INDEX; } else if (cmd_strcmp(cmd, "key_mgmt") == 0) { config.field = WLAN_STA_FIELD_KEY_MGMT; } else if (cmd_strcmp(cmd, "pairwise") == 0) { config.field = WLAN_STA_FIELD_PAIRWISE_CIPHER; } else if (cmd_strcmp(cmd, "group") == 0) { config.field = WLAN_STA_FIELD_GROUP_CIPHER; } else if (cmd_strcmp(cmd, "proto") == 0) { config.field = WLAN_STA_FIELD_PROTO; } else if (cmd_strcmp(cmd, "auth_alg") == 0) { config.field = WLAN_STA_FIELD_AUTH_ALG; } else if (cmd_strcmp(cmd, "ptk_rekey") == 0) { config.field = WLAN_STA_FIELD_WPA_PTK_REKEY; } else if (cmd_strcmp(cmd, "scan_ssid") == 0) { config.field = WLAN_STA_FIELD_SCAN_SSID; } else { CMD_ERR("%s: invalid arg '%s'\n", __func__, cmd); return -2; } if (wlan_sta_get_config(&config) != 0) { CMD_ERR("%s: get config failed\n", __func__); return -1; } if (config.field == WLAN_STA_FIELD_SSID) { CMD_LOG(1, "ssid: %.32s\n", config.u.ssid.ssid); } else if (config.field == WLAN_STA_FIELD_PSK) { CMD_LOG(1, "psk: %s\n", config.u.psk); } else if (config.field == WLAN_STA_FIELD_WEP_KEY0) { CMD_LOG(1, "wep_key0: %s\n", config.u.wep_key); } else if (config.field == WLAN_STA_FIELD_WEP_KEY1) { CMD_LOG(1, "wep_key1: %s\n", config.u.wep_key); } else if (config.field == WLAN_STA_FIELD_WEP_KEY2) { CMD_LOG(1, "wep_key2: %s\n", config.u.wep_key); } else if (config.field == WLAN_STA_FIELD_WEP_KEY3) { CMD_LOG(1, "wep_key3: %s\n", config.u.wep_key); } else if (config.field == WLAN_STA_FIELD_WEP_KEY_INDEX) { CMD_LOG(1, "wep_key_index: %d\n", config.u.wep_tx_keyidx); } else if (config.field == WLAN_STA_FIELD_KEY_MGMT) { CMD_LOG(1, "key_mgmt: %#06x\n", config.u.key_mgmt); } else if (config.field == WLAN_STA_FIELD_PAIRWISE_CIPHER) { CMD_LOG(1, "pairwise_cipher: %#06x\n", config.u.pairwise_cipher); } else if (config.field == WLAN_STA_FIELD_GROUP_CIPHER) { CMD_LOG(1, "group_cipher: %#06x\n", config.u.group_cipher); } else if (config.field == WLAN_STA_FIELD_PROTO) { CMD_LOG(1, "proto: %#06x\n", config.u.proto); } else if (config.field == WLAN_STA_FIELD_AUTH_ALG) { CMD_LOG(1, "auth_alg: %#06x\n", config.u.auth_alg); } else if (config.field == WLAN_STA_FIELD_WPA_PTK_REKEY) { CMD_LOG(1, "ptk_rekey: %d\n", config.u.wpa_ptk_rekey); } else if (config.field == WLAN_STA_FIELD_SCAN_SSID) { CMD_LOG(1, "scan_ssid: %d\n", config.u.scan_ssid); } return 0; }