[PATCH 2/5] wlantest: add new cli cmd to dump the help menu for all the supported cmds
Gokul Sivakumar
gokulkumar792 at gmail.com
Wed Nov 3 09:50:21 PDT 2021
Having a help cli cmd to view all the supported commands is helpful when
running the wlantest_cli manually instead via the python test scripts.
$ wlantest_cli help
commands:
ping = test connection to wlantest
terminate = terminate wlantest
list_bss = get BSS list
list_sta <BSSID> = get STA list
flush = drop all collected BSS data
clear_sta_counters <BSSID> <STA> = clear STA counters
clear_bss_counters <BSSID> = clear BSS counters
get_sta_counter <counter> <BSSID> <STA> = get STA counter value
get_bss_counter <counter> <BSSID> = get BSS counter value
inject <frame> <prot> <sender> <BSSID> <STA/ff:ff:ff:ff:ff:ff>
send <prot> <raw frame as hex dump>
version = get wlantest version
add_passphrase <passphrase> = add a known passphrase
add_wepkey <WEP key> = add a known WEP key
info_sta <field> <BSSID> <STA> = get STA information
info_bss <field> <BSSID> = get BSS information
clear_tdls_counters <BSSID> <STA1> <STA2> = clear TDLS counters
get_tdls_counter <counter> <BSSID> <STA1> <STA2> = get TDLS counter value
get_bss_counter <counter> <BSSID> = get BSS counter value
relog = re-open log-file (allow rolling logs)
get_tx_tid <BSSID> <STA> <TID> = get STA TX TID counter value
get_rx_tid <BSSID> <STA> <TID> = get STA RX TID counter value
help = show this usage help
$ wlantest_cli help add_passphrase
commands:
add_passphrase <passphrase> = add a known passphrase
Signed-off-by: Gokul Sivakumar <gokulkumar792 at gmail.com>
---
wlantest/wlantest_cli.c | 58 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/wlantest/wlantest_cli.c b/wlantest/wlantest_cli.c
index ad5a48dea..7e0f8444a 100644
--- a/wlantest/wlantest_cli.c
+++ b/wlantest/wlantest_cli.c
@@ -14,6 +14,8 @@
#include "utils/edit.h"
#include "wlantest_ctrl.h"
+static void print_help(FILE *stream, const char *cmd);
+static char ** wlantest_cli_cmd_list(void);
static int get_cmd_arg_num(const char *str, int pos)
{
@@ -1566,6 +1568,27 @@ static char ** complete_get_tid(int s, const char *str, int pos)
}
+static int wlantest_cli_cmd_help(int s, int argc, char *argv[])
+{
+ print_help(stdout, argc > 0 ? argv[0] : NULL);
+ return 0;
+}
+
+
+static char ** wlantest_cli_complete_help(int s, const char *str, int pos)
+{
+ int arg = get_cmd_arg_num(str, pos);
+ char **res = NULL;
+
+ switch (arg) {
+ case 1:
+ res = wlantest_cli_cmd_list();
+ break;
+ }
+
+ return res;
+}
+
struct wlantest_cli_cmd {
const char *cmd;
int (*handler)(int s, int argc, char *argv[]);
@@ -1623,10 +1646,45 @@ static const struct wlantest_cli_cmd wlantest_cli_commands[] = {
{ "get_rx_tid", cmd_get_rx_tid,
"<BSSID> <STA> <TID> = get STA RX TID counter value",
complete_get_tid },
+ { "help", wlantest_cli_cmd_help,
+ "= show this usage help", wlantest_cli_complete_help },
{ NULL, NULL, NULL, NULL }
};
+/*
+ * Prints command usage, lines are padded with the specified string.
+ */
+static void print_cmd_help(FILE *stream, const struct wlantest_cli_cmd *cmd,
+ const char *pad)
+{
+ char c;
+ size_t n;
+
+ if (cmd->usage == NULL)
+ return;
+ fprintf(stream, "%s%s ", pad, cmd->cmd);
+ for (n = 0; (c = cmd->usage[n]); n++) {
+ fprintf(stream, "%c", c);
+ if (c == '\n')
+ fprintf(stream, "%s", pad);
+ }
+ fprintf(stream, "\n");
+}
+
+
+static void print_help(FILE *stream, const char *cmd)
+{
+ int n;
+
+ fprintf(stream, "commands:\n");
+ for (n = 0; wlantest_cli_commands[n].cmd; n++) {
+ if (cmd == NULL || str_starts(wlantest_cli_commands[n].cmd, cmd))
+ print_cmd_help(stream, &wlantest_cli_commands[n], " ");
+ }
+}
+
+
static int ctrl_command(int s, int argc, char *argv[])
{
const struct wlantest_cli_cmd *cmd, *match = NULL;
--
2.25.1
More information about the Hostap
mailing list