fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/37780?usp=email )
Change subject: subscriber-create-on-demand: add mode for MSISDN=IMSI ......................................................................
subscriber-create-on-demand: add mode for MSISDN=IMSI
In may be desirable for some users to assign deterministic MSISDNs when subscriber-create-on-demand is enabled. This can be achieved by assigning MSISDN=IMSI. This commit adds a new mode for that.
Change-Id: I3470492f5e46de7246d9a74e80c37f80f455d851 --- M include/osmocom/hlr/hlr.h M src/hlr.c M src/hlr_vty.c M tests/test_nodes.vty M tests/test_subscr_create_on_demand.vty 5 files changed, 20 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/80/37780/1
diff --git a/include/osmocom/hlr/hlr.h b/include/osmocom/hlr/hlr.h index 4bdb5b0..92a5994 100644 --- a/include/osmocom/hlr/hlr.h +++ b/include/osmocom/hlr/hlr.h @@ -43,6 +43,7 @@ SUBSCR_COD_MODE_DISABLED = 0, SUBSCR_COD_MODE_NO_MSISDN, SUBSCR_COD_MODE_RAND_MSISDN, + SUBSCR_COD_MODE_IMSI, };
struct hlr { diff --git a/src/hlr.c b/src/hlr.c index 44c96b5..3db3333 100644 --- a/src/hlr.c +++ b/src/hlr.c @@ -209,6 +209,9 @@ return -1;
switch (g_hlr->subscr_create_on_demand.mode) { + case SUBSCR_COD_MODE_IMSI: + OSMO_STRLCPY_ARRAY(msisdn, imsi); + break; case SUBSCR_COD_MODE_RAND_MSISDN: if (generate_new_msisdn(msisdn, imsi, g_hlr->subscr_create_on_demand.rand_msisdn_len) != 0) return -1; diff --git a/src/hlr_vty.c b/src/hlr_vty.c index ae1e13e..01d3291 100644 --- a/src/hlr_vty.c +++ b/src/hlr_vty.c @@ -288,6 +288,9 @@ const char *flags_str;
switch (g_hlr->subscr_create_on_demand.mode) { + case SUBSCR_COD_MODE_IMSI: + vty_out(vty, " subscriber-create-on-demand imsi"); + break; case SUBSCR_COD_MODE_RAND_MSISDN: vty_out(vty, " subscriber-create-on-demand %u", g_hlr->subscr_create_on_demand.rand_msisdn_len); @@ -810,9 +813,10 @@ }
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)", + "subscriber-create-on-demand (no-msisdn|imsi|<3-15>) (none|cs|ps|cs+ps)", "Make a new record when a subscriber is first seen.\n" "Do not automatically assign MSISDN.\n" + "Assign MSISDN identical to subscriber's IMSI.\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" @@ -825,6 +829,8 @@
if (strcmp(argv[0], "no-msisdn") == 0) { mode = SUBSCR_COD_MODE_NO_MSISDN; + } else if (strcmp(argv[0], "imsi") == 0) { + mode = SUBSCR_COD_MODE_IMSI; } else { /* random MSISDN */ mode = SUBSCR_COD_MODE_RAND_MSISDN; rand_msisdn_len = atoi(argv[0]); diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty index 02a5552..9392c96 100644 --- a/tests/test_nodes.vty +++ b/tests/test_nodes.vty @@ -73,7 +73,7 @@ reject-cause (not-found|no-proxy) (imsi-unknown|illegal-ms|plmn-not-allowed|la-not-allowed|roaming-not-allowed|no-suitable-cell-in-la|net-fail|congestion|auth-unacceptable|proto-error-unspec) store-imei no store-imei - subscriber-create-on-demand (no-msisdn|<3-15>) (none|cs|ps|cs+ps) + subscriber-create-on-demand (no-msisdn|imsi|<3-15>) (none|cs|ps|cs+ps) no subscriber-create-on-demand
OsmoHLR(config-hlr)# gsup diff --git a/tests/test_subscr_create_on_demand.vty b/tests/test_subscr_create_on_demand.vty index fb587ae..df8e5e4 100644 --- a/tests/test_subscr_create_on_demand.vty +++ b/tests/test_subscr_create_on_demand.vty @@ -10,6 +10,14 @@ subscriber-create-on-demand no-msisdn none ...
+OsmoHLR(config-hlr)# subscriber-create-on-demand imsi cs+ps +OsmoHLR(config-hlr)# show running-config +... +hlr +... + subscriber-create-on-demand imsi cs+ps +... + OsmoHLR(config-hlr)# subscriber-create-on-demand 3 none OsmoHLR(config-hlr)# show running-config ...