From 925c57fb545b072159a831bff852c92795704dfe Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 27 Jan 2015 10:58:29 +0100 Subject: nitb: Make the last change configurable Introduce a NITB node and add the subscriber creation as config name in there. --- openbsc/include/openbsc/vty.h | 1 + openbsc/src/libcommon/common_vty.c | 1 + openbsc/src/libmsc/vty_interface_layer3.c | 47 +++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) (limited to 'openbsc') diff --git a/openbsc/include/openbsc/vty.h b/openbsc/include/openbsc/vty.h index 9e07eb797..818a20e64 100644 --- a/openbsc/include/openbsc/vty.h +++ b/openbsc/include/openbsc/vty.h @@ -32,6 +32,7 @@ enum bsc_vty_node { TRUNK_NODE, PGROUP_NODE, MNCC_INT_NODE, + NITB_NODE, BSC_NODE, SMPP_NODE, SMPP_ESME_NODE, diff --git a/openbsc/src/libcommon/common_vty.c b/openbsc/src/libcommon/common_vty.c index 3f8f16f7d..186fbe0b7 100644 --- a/openbsc/src/libcommon/common_vty.c +++ b/openbsc/src/libcommon/common_vty.c @@ -106,6 +106,7 @@ enum node_type bsc_vty_go_parent(struct vty *vty) case BSC_NODE: case MSC_NODE: case MNCC_INT_NODE: + case NITB_NODE: default: if (bsc_vty_is_config_node(vty, vty->node)) vty->node = CONFIG_NODE; diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c index dec949412..97a2a098c 100644 --- a/openbsc/src/libmsc/vty_interface_layer3.c +++ b/openbsc/src/libmsc/vty_interface_layer3.c @@ -1053,6 +1053,47 @@ DEFUN(logging_fltr_imsi, log_set_imsi_filter(tgt, subscr); return CMD_SUCCESS; } + +static struct cmd_node nitb_node = { + NITB_NODE, + "%s(config-nitb)# ", + 1, +}; + +DEFUN(cfg_nitb, cfg_nitb_cmd, + "nitb", "Configure NITB options") +{ + vty->node = NITB_NODE; + return CMD_SUCCESS; +} + +DEFUN(cfg_nitb_subscr_create, cfg_nitb_subscr_create_cmd, + "subscriber-create-on-demand", + "Make a new record when a subscriber is first seen.\n") +{ + struct gsm_network *gsmnet = gsmnet_from_vty(vty); + gsmnet->create_subscriber = 1; + return CMD_SUCCESS; +} + +DEFUN(cfg_nitb_no_subscr_create, cfg_nitb_no_subscr_create_cmd, + "no subscriber-create-on-demand", + NO_STR "Make a new record when a subscriber is first seen.\n") +{ + struct gsm_network *gsmnet = gsmnet_from_vty(vty); + gsmnet->create_subscriber = 0; + return CMD_SUCCESS; +} + +static int config_write_nitb(struct vty *vty) +{ + struct gsm_network *gsmnet = gsmnet_from_vty(vty); + vty_out(vty, "nitb%s", VTY_NEWLINE); + vty_out(vty, " %ssubscriber-create-on-demand%s", + gsmnet->create_subscriber ? "" : "no ", VTY_NEWLINE); + return CMD_SUCCESS; +} + int bsc_vty_init_extra(void) { osmo_signal_register_handler(SS_SCALL, scall_cbfn, NULL); @@ -1100,5 +1141,11 @@ int bsc_vty_init_extra(void) install_element(CFG_LOG_NODE, &log_level_sms_cmd); install_element(CFG_LOG_NODE, &logging_fltr_imsi_cmd); + + install_element(CONFIG_NODE, &cfg_nitb_cmd); + install_node(&nitb_node, config_write_nitb); + install_element(NITB_NODE, &cfg_nitb_subscr_create_cmd); + install_element(NITB_NODE, &cfg_nitb_no_subscr_create_cmd); + return 0; } -- cgit v1.2.3