aboutsummaryrefslogtreecommitdiffstats
path: root/src/hlr_vty.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hlr_vty.c')
-rw-r--r--src/hlr_vty.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/hlr_vty.c b/src/hlr_vty.c
index e4cc4be..e6567cc 100644
--- a/src/hlr_vty.c
+++ b/src/hlr_vty.c
@@ -33,6 +33,7 @@
#include <osmocom/vty/misc.h>
#include <osmocom/abis/ipa.h>
+#include "db.h"
#include "hlr.h"
#include "hlr_vty.h"
#include "hlr_vty_subscr.h"
@@ -76,6 +77,23 @@ static int config_write_hlr(struct vty *vty)
vty_out(vty, " store-imei%s", VTY_NEWLINE);
if (g_hlr->db_file_path && strcmp(g_hlr->db_file_path, HLR_DEFAULT_DB_FILE_PATH))
vty_out(vty, " database %s%s", g_hlr->db_file_path, VTY_NEWLINE);
+ if (g_hlr->subscr_create_on_demand) {
+ const char *flags_str = "none";
+ uint8_t flags = g_hlr->subscr_create_on_demand_flags;
+ unsigned int rand_msisdn_len = g_hlr->subscr_create_on_demand_rand_msisdn_len;
+
+ if ((flags & DB_SUBSCR_FLAG_NAM_CS) && (flags & DB_SUBSCR_FLAG_NAM_PS))
+ flags_str = "cs+ps";
+ else if (flags & DB_SUBSCR_FLAG_NAM_CS)
+ flags_str = "cs";
+ else if (flags & DB_SUBSCR_FLAG_NAM_PS)
+ flags_str = "ps";
+
+ if (rand_msisdn_len)
+ vty_out(vty, " subscriber-create-on-demand %i %s%s", rand_msisdn_len, flags_str, VTY_NEWLINE);
+ else
+ vty_out(vty, " subscriber-create-on-demand no-msisdn %s%s", flags_str, VTY_NEWLINE);
+ }
return CMD_SUCCESS;
}
@@ -336,6 +354,42 @@ DEFUN(cfg_no_store_imei, cfg_no_store_imei_cmd,
return CMD_SUCCESS;
}
+DEFUN(cfg_subscr_create_on_demand, cfg_subscr_create_on_demand_cmd,
+ "subscriber-create-on-demand (no-msisdn|<3-15>) (none|cs|ps|cs+ps)",
+ "Make a new record when a subscriber is first seen.\n"
+ "Do not automatically assign MSISDN.\n"
+ "Length of an automatically assigned MSISDN.\n"
+ "Do not allow any NAM (Network Access Mode) by default.\n"
+ "Allow access to circuit switched NAM by default.\n"
+ "Allow access to packet switched NAM by default.\n"
+ "Allow access to circuit and packet switched NAM by default.\n")
+{
+ unsigned int rand_msisdn_len = 0;
+ uint8_t flags = 0x00;
+
+ if (strcmp(argv[0], "no-msisdn") != 0)
+ rand_msisdn_len = atoi(argv[0]);
+
+ if (strstr(argv[1], "cs"))
+ flags |= DB_SUBSCR_FLAG_NAM_CS;
+ if (strstr(argv[1], "ps"))
+ flags |= DB_SUBSCR_FLAG_NAM_PS;
+
+ g_hlr->subscr_create_on_demand = true;
+ g_hlr->subscr_create_on_demand_rand_msisdn_len = rand_msisdn_len;
+ g_hlr->subscr_create_on_demand_flags = flags;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_no_subscr_create_on_demand, cfg_no_subscr_create_on_demand_cmd,
+ "no subscriber-create-on-demand",
+ "Do not make a new record when a subscriber is first seen.\n")
+{
+ g_hlr->subscr_create_on_demand = false;
+ return CMD_SUCCESS;
+}
+
/***********************************************************************
* Common Code
***********************************************************************/
@@ -404,6 +458,8 @@ void hlr_vty_init(const struct log_info *cat)
install_element(HLR_NODE, &cfg_ncss_guard_timeout_cmd);
install_element(HLR_NODE, &cfg_store_imei_cmd);
install_element(HLR_NODE, &cfg_no_store_imei_cmd);
+ install_element(HLR_NODE, &cfg_subscr_create_on_demand_cmd);
+ install_element(HLR_NODE, &cfg_no_subscr_create_on_demand_cmd);
hlr_vty_subscriber_init();
}