From 26b77b7cdc70beddc68507f74372a4e2815720f0 Mon Sep 17 00:00:00 2001 From: Yousong Zhou 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= 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 ] []\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= 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