VTY: add the dyn_ts_allow_tch_f option
This option allows to enable or disable TCH/F allocation on the TCH/F_TCH/H_PDCH timeslots. Until now, source code modification was required to enable this feature. Related: OS#1778 Change-Id: Id18cab25844dc854a66b4e2713e90c3f43afa712
This commit is contained in:
parent
4aa75e74f4
commit
7f3724e04d
|
@ -384,7 +384,6 @@ struct gsm_network {
|
|||
|
||||
/* Allow or disallow TCH/F on dynamic TCH/F_TCH/H_PDCH; OS#1778 */
|
||||
bool dyn_ts_allow_tch_f;
|
||||
/* TODO: vty for this; related: OS#1781 */
|
||||
|
||||
/* all active subscriber connections. */
|
||||
struct llist_head subscr_conns;
|
||||
|
|
|
@ -821,6 +821,8 @@ static int config_write_net(struct vty *vty)
|
|||
vty_out(vty, " timer t3119 %u%s", gsmnet->T3119, VTY_NEWLINE);
|
||||
vty_out(vty, " timer t3122 %u%s", gsmnet->T3122, VTY_NEWLINE);
|
||||
vty_out(vty, " timer t3141 %u%s", gsmnet->T3141, VTY_NEWLINE);
|
||||
vty_out(vty, " dyn_ts_allow_tch_f %d%s",
|
||||
gsmnet->dyn_ts_allow_tch_f ? 1 : 0, VTY_NEWLINE);
|
||||
vty_out(vty, " subscriber-keep-in-ram %d%s",
|
||||
gsmnet->subscr_group->keep_subscr, VTY_NEWLINE);
|
||||
if (gsmnet->tz.override != 0) {
|
||||
|
|
|
@ -197,6 +197,18 @@ DEFUN(cfg_net_mm_info, cfg_net_mm_info_cmd,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_net_dyn_ts_allow_tch_f,
|
||||
cfg_net_dyn_ts_allow_tch_f_cmd,
|
||||
"dyn_ts_allow_tch_f (0|1)",
|
||||
"Allow or disallow allocating TCH/F on TCH_F_TCH_H_PDCH timeslots\n"
|
||||
"Disallow TCH/F on TCH_F_TCH_H_PDCH (default)\n"
|
||||
"Allow TCH/F on TCH_F_TCH_H_PDCH\n")
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
gsmnet->dyn_ts_allow_tch_f = atoi(argv[0]) ? true : false;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_net_subscr_keep,
|
||||
cfg_net_subscr_keep_cmd,
|
||||
"subscriber-keep-in-ram (0|1)",
|
||||
|
@ -295,6 +307,7 @@ int common_cs_vty_init(struct gsm_network *network,
|
|||
install_element(GSMNET_NODE, &cfg_net_timezone_cmd);
|
||||
install_element(GSMNET_NODE, &cfg_net_timezone_dst_cmd);
|
||||
install_element(GSMNET_NODE, &cfg_net_no_timezone_cmd);
|
||||
install_element(GSMNET_NODE, &cfg_net_dyn_ts_allow_tch_f_cmd);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -301,6 +301,20 @@ int main(int argc, char **argv)
|
|||
} else
|
||||
DEBUGP(DMNCC, "Using internal MNCC handler.\n");
|
||||
|
||||
/*
|
||||
* For osmo-nitb, skip TCH/F for now, because otherwise dyn TS
|
||||
* always imply the possibility to have a mix of TCH/F and
|
||||
* TCH/H channels; if two phones request a TCH/F and a TCH/H,
|
||||
* respectively, they cannot call each other. If we deny TCH/F,
|
||||
* they will both fall back to TCH/H, and dynamic channels are
|
||||
* usable. See OS#1778.
|
||||
*
|
||||
* A third-party MSC may well be able to handle a TCH/H TCH/F
|
||||
* mismatch. Moreover, this option may be overwritten in the
|
||||
* config file or in VTY.
|
||||
*/
|
||||
bsc_gsmnet->dyn_ts_allow_tch_f = false;
|
||||
|
||||
/* Read the config */
|
||||
rc = bsc_network_configure(config_file);
|
||||
if (rc < 0) {
|
||||
|
@ -313,19 +327,6 @@ int main(int argc, char **argv)
|
|||
#endif
|
||||
bsc_api_init(bsc_gsmnet, msc_bsc_api());
|
||||
|
||||
/*
|
||||
* For osmo-nitb, skip TCH/F for now, because otherwise dyn TS
|
||||
* always imply the possibility to have a mix of TCH/F and
|
||||
* TCH/H channels; if two phones request a TCH/F and a TCH/H,
|
||||
* respectively, they cannot call each other. If we deny TCH/F,
|
||||
* they will both fall back to TCH/H, and dynamic channels are
|
||||
* usable. See http://osmocom.org/issues/1778.
|
||||
*
|
||||
* A third-party MSC may well be able to handle a TCH/H TCH/F
|
||||
* mismatch.
|
||||
*/
|
||||
bsc_gsmnet->dyn_ts_allow_tch_f = false;
|
||||
|
||||
/* start control interface after reading config for
|
||||
* ctrl_vty_get_bind_addr() */
|
||||
bsc_gsmnet->ctrl = bsc_controlif_setup(bsc_gsmnet,
|
||||
|
|
Loading…
Reference in New Issue