mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 18:28:23 -05:00
hostapd_cli: Add support for RAW command
Same as for wpa_cli, RAW command is a passthrough to hostapd control interface. Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com>
This commit is contained in:
parent
940491ce08
commit
12605642b3
@ -215,6 +215,52 @@ static inline int wpa_ctrl_command(struct wpa_ctrl *ctrl, char *cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int write_cmd(char *buf, size_t buflen, const char *cmd, int argc,
|
||||||
|
char *argv[])
|
||||||
|
{
|
||||||
|
int i, res;
|
||||||
|
char *pos, *end;
|
||||||
|
|
||||||
|
pos = buf;
|
||||||
|
end = buf + buflen;
|
||||||
|
|
||||||
|
res = os_snprintf(pos, end - pos, "%s", cmd);
|
||||||
|
if (os_snprintf_error(end - pos, res))
|
||||||
|
goto fail;
|
||||||
|
pos += res;
|
||||||
|
|
||||||
|
for (i = 0; i < argc; i++) {
|
||||||
|
res = os_snprintf(pos, end - pos, " %s", argv[i]);
|
||||||
|
if (os_snprintf_error(end - pos, res))
|
||||||
|
goto fail;
|
||||||
|
pos += res;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf[buflen - 1] = '\0';
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
printf("Too long command\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int hostapd_cli_cmd(struct wpa_ctrl *ctrl, const char *cmd,
|
||||||
|
int min_args, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
char buf[4096];
|
||||||
|
|
||||||
|
if (argc < min_args) {
|
||||||
|
printf("Invalid %s command - at least %d argument%s required.\n",
|
||||||
|
cmd, min_args, min_args > 1 ? "s are" : " is");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (write_cmd(buf, sizeof(buf), cmd, argc, argv) < 0)
|
||||||
|
return -1;
|
||||||
|
return wpa_ctrl_command(ctrl, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int hostapd_cli_cmd_ping(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
static int hostapd_cli_cmd_ping(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
return wpa_ctrl_command(ctrl, "PING");
|
return wpa_ctrl_command(ctrl, "PING");
|
||||||
@ -1068,6 +1114,14 @@ static int hostapd_cli_cmd_log_level(struct wpa_ctrl *ctrl, int argc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int hostapd_cli_cmd_raw(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
if (argc == 0)
|
||||||
|
return -1;
|
||||||
|
return hostapd_cli_cmd(ctrl, argv[0], 0, argc - 1, &argv[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct hostapd_cli_cmd {
|
struct hostapd_cli_cmd {
|
||||||
const char *cmd;
|
const char *cmd;
|
||||||
int (*handler)(struct wpa_ctrl *ctrl, int argc, char *argv[]);
|
int (*handler)(struct wpa_ctrl *ctrl, int argc, char *argv[]);
|
||||||
@ -1110,6 +1164,7 @@ static const struct hostapd_cli_cmd hostapd_cli_commands[] = {
|
|||||||
#ifdef CONFIG_FST
|
#ifdef CONFIG_FST
|
||||||
{ "fst", hostapd_cli_cmd_fst },
|
{ "fst", hostapd_cli_cmd_fst },
|
||||||
#endif /* CONFIG_FST */
|
#endif /* CONFIG_FST */
|
||||||
|
{ "raw", hostapd_cli_cmd_raw },
|
||||||
{ "level", hostapd_cli_cmd_level },
|
{ "level", hostapd_cli_cmd_level },
|
||||||
{ "license", hostapd_cli_cmd_license },
|
{ "license", hostapd_cli_cmd_license },
|
||||||
{ "quit", hostapd_cli_cmd_quit },
|
{ "quit", hostapd_cli_cmd_quit },
|
||||||
|
Loading…
Reference in New Issue
Block a user