aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/manuals/vty/hlr_vty_reference.xml16
-rw-r--r--src/hlr_vty_subscr.c28
-rw-r--r--tests/test_subscriber.vty42
3 files changed, 82 insertions, 4 deletions
diff --git a/doc/manuals/vty/hlr_vty_reference.xml b/doc/manuals/vty/hlr_vty_reference.xml
index e5fd0f2..71a0236 100644
--- a/doc/manuals/vty/hlr_vty_reference.xml
+++ b/doc/manuals/vty/hlr_vty_reference.xml
@@ -811,6 +811,22 @@
<param name='IMEI' doc='Set IMEI (use for debug only!)' />
</params>
</command>
+ <command id='subscriber (imsi|msisdn|id|imei) IDENT update network-access-mode (none|cs|ps|cs+ps)'>
+ <params>
+ <param name='subscriber' doc='Subscriber management commands' />
+ <param name='imsi' doc='Identify subscriber by IMSI' />
+ <param name='msisdn' doc='Identify subscriber by MSISDN (phone number)' />
+ <param name='id' doc='Identify subscriber by database ID' />
+ <param name='imei' doc='Identify subscriber by IMEI' />
+ <param name='IDENT' doc='IMSI/MSISDN/ID/IMEI of the subscriber' />
+ <param name='update' doc='Set or update subscriber data' />
+ <param name='network-access-mode' doc='Set Network Access Mode (NAM) of the subscriber' />
+ <param name='none' doc='Do not allow access to circuit switched or packet switched services' />
+ <param name='cs' doc='Allow access to circuit switched services only' />
+ <param name='ps' doc='Allow access to packet switched services only' />
+ <param name='cs+ps' doc='Allow access to both circuit and packet switched services' />
+ </params>
+ </command>
</node>
<node id='config'>
<name>config</name>
diff --git a/src/hlr_vty_subscr.c b/src/hlr_vty_subscr.c
index 3078577..73dfab6 100644
--- a/src/hlr_vty_subscr.c
+++ b/src/hlr_vty_subscr.c
@@ -577,6 +577,33 @@ DEFUN(subscriber_imei,
return CMD_SUCCESS;
}
+DEFUN(subscriber_nam,
+ subscriber_nam_cmd,
+ SUBSCR_UPDATE "network-access-mode (none|cs|ps|cs+ps)",
+ SUBSCR_UPDATE_HELP
+ "Set Network Access Mode (NAM) of the subscriber\n"
+ "Do not allow access to circuit switched or packet switched services\n"
+ "Allow access to circuit switched services only\n"
+ "Allow access to packet switched services only\n"
+ "Allow access to both circuit and packet switched services\n")
+{
+ struct hlr_subscriber subscr;
+ const char *id_type = argv[0];
+ const char *id = argv[1];
+ bool nam_cs = strstr(argv[2], "cs");
+ bool nam_ps = strstr(argv[2], "ps");
+
+ if (get_subscr_by_argv(vty, id_type, id, &subscr))
+ return CMD_WARNING;
+
+ if (nam_cs != subscr.nam_cs)
+ hlr_subscr_nam(g_hlr, &subscr, nam_cs, 0);
+ if (nam_ps != subscr.nam_ps)
+ hlr_subscr_nam(g_hlr, &subscr, nam_ps, 1);
+
+ return CMD_SUCCESS;
+}
+
void hlr_vty_subscriber_init(void)
{
@@ -590,4 +617,5 @@ void hlr_vty_subscriber_init(void)
install_element(ENABLE_NODE, &subscriber_no_aud3g_cmd);
install_element(ENABLE_NODE, &subscriber_aud3g_cmd);
install_element(ENABLE_NODE, &subscriber_imei_cmd);
+ install_element(ENABLE_NODE, &subscriber_nam_cmd);
}
diff --git a/tests/test_subscriber.vty b/tests/test_subscriber.vty
index 265f8fa..8e9026d 100644
--- a/tests/test_subscriber.vty
+++ b/tests/test_subscriber.vty
@@ -12,6 +12,7 @@ OsmoHLR# list
subscriber (imsi|msisdn|id|imei) IDENT update aud3g none
subscriber (imsi|msisdn|id|imei) IDENT update aud3g milenage k K (op|opc) OP_C [ind-bitlen] [<0-28>]
subscriber (imsi|msisdn|id|imei) IDENT update imei (none|IMEI)
+ subscriber (imsi|msisdn|id|imei) IDENT update network-access-mode (none|cs|ps|cs+ps)
OsmoHLR# subscriber?
subscriber Subscriber management commands
@@ -125,10 +126,11 @@ OsmoHLR# subscriber msisdn 423 show
MSISDN: 423
OsmoHLR# subscriber imsi 123456789023000 update ?
- msisdn Set MSISDN (phone number) of the subscriber
- aud2g Set 2G authentication data
- aud3g Set UMTS authentication data (3G, and 2G with UMTS AKA)
- imei Set IMEI of the subscriber (normally populated from MSC, no need to set this manually)
+ msisdn Set MSISDN (phone number) of the subscriber
+ aud2g Set 2G authentication data
+ aud3g Set UMTS authentication data (3G, and 2G with UMTS AKA)
+ imei Set IMEI of the subscriber (normally populated from MSC, no need to set this manually)
+ network-access-mode Set Network Access Mode (NAM) of the subscriber
OsmoHLR# subscriber imsi 123456789023000 update msisdn ?
none Remove MSISDN (phone number)
@@ -437,3 +439,35 @@ OsmoHLR# show subscriber id 99
IMSI: 000000000000099
MSISDN: none
IMEI: 12345 (INVALID LENGTH!)
+
+OsmoHLR# subscriber imsi 123456789023000 create
+% Created subscriber 123456789023000
+ ID: 101
+ IMSI: 123456789023000
+ MSISDN: none
+OsmoHLR# subscriber imsi 123456789023000 update network-access-mode none
+OsmoHLR# subscriber imsi 123456789023000 show
+ ID: 101
+ IMSI: 123456789023000
+ MSISDN: none
+ CS disabled
+ PS disabled
+OsmoHLR# subscriber imsi 123456789023000 update network-access-mode cs
+OsmoHLR# subscriber imsi 123456789023000 show
+ ID: 101
+ IMSI: 123456789023000
+ MSISDN: none
+ PS disabled
+OsmoHLR# subscriber imsi 123456789023000 update network-access-mode ps
+OsmoHLR# subscriber imsi 123456789023000 show
+ ID: 101
+ IMSI: 123456789023000
+ MSISDN: none
+ CS disabled
+OsmoHLR# subscriber imsi 123456789023000 update network-access-mode cs+ps
+OsmoHLR# subscriber imsi 123456789023000 show
+ ID: 101
+ IMSI: 123456789023000
+ MSISDN: none
+OsmoHLR# subscriber imsi 123456789023000 delete
+% Deleted subscriber for IMSI '123456789023000'