nat: Document all parameters of the VTY commands
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
index 4cb3537..1646b59 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
@@ -40,6 +40,8 @@
 static struct bsc_nat *_nat;
 
 
+#define BSC_STR "Information about BSCs\n"
+#define MGCP_STR "MGCP related status\n"
 #define PAGING_STR "Paging\n"
 #define SMSC_REWRITE "SMSC Rewriting\n"
 
@@ -168,7 +170,8 @@
 
 
 DEFUN(show_sccp, show_sccp_cmd, "show sccp connections",
-      SHOW_STR "Display information about current SCCP connections")
+      SHOW_STR "Display information about SCCP\n"
+      "All active connections\n")
 {
 	struct sccp_connections *con;
 	vty_out(vty, "Listing all open SCCP connections%s", VTY_NEWLINE);
@@ -189,7 +192,8 @@
 }
 
 DEFUN(show_bsc, show_bsc_cmd, "show bsc connections",
-      SHOW_STR "Display information about current BSCs")
+      SHOW_STR BSC_STR
+      "All active connections\n")
 {
 	struct bsc_connection *con;
 	struct sockaddr_in sock;
@@ -207,7 +211,7 @@
 }
 
 DEFUN(show_bsc_mgcp, show_bsc_mgcp_cmd, "show bsc mgcp NR",
-      SHOW_STR "Display the MGCP status for a given BSC")
+      SHOW_STR BSC_STR MGCP_STR "Identifier of the BSC\n")
 {
 	struct bsc_connection *con;
 	int nr = atoi(argv[0]);
@@ -242,7 +246,7 @@
 }
 
 DEFUN(show_bsc_cfg, show_bsc_cfg_cmd, "show bsc config",
-      SHOW_STR "Display information about known BSC configs")
+      SHOW_STR BSC_STR "Configuration of BSCs\n")
 {
 	struct bsc_config *conf;
 	llist_for_each_entry(conf, &_nat->bsc_configs, entry) {
@@ -300,7 +304,8 @@
 DEFUN(show_stats,
       show_stats_cmd,
       "show statistics [NR]",
-	SHOW_STR "Display network statistics")
+      SHOW_STR "Display network statistics\n"
+      "Number of the BSC\n")
 {
 	struct bsc_config *conf;
 
@@ -343,7 +348,8 @@
 DEFUN(show_msc,
       show_msc_cmd,
       "show msc connection",
-      SHOW_STR "Show the status of the MSC connection.")
+      SHOW_STR "MSC related information\n"
+      "Status of the A-link connection\n")
 {
 	if (!_nat->msc_con) {
 		vty_out(vty, "The MSC is not yet configured.\n");
@@ -358,7 +364,7 @@
 DEFUN(close_bsc,
       close_bsc_cmd,
       "close bsc connection BSC_NR",
-      "Close the connection with the BSC identified by the config number.")
+      "Close\n" "A-link\n" "Connection\n" "Identifier of the BSC\n")
 {
 	struct bsc_connection *bsc;
 	int bsc_nr = atoi(argv[0]);
@@ -384,7 +390,8 @@
 DEFUN(cfg_nat_msc_ip,
       cfg_nat_msc_ip_cmd,
       "msc ip A.B.C.D",
-      "Set the IP address of the MSC.")
+      "MSC related configuration\n"
+      "Configure the IP address\n" IP_STR)
 {
 	bsc_nat_set_msc_ip(_nat, argv[0]);
 	return CMD_SUCCESS;
@@ -393,7 +400,9 @@
 DEFUN(cfg_nat_msc_port,
       cfg_nat_msc_port_cmd,
       "msc port <1-65500>",
-      "Set the port of the MSC.")
+      "MSC related configuration\n"
+      "Configure the port\n"
+      "Port number\n")
 {
 	_nat->main_dest->port = atoi(argv[0]);
 	return CMD_SUCCESS;
@@ -402,7 +411,9 @@
 DEFUN(cfg_nat_auth_time,
       cfg_nat_auth_time_cmd,
       "timeout auth <1-256>",
-      "The time to wait for an auth response.")
+      "Timeout configuration\n"
+      "Authentication timeout\n"
+      "Timeout in seconds\n")
 {
 	_nat->auth_timeout = atoi(argv[0]);
 	return CMD_SUCCESS;
@@ -411,7 +422,9 @@
 DEFUN(cfg_nat_ping_time,
       cfg_nat_ping_time_cmd,
       "timeout ping NR",
-      "Send a ping every NR seconds. Negative to disable.")
+      "Timeout configuration\n"
+      "Time between two pings\n"
+      "Timeout in seconds\n")
 {
 	_nat->ping_timeout = atoi(argv[0]);
 	return CMD_SUCCESS;
@@ -420,7 +433,9 @@
 DEFUN(cfg_nat_pong_time,
       cfg_nat_pong_time_cmd,
       "timeout pong NR",
-      "Wait NR seconds for the PONG response. Should be smaller than ping.")
+      "Timeout configuration\n"
+      "Waiting for pong timeout\n"
+      "Timeout in seconds\n")
 {
 	_nat->pong_timeout = atoi(argv[0]);
 	return CMD_SUCCESS;
@@ -428,7 +443,8 @@
 
 DEFUN(cfg_nat_token, cfg_nat_token_cmd,
       "token TOKEN",
-      "Set a token for the NAT")
+      "Authentication token configuration\n"
+      "Token of the BSC, currently transferred in cleartext\n")
 {
 	bsc_replace_string(_nat, &_nat->token, argv[0]);
 	return CMD_SUCCESS;
@@ -603,7 +619,8 @@
 }
 
 /* per BSC configuration */
-DEFUN(cfg_bsc, cfg_bsc_cmd, "bsc BSC_NR", "Select a BSC to configure")
+DEFUN(cfg_bsc, cfg_bsc_cmd, "bsc BSC_NR",
+      "BSC configuration\n" "Identifier of the BSC\n")
 {
 	int bsc_nr = atoi(argv[0]);
 	struct bsc_config *bsc;
@@ -627,7 +644,9 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_bsc_token, cfg_bsc_token_cmd, "token TOKEN", "Set the token")
+DEFUN(cfg_bsc_token, cfg_bsc_token_cmd, "token TOKEN",
+      "Authentication token configuration\n"
+      "Token of the BSC, currently transferred in cleartext\n")
 {
 	struct bsc_config *conf = vty->index;
 
@@ -678,9 +697,10 @@
 DEFUN(cfg_lst_imsi_allow,
       cfg_lst_imsi_allow_cmd,
       "access-list NAME imsi-allow [REGEXP]",
-      "Add the regexp to the allowed list\n"
-      "The name of the access-list\n"
-      "The regexp of allowed IMSIs\n")
+      "Access list commands\n"
+      "Name of the access list\n"
+      "Add allowed IMSI to the list\n"
+      "Regexp for IMSIs\n")
 {
 	struct bsc_nat_acc_lst *acc;
 	struct bsc_nat_acc_lst_entry *entry;
@@ -701,9 +721,10 @@
 DEFUN(cfg_lst_imsi_deny,
       cfg_lst_imsi_deny_cmd,
       "access-list NAME imsi-deny [REGEXP]",
-      "Add the regexp to the deny list\n"
-      "The name of the access-list\n"
-      "The regexp of to be denied IMSIs\n")
+      "Access list commands\n"
+      "Name of the access list\n"
+      "Add denied IMSI to the list\n"
+      "Regexp for IMSIs\n")
 {
 	struct bsc_nat_acc_lst *acc;
 	struct bsc_nat_acc_lst_entry *entry;
@@ -740,7 +761,7 @@
 DEFUN(show_acc_lst,
       show_acc_lst_cmd,
       "show access-list NAME",
-      SHOW_STR "The name of the access list\n")
+      SHOW_STR "IMSI access list\n" "Name of the access list\n")
 {
 	struct bsc_nat_acc_lst *acc;
 	acc = bsc_nat_acc_lst_find(_nat, argv[0]);
@@ -794,7 +815,8 @@
 DEFUN(cfg_bsc_paging,
       cfg_bsc_paging_cmd,
       "paging forbidden (0|1)",
-      PAGING_STR "Forbid sending PAGING REQUESTS to the BSC.")
+      PAGING_STR "Forbid sending PAGING REQUESTS to the BSC.\n"
+      "Do not forbid\n" "Forbid\n")
 {
 	struct bsc_config *conf = vty->index;
 
@@ -809,7 +831,7 @@
 DEFUN(cfg_bsc_desc,
       cfg_bsc_desc_cmd,
       "description DESC",
-      "Provide a description for the given BSC.")
+      "Provide a description for the given BSC.\n" "Description\n")
 {
 	struct bsc_config *conf = vty->index;
 
@@ -843,7 +865,9 @@
 
 DEFUN(test_regex, test_regex_cmd,
       "test regex PATTERN STRING",
-      "Check if the string is matching the current pattern.")
+      "Test utilities\n"
+      "Regexp testing\n" "The regexp pattern\n"
+      "The string to match\n")
 {
 	regex_t reg;
 	char *str = NULL;
@@ -918,7 +942,7 @@
 
 DEFUN(cfg_nat_no_pgroup, cfg_nat_no_pgroup_cmd,
       "no paging-group <0-1000>",
-      NO_STR "Delete paging-group\n")
+      NO_STR "Delete paging-group\n" "Paging-group number\n")
 {
 	int group = atoi(argv[0]);
 	struct bsc_nat_paging_group *pgroup;