|
From 26b77b7cdc70beddc68507f74372a4e2815720f0 Mon Sep 17 00:00:00 2001
|
|
From: Yousong Zhou <yszhou4tech@gmail.com>
|
|
Date: Sun, 17 May 2015 10:53:44 +0800
|
|
Subject: [PATCH 210/210] xl2tpd-control: show all available commands in
|
|
--help.
|
|
|
|
---
|
|
xl2tpd-control.c | 63 ++++++++++++++++++++++++++++++++++++++----------------
|
|
1 file changed, 44 insertions(+), 19 deletions(-)
|
|
|
|
diff --git a/xl2tpd-control.c b/xl2tpd-control.c
|
|
index 6b08850..b98ff24 100644
|
|
--- a/xl2tpd-control.c
|
|
+++ b/xl2tpd-control.c
|
|
@@ -51,6 +51,7 @@ struct command_t
|
|
char *name;
|
|
int (*handler) (FILE*, char* tunnel, int optc, char *optv[]);
|
|
int requires_tunnel;
|
|
+ char *help;
|
|
};
|
|
|
|
int command_add_lac (FILE*, char* tunnel, int optc, char *optv[]);
|
|
@@ -65,13 +66,29 @@ int command_available (FILE*, char* tunnel, int optc, char *optv[]);
|
|
|
|
struct command_t commands[] = {
|
|
/* Keep this command mapping for backwards compat */
|
|
- {"add", &command_add_lac, TUNNEL_REQUIRED},
|
|
- {"connect", &command_connect_lac, TUNNEL_REQUIRED},
|
|
- {"disconnect", &command_disconnect_lac, TUNNEL_REQUIRED},
|
|
- {"remove", &command_remove_lac, TUNNEL_REQUIRED},
|
|
+ {"add", &command_add_lac, TUNNEL_REQUIRED,
|
|
+ "\tadd\tadds new or modify existing lac configuration.\n"
|
|
+ "\t\tConfiguration must be specified as command options in\n"
|
|
+ "\t\t<key>=<value> pairs format.\n"
|
|
+ "\t\tSee available options in xl2tpd.conf(5)\n"
|
|
+ },
|
|
+ {"connect", &command_connect_lac, TUNNEL_REQUIRED,
|
|
+ "\tconnect\ttries to activate the tunnel.\n"
|
|
+ "\t\tUsername and secret for the tunnel can be passed as\n"
|
|
+ "\t\tcommand options.\n"
|
|
+ },
|
|
+ {"disconnect", &command_disconnect_lac, TUNNEL_REQUIRED,
|
|
+ "\tdisconnect\tdisconnects the tunnel.\n"
|
|
+ },
|
|
+ {"remove", &command_remove_lac, TUNNEL_REQUIRED,
|
|
+ "\tremove\tremoves lac configuration from xl2tpd.\n"
|
|
+ "\t\txl2tpd disconnects the tunnel before removing.\n"
|
|
+ },
|
|
|
|
/* LAC commands */
|
|
- {"add-lac", &command_add_lac, TUNNEL_REQUIRED},
|
|
+ {"add-lac", &command_add_lac, TUNNEL_REQUIRED,
|
|
+ "\tadd-lns\tadds new or modify existing lns configuration.\n"
|
|
+ },
|
|
{"connect-lac", &command_connect_lac, TUNNEL_REQUIRED},
|
|
{"disconnect-lac", &command_disconnect_lac, TUNNEL_REQUIRED},
|
|
{"remove-lac", &command_remove_lac, TUNNEL_REQUIRED},
|
|
@@ -89,36 +106,44 @@ struct command_t commands[] = {
|
|
|
|
void usage()
|
|
{
|
|
+ int i;
|
|
+
|
|
printf ("\nxl2tpd server version %s\n", SERVER_VERSION);
|
|
printf ("Usage: xl2tpd-control [-c <PATH>] <command> <tunnel name> [<COMMAND OPTIONS>]\n"
|
|
"\n"
|
|
" -c\tspecifies xl2tpd control file\n"
|
|
" -d\tspecify xl2tpd-control to run in debug mode\n"
|
|
"--help\tshows extended help\n"
|
|
- "Available commands: add, connect, disconnect, remove, add-lns\n"
|
|
);
|
|
+
|
|
+ printf ("Available commands: ");
|
|
+ for (i = 0; commands[i].name; i++) {
|
|
+ struct command_t *command = &commands[i];
|
|
+ int last = command[1].name == NULL;
|
|
+
|
|
+ printf ("%s%s", command->name, !last ? ", " : "\n");
|
|
+ }
|
|
}
|
|
|
|
void help()
|
|
{
|
|
+ int i;
|
|
+
|
|
usage();
|
|
printf (
|
|
"\n"
|
|
"Commands help:\n"
|
|
- "\tadd\tadds new or modify existing lac configuration.\n"
|
|
- "\t\tConfiguration must be specified as command options in\n"
|
|
- "\t\t<key>=<value> pairs format.\n"
|
|
- "\t\tSee available options in xl2tpd.conf(5)\n"
|
|
- "\tconnect\ttries to activate the tunnel.\n"
|
|
- "\t\tUsername and secret for the tunnel can be passed as\n"
|
|
- "\t\tcommand options.\n"
|
|
- "\tdisconnect\tdisconnects the tunnel.\n"
|
|
- "\tremove\tremoves lac configuration from xl2tpd.\n"
|
|
- "\t\txl2tpd disconnects the tunnel before removing.\n"
|
|
- "\n"
|
|
- "\tadd-lns\tadds new or modify existing lns configuration.\n"
|
|
- "See xl2tpd-control man page for more help\n"
|
|
);
|
|
+
|
|
+ for (i = 0; commands[i].name; i++) {
|
|
+ struct command_t *command = &commands[i];
|
|
+
|
|
+ if (!command->help)
|
|
+ continue;
|
|
+ printf ("%s", command->help);
|
|
+ }
|
|
+ /*FIXME Ha! there is currently no manpage for xl2tpd-control */
|
|
+ printf ("See xl2tpd-control man page for more help\n");
|
|
}
|
|
|
|
void cleanup(void)
|
|
--
|
|
1.7.10.4
|
|
|