VTY: More context sensitive help messages

This commit is contained in:
Harald Welte 2010-05-11 21:53:49 +02:00
parent e9ea26935e
commit 8f0ed55b52
1 changed files with 87 additions and 16 deletions

View File

@ -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]);