mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-hlr.git
synced 2025-11-03 05:33:28 +00:00
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
This commit is contained in:
committed by
Vadim Yanitskiy
parent
d4693f652a
commit
7c06eea5b2
@@ -43,6 +43,7 @@ enum subscr_create_on_demand_mode {
|
|||||||
SUBSCR_COD_MODE_DISABLED = 0,
|
SUBSCR_COD_MODE_DISABLED = 0,
|
||||||
SUBSCR_COD_MODE_NO_MSISDN,
|
SUBSCR_COD_MODE_NO_MSISDN,
|
||||||
SUBSCR_COD_MODE_RAND_MSISDN,
|
SUBSCR_COD_MODE_RAND_MSISDN,
|
||||||
|
SUBSCR_COD_MODE_MSISDN_FROM_IMSI,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hlr {
|
struct hlr {
|
||||||
|
|||||||
@@ -209,6 +209,9 @@ static int subscr_create_on_demand(const char *imsi)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
switch (g_hlr->subscr_create_on_demand.mode) {
|
switch (g_hlr->subscr_create_on_demand.mode) {
|
||||||
|
case SUBSCR_COD_MODE_MSISDN_FROM_IMSI:
|
||||||
|
OSMO_STRLCPY_ARRAY(msisdn, imsi);
|
||||||
|
break;
|
||||||
case SUBSCR_COD_MODE_RAND_MSISDN:
|
case SUBSCR_COD_MODE_RAND_MSISDN:
|
||||||
if (generate_new_msisdn(msisdn, imsi, g_hlr->subscr_create_on_demand.rand_msisdn_len) != 0)
|
if (generate_new_msisdn(msisdn, imsi, g_hlr->subscr_create_on_demand.rand_msisdn_len) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@@ -288,6 +288,9 @@ static void config_write_subscr_create_on_demand(struct vty *vty)
|
|||||||
const char *flags_str;
|
const char *flags_str;
|
||||||
|
|
||||||
switch (g_hlr->subscr_create_on_demand.mode) {
|
switch (g_hlr->subscr_create_on_demand.mode) {
|
||||||
|
case SUBSCR_COD_MODE_MSISDN_FROM_IMSI:
|
||||||
|
vty_out(vty, " subscriber-create-on-demand msisdn-from-imsi");
|
||||||
|
break;
|
||||||
case SUBSCR_COD_MODE_RAND_MSISDN:
|
case SUBSCR_COD_MODE_RAND_MSISDN:
|
||||||
vty_out(vty, " subscriber-create-on-demand %u",
|
vty_out(vty, " subscriber-create-on-demand %u",
|
||||||
g_hlr->subscr_create_on_demand.rand_msisdn_len);
|
g_hlr->subscr_create_on_demand.rand_msisdn_len);
|
||||||
@@ -810,9 +813,10 @@ DEFUN(cfg_no_store_imei, cfg_no_store_imei_cmd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEFUN(cfg_subscr_create_on_demand, cfg_subscr_create_on_demand_cmd,
|
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|msisdn-from-imsi|<3-15>) (none|cs|ps|cs+ps)",
|
||||||
"Make a new record when a subscriber is first seen.\n"
|
"Make a new record when a subscriber is first seen.\n"
|
||||||
"Do not automatically assign MSISDN.\n"
|
"Do not automatically assign MSISDN.\n"
|
||||||
|
"Assign MSISDN identical to subscriber's IMSI.\n"
|
||||||
"Length of an automatically assigned MSISDN.\n"
|
"Length of an automatically assigned MSISDN.\n"
|
||||||
"Do not allow any NAM (Network Access Mode) by default.\n"
|
"Do not allow any NAM (Network Access Mode) by default.\n"
|
||||||
"Allow access to circuit switched NAM by default.\n"
|
"Allow access to circuit switched NAM by default.\n"
|
||||||
@@ -825,6 +829,8 @@ DEFUN(cfg_subscr_create_on_demand, cfg_subscr_create_on_demand_cmd,
|
|||||||
|
|
||||||
if (strcmp(argv[0], "no-msisdn") == 0) {
|
if (strcmp(argv[0], "no-msisdn") == 0) {
|
||||||
mode = SUBSCR_COD_MODE_NO_MSISDN;
|
mode = SUBSCR_COD_MODE_NO_MSISDN;
|
||||||
|
} else if (strcmp(argv[0], "msisdn-from-imsi") == 0) {
|
||||||
|
mode = SUBSCR_COD_MODE_MSISDN_FROM_IMSI;
|
||||||
} else { /* random MSISDN */
|
} else { /* random MSISDN */
|
||||||
mode = SUBSCR_COD_MODE_RAND_MSISDN;
|
mode = SUBSCR_COD_MODE_RAND_MSISDN;
|
||||||
rand_msisdn_len = atoi(argv[0]);
|
rand_msisdn_len = atoi(argv[0]);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ OsmoHLR(config-hlr)# list
|
|||||||
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)
|
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
|
store-imei
|
||||||
no store-imei
|
no store-imei
|
||||||
subscriber-create-on-demand (no-msisdn|<3-15>) (none|cs|ps|cs+ps)
|
subscriber-create-on-demand (no-msisdn|msisdn-from-imsi|<3-15>) (none|cs|ps|cs+ps)
|
||||||
no subscriber-create-on-demand
|
no subscriber-create-on-demand
|
||||||
|
|
||||||
OsmoHLR(config-hlr)# gsup
|
OsmoHLR(config-hlr)# gsup
|
||||||
|
|||||||
@@ -10,6 +10,14 @@ hlr
|
|||||||
subscriber-create-on-demand no-msisdn none
|
subscriber-create-on-demand no-msisdn none
|
||||||
...
|
...
|
||||||
|
|
||||||
|
OsmoHLR(config-hlr)# subscriber-create-on-demand msisdn-from-imsi cs+ps
|
||||||
|
OsmoHLR(config-hlr)# show running-config
|
||||||
|
...
|
||||||
|
hlr
|
||||||
|
...
|
||||||
|
subscriber-create-on-demand msisdn-from-imsi cs+ps
|
||||||
|
...
|
||||||
|
|
||||||
OsmoHLR(config-hlr)# subscriber-create-on-demand 3 none
|
OsmoHLR(config-hlr)# subscriber-create-on-demand 3 none
|
||||||
OsmoHLR(config-hlr)# show running-config
|
OsmoHLR(config-hlr)# show running-config
|
||||||
...
|
...
|
||||||
|
|||||||
Reference in New Issue
Block a user