wpa_cli: Allow IFNAME= prefix to be used
Strip out the IFNAME=<ifname> prefix from commands before parsing them through the normal processing and then add the prefix back to the beginning of the actual control interface command to make per-interface commands work through the global control interface without having to use the 'raw' command. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
ae8535b6e1
commit
13b11ba702
1 changed files with 18 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* WPA Supplicant - command line interface for wpa_supplicant daemon
|
* WPA Supplicant - command line interface for wpa_supplicant daemon
|
||||||
* Copyright (c) 2004-2012, Jouni Malinen <j@w1.fi>
|
* Copyright (c) 2004-2013, Jouni Malinen <j@w1.fi>
|
||||||
*
|
*
|
||||||
* This software may be distributed under the terms of the BSD license.
|
* This software may be distributed under the terms of the BSD license.
|
||||||
* See README for more details.
|
* See README for more details.
|
||||||
|
@ -81,6 +81,7 @@ static const char *pid_file = NULL;
|
||||||
static const char *action_file = NULL;
|
static const char *action_file = NULL;
|
||||||
static int ping_interval = 5;
|
static int ping_interval = 5;
|
||||||
static int interactive = 0;
|
static int interactive = 0;
|
||||||
|
static char *ifname_prefix = NULL;
|
||||||
|
|
||||||
struct cli_txt_entry {
|
struct cli_txt_entry {
|
||||||
struct dl_list list;
|
struct dl_list list;
|
||||||
|
@ -404,6 +405,12 @@ static int _wpa_ctrl_command(struct wpa_ctrl *ctrl, char *cmd, int print)
|
||||||
printf("Not connected to wpa_supplicant - command dropped.\n");
|
printf("Not connected to wpa_supplicant - command dropped.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (ifname_prefix) {
|
||||||
|
os_snprintf(buf, sizeof(buf), "IFNAME=%s %s",
|
||||||
|
ifname_prefix, cmd);
|
||||||
|
buf[sizeof(buf) - 1] = '\0';
|
||||||
|
cmd = buf;
|
||||||
|
}
|
||||||
len = sizeof(buf) - 1;
|
len = sizeof(buf) - 1;
|
||||||
ret = wpa_ctrl_request(ctrl, cmd, os_strlen(cmd), buf, &len,
|
ret = wpa_ctrl_request(ctrl, cmd, os_strlen(cmd), buf, &len,
|
||||||
wpa_cli_msg_cb);
|
wpa_cli_msg_cb);
|
||||||
|
@ -2889,6 +2896,16 @@ static int wpa_request(struct wpa_ctrl *ctrl, int argc, char *argv[])
|
||||||
int count;
|
int count;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
if (argc > 1 && os_strncasecmp(argv[0], "IFNAME=", 7) == 0) {
|
||||||
|
ifname_prefix = argv[0] + 7;
|
||||||
|
argv = &argv[1];
|
||||||
|
argc--;
|
||||||
|
} else
|
||||||
|
ifname_prefix = NULL;
|
||||||
|
|
||||||
|
if (argc == 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
cmd = wpa_cli_commands;
|
cmd = wpa_cli_commands;
|
||||||
while (cmd->cmd) {
|
while (cmd->cmd) {
|
||||||
|
|
Loading…
Reference in a new issue