Android: Add DRIVER command support on hostapd and hostapd_cli
Add DRIVER command support on hostapd and hostapd_cli on Android similarly to the way this previously enabled in wpa_supplicant and wpa_cli. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
50baf345b4
commit
3a05f89edc
3 changed files with 44 additions and 0 deletions
|
@ -3364,6 +3364,23 @@ static int hostapd_ctrl_iface_get_capability(struct hostapd_data *hapd,
|
|||
}
|
||||
|
||||
|
||||
#ifdef ANDROID
|
||||
static int hostapd_ctrl_iface_driver_cmd(struct hostapd_data *hapd, char *cmd,
|
||||
char *buf, size_t buflen)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = hostapd_drv_driver_cmd(hapd, cmd, buf, buflen);
|
||||
if (ret == 0) {
|
||||
ret = os_snprintf(buf, buflen, "%s\n", "OK");
|
||||
if (os_snprintf_error(buflen, ret))
|
||||
ret = -1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif /* ANDROID */
|
||||
|
||||
|
||||
static int hostapd_ctrl_iface_receive_process(struct hostapd_data *hapd,
|
||||
char *buf, char *reply,
|
||||
int reply_size,
|
||||
|
@ -3866,6 +3883,11 @@ static int hostapd_ctrl_iface_receive_process(struct hostapd_data *hapd,
|
|||
} else if (os_strcmp(buf, "PTKSA_CACHE_LIST") == 0) {
|
||||
reply_len = ptksa_cache_list(hapd->ptksa, reply, reply_size);
|
||||
#endif /* CONFIG_PASN */
|
||||
#ifdef ANDROID
|
||||
} else if (os_strncmp(buf, "DRIVER ", 7) == 0) {
|
||||
reply_len = hostapd_ctrl_iface_driver_cmd(hapd, buf + 7, reply,
|
||||
reply_size);
|
||||
#endif /* ANDROID */
|
||||
} else {
|
||||
os_memcpy(reply, "UNKNOWN COMMAND\n", 16);
|
||||
reply_len = 16;
|
||||
|
|
|
@ -1541,6 +1541,14 @@ static int hostapd_cli_cmd_reload_wpa_psk(struct wpa_ctrl *ctrl, int argc,
|
|||
}
|
||||
|
||||
|
||||
#ifdef ANDROID
|
||||
static int hostapd_cli_cmd_driver(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||
{
|
||||
return hostapd_cli_cmd(ctrl, "DRIVER", 1, argc, argv);
|
||||
}
|
||||
#endif /* ANDROID */
|
||||
|
||||
|
||||
struct hostapd_cli_cmd {
|
||||
const char *cmd;
|
||||
int (*handler)(struct wpa_ctrl *ctrl, int argc, char *argv[]);
|
||||
|
@ -1732,6 +1740,10 @@ static const struct hostapd_cli_cmd hostapd_cli_commands[] = {
|
|||
"<addr> [req_mode=] <measurement request hexdump> = send a Beacon report request to a station" },
|
||||
{ "reload_wpa_psk", hostapd_cli_cmd_reload_wpa_psk, NULL,
|
||||
"= reload wpa_psk_file only" },
|
||||
#ifdef ANDROID
|
||||
{ "driver", hostapd_cli_cmd_driver, NULL,
|
||||
"<driver sub command> [<hex formatted data>] = send driver command data" },
|
||||
#endif /* ANDROID */
|
||||
{ NULL, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -393,4 +393,14 @@ hostapd_drv_set_band(struct hostapd_data *hapd, u32 band_mask)
|
|||
return hapd->driver->set_band(hapd->drv_priv, band_mask);
|
||||
}
|
||||
|
||||
#ifdef ANDROID
|
||||
static inline int hostapd_drv_driver_cmd(struct hostapd_data *hapd,
|
||||
char *cmd, char *buf, size_t buf_len)
|
||||
{
|
||||
if (!hapd->driver->driver_cmd)
|
||||
return -1;
|
||||
return hapd->driver->driver_cmd(hapd->drv_priv, cmd, buf, buf_len);
|
||||
}
|
||||
#endif /* ANDROID */
|
||||
|
||||
#endif /* AP_DRV_OPS */
|
||||
|
|
Loading…
Reference in a new issue