aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/vty_interface.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-05-11 21:53:49 +0200
committerHarald Welte <laforge@gnumonks.org>2010-05-11 21:53:49 +0200
commit8f0ed55b526b689c4bcb275478eac929fe23deb5 (patch)
tree5246a2a06924645f7eaf690ea6e11991efbf22b5 /openbsc/src/vty_interface.c
parente9ea26935ef53f1b860b1d3bf85644a174de0f9c (diff)
VTY: More context sensitive help messages
Diffstat (limited to 'openbsc/src/vty_interface.c')
-rw-r--r--openbsc/src/vty_interface.c103
1 files changed, 87 insertions, 16 deletions
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 851a6039d..547681ce3 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -432,7 +432,9 @@ static void trx_dump_vty(struct vty *vty, struct gsm_bts_trx *trx)
DEFUN(show_trx,
show_trx_cmd,
"show trx [bts_nr] [trx_nr]",
- SHOW_STR "Display information about a TRX\n")
+ SHOW_STR "Display information about a TRX\n"
+ "BTS Number\n"
+ "TRX Number\n")
{
struct gsm_network *net = gsmnet;
struct gsm_bts *bts = NULL;
@@ -497,7 +499,8 @@ static void ts_dump_vty(struct vty *vty, struct gsm_bts_trx_ts *ts)
DEFUN(show_ts,
show_ts_cmd,
"show timeslot [bts_nr] [trx_nr] [ts_nr]",
- SHOW_STR "Display information about a TS\n")
+ SHOW_STR "Display information about a TS\n"
+ "BTS Number\n" "TRX Number\n" "Timeslot Number\n")
{
struct gsm_network *net = gsmnet;
struct gsm_bts *bts;
@@ -666,7 +669,9 @@ static void call_dump_vty(struct vty *vty, struct gsm_call *call)
DEFUN(show_lchan,
show_lchan_cmd,
"show lchan [bts_nr] [trx_nr] [ts_nr] [lchan_nr]",
- SHOW_STR "Display information about a logical channel\n")
+ SHOW_STR "Display information about a logical channel\n"
+ "BTS Number\n" "TRX Number\n" "Timeslot Number\n"
+ "Logical Channel Number\n")
{
struct gsm_network *net = gsmnet;
struct gsm_bts *bts;
@@ -762,7 +767,8 @@ static void e1line_dump_vty(struct vty *vty, struct e1inp_line *line)
DEFUN(show_e1line,
show_e1line_cmd,
"show e1_line [line_nr]",
- SHOW_STR "Display information about a E1 line\n")
+ SHOW_STR "Display information about a E1 line\n"
+ "E1 Line Number\n")
{
struct e1inp_line *line;
@@ -795,7 +801,8 @@ static void e1ts_dump_vty(struct vty *vty, struct e1inp_ts *ts)
DEFUN(show_e1ts,
show_e1ts_cmd,
"show e1_timeslot [line_nr] [ts_nr]",
- SHOW_STR "Display information about a E1 timeslot\n")
+ SHOW_STR "Display information about a E1 timeslot\n"
+ "E1 Line Number\n" "E1 Timeslot Number\n")
{
struct e1inp_line *line = NULL;
struct e1inp_ts *ts;
@@ -859,7 +866,8 @@ static void bts_paging_dump_vty(struct vty *vty, struct gsm_bts *bts)
DEFUN(show_paging,
show_paging_cmd,
"show paging [bts_nr]",
- SHOW_STR "Display information about paging reuqests of a BTS\n")
+ SHOW_STR "Display information about paging reuqests of a BTS\n"
+ "BTS Number\n")
{
struct gsm_network *net = gsmnet;
struct gsm_bts *bts;
@@ -886,10 +894,11 @@ DEFUN(show_paging,
return CMD_SUCCESS;
}
+#define NETWORK_STR "Configure the GSM network\n"
+
DEFUN(cfg_net,
cfg_net_cmd,
- "network",
- "Configure the GSM network")
+ "network", NETWORK_STR)
{
vty->index = gsmnet;
vty->node = GSMNET_NODE;
@@ -947,7 +956,11 @@ DEFUN(cfg_net_name_long,
DEFUN(cfg_net_auth_policy,
cfg_net_auth_policy_cmd,
"auth policy (closed|accept-all|token)",
- "Set the GSM network authentication policy\n")
+ "Authentication (not cryptographic)\n"
+ "Set the GSM network authentication policy\n"
+ "Require the MS to be activated in HLR\n"
+ "Accept all MS, whether in HLR or not\n"
+ "Use SMS-token based authentication\n")
{
enum gsm_auth_policy policy = gsm_auth_policy_parse(argv[0]);
@@ -987,7 +1000,12 @@ DEFUN(cfg_net_neci,
DEFUN(cfg_net_rrlp_mode, cfg_net_rrlp_mode_cmd,
"rrlp mode (none|ms-based|ms-preferred|ass-preferred)",
- "Set the Radio Resource Location Protocol Mode")
+ "Radio Resource Location Protocol\n"
+ "Set the Radio Resource Location Protocol Mode\n"
+ "Don't send RRLP request\n"
+ "Request MS-based location\n"
+ "Request any location, prefer MS-based\n"
+ "Request any location, prefer MS-assisted\n")
{
gsmnet->rrlp.mode = rrlp_mode_parse(argv[0]);
@@ -1003,9 +1021,13 @@ DEFUN(cfg_net_mm_info, cfg_net_mm_info_cmd,
return CMD_SUCCESS;
}
+#define HANDOVER_STR "Handover Options\n"
+
DEFUN(cfg_net_handover, cfg_net_handover_cmd,
"handover (0|1)",
- "Whether or not to use in-call handover")
+ HANDOVER_STR
+ "Don't perform in-call handover\n"
+ "Perform in-call handover\n")
{
int enable = atoi(argv[0]);
@@ -1020,8 +1042,14 @@ DEFUN(cfg_net_handover, cfg_net_handover_cmd,
return CMD_SUCCESS;
}
+#define HO_WIN_STR HANDOVER_STR "Measurement Window\n"
+#define HO_WIN_RXLEV_STR HO_WIN_STR "Received Level Averaging\n"
+#define HO_WIN_RXQUAL_STR HO_WIN_STR "Received Quality Averaging\n"
+#define HO_PBUDGET_STR HANDOVER_STR "Power Budget\n"
+
DEFUN(cfg_net_ho_win_rxlev_avg, cfg_net_ho_win_rxlev_avg_cmd,
"handover window rxlev averaging <1-10>",
+ HO_WIN_RXLEV_STR
"How many RxLev measurements are used for averaging")
{
gsmnet->handover.win_rxlev_avg = atoi(argv[0]);
@@ -1030,6 +1058,7 @@ DEFUN(cfg_net_ho_win_rxlev_avg, cfg_net_ho_win_rxlev_avg_cmd,
DEFUN(cfg_net_ho_win_rxqual_avg, cfg_net_ho_win_rxqual_avg_cmd,
"handover window rxqual averaging <1-10>",
+ HO_WIN_RXQUAL_STR
"How many RxQual measurements are used for averaging")
{
gsmnet->handover.win_rxqual_avg = atoi(argv[0]);
@@ -1038,6 +1067,7 @@ DEFUN(cfg_net_ho_win_rxqual_avg, cfg_net_ho_win_rxqual_avg_cmd,
DEFUN(cfg_net_ho_win_rxlev_neigh_avg, cfg_net_ho_win_rxlev_avg_neigh_cmd,
"handover window rxlev neighbor averaging <1-10>",
+ HO_WIN_RXLEV_STR
"How many RxQual measurements are used for averaging")
{
gsmnet->handover.win_rxlev_avg_neigh = atoi(argv[0]);
@@ -1046,6 +1076,7 @@ DEFUN(cfg_net_ho_win_rxlev_neigh_avg, cfg_net_ho_win_rxlev_avg_neigh_cmd,
DEFUN(cfg_net_ho_pwr_interval, cfg_net_ho_pwr_interval_cmd,
"handover power budget interval <1-99>",
+ HO_PBUDGET_STR
"How often to check if we have a better cell (SACCH frames)")
{
gsmnet->handover.pwr_interval = atoi(argv[0]);
@@ -1054,6 +1085,7 @@ DEFUN(cfg_net_ho_pwr_interval, cfg_net_ho_pwr_interval_cmd,
DEFUN(cfg_net_ho_pwr_hysteresis, cfg_net_ho_pwr_hysteresis_cmd,
"handover power budget hysteresis <0-999>",
+ HO_PBUDGET_STR
"How many dB does a neighbor to be stronger to become a HO candidate")
{
gsmnet->handover.pwr_hysteresis = atoi(argv[0]);
@@ -1062,6 +1094,7 @@ DEFUN(cfg_net_ho_pwr_hysteresis, cfg_net_ho_pwr_hysteresis_cmd,
DEFUN(cfg_net_ho_max_distance, cfg_net_ho_max_distance_cmd,
"handover maximum distance <0-9999>",
+ HANDOVER_STR
"How big is the maximum timing advance before HO is forced")
{
gsmnet->handover.max_distance = atoi(argv[0]);
@@ -1072,6 +1105,7 @@ DEFUN(cfg_net_ho_max_distance, cfg_net_ho_max_distance_cmd,
DEFUN(cfg_net_T##number, \
cfg_net_T##number##_cmd, \
"timer t" #number " <0-65535>", \
+ "Configure GSM Timers\n" \
doc) \
{ \
int value = atoi(argv[0]); \
@@ -1103,7 +1137,8 @@ DECLARE_TIMER(3141, "Currently not used.")
DEFUN(cfg_bts,
cfg_bts_cmd,
"bts BTS_NR",
- "Select a BTS to configure\n")
+ "Select a BTS to configure\n"
+ "BTS Number\n")
{
int bts_nr = atoi(argv[0]);
struct gsm_bts *bts;
@@ -1266,9 +1301,13 @@ DEFUN(cfg_bts_unit_id,
return CMD_SUCCESS;
}
+#define OML_STR "Organization & Maintenance Link\n"
+#define IPA_STR "ip.access Specific Options\n"
+
DEFUN(cfg_bts_stream_id,
cfg_bts_stream_id_cmd,
"oml ip.access stream_id <0-255>",
+ OML_STR IPA_STR
"Set the ip.access Stream ID of the OML link of this BTS\n")
{
struct gsm_bts *bts = vty->index;
@@ -1284,10 +1323,12 @@ DEFUN(cfg_bts_stream_id,
return CMD_SUCCESS;
}
+#define OML_E1_STR OML_STR "E1 Line\n"
DEFUN(cfg_bts_oml_e1,
cfg_bts_oml_e1_cmd,
"oml e1 line E1_LINE timeslot <1-31> sub-slot (0|1|2|3|full)",
+ OML_E1_STR
"E1 interface to be used for OML\n")
{
struct gsm_bts *bts = vty->index;
@@ -1301,6 +1342,7 @@ DEFUN(cfg_bts_oml_e1,
DEFUN(cfg_bts_oml_e1_tei,
cfg_bts_oml_e1_tei_cmd,
"oml e1 tei <0-63>",
+ OML_E1_STR
"Set the TEI to be used for OML")
{
struct gsm_bts *bts = vty->index;
@@ -1312,7 +1354,9 @@ DEFUN(cfg_bts_oml_e1_tei,
DEFUN(cfg_bts_challoc, cfg_bts_challoc_cmd,
"channel allocator (ascending|descending)",
- "Should the channel allocator allocate in reverse TRX order?")
+ "Channnel Allocator\n" "Channel Allocator\n"
+ "Allocate Timeslots and Transceivers in ascending order\n"
+ "Allocate Timeslots and Transceivers in descending order\n")
{
struct gsm_bts *bts = vty->index;
@@ -1324,9 +1368,12 @@ DEFUN(cfg_bts_challoc, cfg_bts_challoc_cmd,
return CMD_SUCCESS;
}
+#define RACH_STR "Random Access Control Channel\n"
+
DEFUN(cfg_bts_rach_tx_integer,
cfg_bts_rach_tx_integer_cmd,
"rach tx integer <0-15>",
+ RACH_STR
"Set the raw tx integer value in RACH Control parameters IE")
{
struct gsm_bts *bts = vty->index;
@@ -1337,6 +1384,7 @@ DEFUN(cfg_bts_rach_tx_integer,
DEFUN(cfg_bts_rach_max_trans,
cfg_bts_rach_max_trans_cmd,
"rach max transmission (1|2|4|7)",
+ RACH_STR
"Set the maximum number of RACH burst transmissions")
{
struct gsm_bts *bts = vty->index;
@@ -1344,10 +1392,13 @@ DEFUN(cfg_bts_rach_max_trans,
return CMD_SUCCESS;
}
+#define NM_STR "Network Management\n"
+
DEFUN(cfg_bts_rach_nm_b_thresh,
cfg_bts_rach_nm_b_thresh_cmd,
"rach nm busy threshold <0-255>",
- "Set the NM Busy Threshold in DB")
+ RACH_STR NM_STR
+ "Set the NM Busy Threshold in dB")
{
struct gsm_bts *bts = vty->index;
bts->rach_b_thresh = atoi(argv[0]);
@@ -1357,7 +1408,8 @@ DEFUN(cfg_bts_rach_nm_b_thresh,
DEFUN(cfg_bts_rach_nm_ldavg,
cfg_bts_rach_nm_ldavg_cmd,
"rach nm load average <0-65535>",
- "Set the NM Loadaver Slots value")
+ RACH_STR NM_STR
+ "Set the NM Loadaverage Slots value")
{
struct gsm_bts *bts = vty->index;
bts->rach_ldavg_slots = atoi(argv[0]);
@@ -1419,8 +1471,12 @@ DEFUN(cfg_bts_per_loc_upd, cfg_bts_per_loc_upd_cmd,
return CMD_SUCCESS;
}
+#define GPRS_TEXT "GPRS Packet Network\n"
+
DEFUN(cfg_bts_prs_bvci, cfg_bts_gprs_bvci_cmd,
"gprs cell bvci <2-65535>",
+ GPRS_TEXT
+ "GPRS Cell Settings\n"
"GPRS BSSGP VC Identifier")
{
struct gsm_bts *bts = vty->index;
@@ -1437,6 +1493,7 @@ DEFUN(cfg_bts_prs_bvci, cfg_bts_gprs_bvci_cmd,
DEFUN(cfg_bts_gprs_nsei, cfg_bts_gprs_nsei_cmd,
"gprs nsei <0-65535>",
+ GPRS_TEXT
"GPRS NS Entity Identifier")
{
struct gsm_bts *bts = vty->index;
@@ -1451,9 +1508,13 @@ DEFUN(cfg_bts_gprs_nsei, cfg_bts_gprs_nsei_cmd,
return CMD_SUCCESS;
}
+#define NSVC_TEXT "Network Service Virtual Connection (NS-VC)\n" \
+ "NSVC Logical Number\n"
DEFUN(cfg_bts_gprs_nsvci, cfg_bts_gprs_nsvci_cmd,
"gprs nsvc <0-1> nsvci <0-65535>",
+ GPRS_TEXT NSVC_TEXT
+ "NS Virtual Connection Identifier\n"
"GPRS NS VC Identifier")
{
struct gsm_bts *bts = vty->index;
@@ -1471,6 +1532,7 @@ DEFUN(cfg_bts_gprs_nsvci, cfg_bts_gprs_nsvci_cmd,
DEFUN(cfg_bts_gprs_nsvc_lport, cfg_bts_gprs_nsvc_lport_cmd,
"gprs nsvc <0-1> local udp port <0-65535>",
+ GPRS_TEXT NSVC_TEXT
"GPRS NS Local UDP Port")
{
struct gsm_bts *bts = vty->index;
@@ -1488,6 +1550,7 @@ DEFUN(cfg_bts_gprs_nsvc_lport, cfg_bts_gprs_nsvc_lport_cmd,
DEFUN(cfg_bts_gprs_nsvc_rport, cfg_bts_gprs_nsvc_rport_cmd,
"gprs nsvc <0-1> remote udp port <0-65535>",
+ GPRS_TEXT NSVC_TEXT
"GPRS NS Remote UDP Port")
{
struct gsm_bts *bts = vty->index;
@@ -1505,6 +1568,7 @@ DEFUN(cfg_bts_gprs_nsvc_rport, cfg_bts_gprs_nsvc_rport_cmd,
DEFUN(cfg_bts_gprs_nsvc_rip, cfg_bts_gprs_nsvc_rip_cmd,
"gprs nsvc <0-1> remote ip A.B.C.D",
+ GPRS_TEXT NSVC_TEXT
"GPRS NS Remote IP Address")
{
struct gsm_bts *bts = vty->index;
@@ -1524,6 +1588,7 @@ DEFUN(cfg_bts_gprs_nsvc_rip, cfg_bts_gprs_nsvc_rip_cmd,
DEFUN(cfg_bts_gprs_rac, cfg_bts_gprs_rac_cmd,
"gprs routing area <0-255>",
+ GPRS_TEXT
"GPRS Routing Area Code")
{
struct gsm_bts *bts = vty->index;
@@ -1540,7 +1605,11 @@ DEFUN(cfg_bts_gprs_rac, cfg_bts_gprs_rac_cmd,
DEFUN(cfg_bts_gprs_mode, cfg_bts_gprs_mode_cmd,
"gprs mode (none|gprs|egprs)",
- "GPRS Mode for this BTS")
+ GPRS_TEXT
+ "GPRS Mode for this BTS\n"
+ "GPRS Disabled on this BTS\n"
+ "GPRS Enabled on this BTS\n"
+ "EGPRS (EDGE) Enabled on this BTS\n")
{
struct gsm_bts *bts = vty->index;
@@ -1549,11 +1618,13 @@ DEFUN(cfg_bts_gprs_mode, cfg_bts_gprs_mode_cmd,
return CMD_SUCCESS;
}
+#define TRX_TEXT "Radio Transceiver\n"
/* per TRX configuration */
DEFUN(cfg_trx,
cfg_trx_cmd,
"trx TRX_NR",
+ TRX_TEXT
"Select a TRX to configure")
{
int trx_nr = atoi(argv[0]);