osmo-hlr/tests/test_subscriber.vty

479 lines
16 KiB
Plaintext
Raw Permalink Normal View History

OsmoHLR> enable
OsmoHLR# list
...
subscriber (imsi|msisdn|id|imei) IDENT show
show subscriber (imsi|msisdn|id|imei) IDENT
subscriber imsi IDENT create
subscriber (imsi|msisdn|id|imei) IDENT delete
subscriber (imsi|msisdn|id|imei) IDENT update msisdn (none|MSISDN)
subscriber (imsi|msisdn|id|imei) IDENT update aud2g none
subscriber (imsi|msisdn|id|imei) IDENT update aud2g (comp128v1|comp128v2|comp128v3|xor-2g) ki KI
subscriber (imsi|msisdn|id|imei) IDENT update aud3g none
subscriber (imsi|msisdn|id|imei) IDENT update aud3g (milenage|tuak) k K (op|opc) OP_C [ind-bitlen] [<0-28>]
subscriber (imsi|msisdn|id|imei) IDENT update aud3g xor-3g k K [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)
show mslookup services
...
OsmoHLR# subscriber?
subscriber Subscriber management commands
OsmoHLR# subscriber ?
imsi Identify subscriber by IMSI
msisdn Identify subscriber by MSISDN (phone number)
id Identify subscriber by database ID
imei Identify subscriber by IMEI
OsmoHLR# subscriber imsi ?
IDENT IMSI/MSISDN/ID/IMEI of the subscriber
OsmoHLR# subscriber msisdn ?
IDENT IMSI/MSISDN/ID/IMEI of the subscriber
OsmoHLR# subscriber id ?
IDENT IMSI/MSISDN/ID/IMEI of the subscriber
OsmoHLR# subscriber imei ?
IDENT IMSI/MSISDN/ID/IMEI of the subscriber
OsmoHLR# subscriber imsi 123456789023000 show
% No subscriber for imsi = '123456789023000'
OsmoHLR# subscriber id 101 show
% No subscriber for id = '101'
OsmoHLR# subscriber msisdn 12345 show
% No subscriber for msisdn = '12345'
OsmoHLR# subscriber imei 357613004448485 show
% Checksum validated and stripped for search: imei = '35761300444848'
% No subscriber for imei = '35761300444848'
OsmoHLR# show subscriber imsi 123456789023000
% No subscriber for imsi = '123456789023000'
OsmoHLR# show subscriber id 101
% No subscriber for id = '101'
OsmoHLR# show subscriber msisdn 12345
% No subscriber for msisdn = '12345'
OsmoHLR# show subscriber imei 357613004448485
% Checksum validated and stripped for search: imei = '35761300444848'
% No subscriber for imei = '35761300444848'
OsmoHLR# subscriber imsi 1234567890230001 create
% Not a valid IMSI: 1234567890230001
OsmoHLR# subscriber imsi 12345678902300x create
% Not a valid IMSI: 12345678902300x
OsmoHLR# subscriber imsi 12345 create
% Not a valid IMSI: 12345
OsmoHLR# subscriber imsi 123456789023000 create
% Created subscriber 123456789023000
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber msisdn 12345 show
% No subscriber for msisdn = '12345'
OsmoHLR# subscriber imsi 123456789023000 update msisdn 12345
% Updated subscriber IMSI='123456789023000' to MSISDN='12345'
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 12345
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 12345
OsmoHLR# subscriber msisdn 12345 show
ID: 101
IMSI: 123456789023000
MSISDN: 12345
OsmoHLR# subscriber msisdn 12345 update msisdn 423
% Updated subscriber IMSI='123456789023000' to MSISDN='423'
OsmoHLR# subscriber msisdn 12345 show
% No subscriber for msisdn = '12345'
OsmoHLR# subscriber msisdn 423 update msisdn none
% Updated subscriber IMSI='123456789023000': removed MSISDN
OsmoHLR# subscriber msisdn 423 show
% No subscriber for msisdn = '423'
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber imsi 123456789023000 update msisdn 423
% Updated subscriber IMSI='123456789023000' to MSISDN='423'
OsmoHLR# subscriber msisdn 423 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
OsmoHLR# subscriber msisdn 423 show
ID: 101
IMSI: 123456789023000
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)
network-access-mode Set Network Access Mode (NAM) of the subscriber
OsmoHLR# subscriber imsi 123456789023000 update msisdn ?
none Remove MSISDN (phone number)
MSISDN New MSISDN (phone number)
OsmoHLR# subscriber imsi 123456789023000 update aud2g ?
none Delete 2G authentication data
comp128v1 Use COMP128v1 algorithm
comp128v2 Use COMP128v2 algorithm
comp128v3 Use COMP128v3 algorithm
xor-2g Use XOR-2G algorithm
OsmoHLR# subscriber imsi 123456789023000 update aud2g comp128v1 ?
ki Set Ki Encryption Key
OsmoHLR# subscriber imsi 123456789023000 update aud2g comp128v1 ki ?
KI Ki as 32 hexadecimal characters
OsmoHLR# subscriber imsi 123456789023000 update aud2g comp128v1 ki val ?
<cr>
OsmoHLR# subscriber imsi 123456789023000 update aud2g xor-2g ki Deaf0ff1ceD0d0DabbedD1ced1ceF00d
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: XOR-2G
KI=deaf0ff1ced0d0dabbedd1ced1cef00d
OsmoHLR# subscriber imsi 123456789023000 update aud2g comp128v1 ki BeefedCafeFaceAcedAddedDecadeFee
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v1
KI=beefedcafefaceacedaddeddecadefee
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v1
KI=beefedcafefaceacedaddeddecadefee
OsmoHLR# subscriber msisdn 423 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v1
KI=beefedcafefaceacedaddeddecadefee
OsmoHLR# subscriber id 101 update aud2g comp128v2 ki CededEffacedAceFacedBadFadedBeef
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v2
KI=cededeffacedacefacedbadfadedbeef
OsmoHLR# subscriber msisdn 423 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v2
KI=cededeffacedacefacedbadfadedbeef
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v2
KI=cededeffacedacefacedbadfadedbeef
OsmoHLR# subscriber msisdn 423 update aud2g comp128v3 ki C01ffedC1cadaeAc1d1f1edAcac1aB0a
OsmoHLR# subscriber msisdn 423 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber id 101 update aud2g nonsense ki BeefedCafeFaceAcedAddedDecadeFee
% Unknown command.
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber id 101 update aud2g milenage ki BeefedCafeFaceAcedAddedDecadeFee
% Unknown command.
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber id 101 update aud2g xor-2g ki CoiffedCicadaeAcidifiedAcaciaBoa
% Invalid value for KI: 'CoiffedCicadaeAcidifiedAcaciaBoa'
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber id 101 update aud2g xor-2g ki C01ffedC1cadaeAc1d1f1edAcac1aB0aX
% Invalid value for KI: 'C01ffedC1cadaeAc1d1f1edAcac1aB0aX'
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v3
KI=c01ffedc1cadaeac1d1f1edacac1ab0a
OsmoHLR# subscriber id 101 update aud2g none
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
OsmoHLR# subscriber imsi 123456789023000 update aud3g ?
none Delete 3G authentication data
milenage Use Milenage algorithm
tuak Use TUAK algorithm
xor-3g Use XOR-3G algorithm
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage ?
k Set Encryption Key K
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k ?
K K as 32/64 hexadecimal characters
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d ?
op Set OP key
opc Set OPC key
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d opc ?
OP_C OP or OPC as 32/64 hexadecimal characters
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d opc CededEffacedAceFacedBadFadedBeef ?
[ind-bitlen] Set IND bit length
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d opc CededEffacedAceFacedBadFadedBeef ind-bitlen ?
[<0-28>] IND bit length value (default: 5)
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d opc CededEffacedAceFacedBadFadedBeef
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
OPC=cededeffacedacefacedbadfadedbeef
IND-bitlen=5
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d op DeafBeddedBabeAcceededFadedDecaf
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
OP=deafbeddedbabeacceededfadeddecaf
IND-bitlen=5
OsmoHLR# subscriber imsi 123456789023000 update aud3g none
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d opc CededEffacedAceFacedBadFadedBeef ind-bitlen 23
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
OPC=cededeffacedacefacedbadfadedbeef
IND-bitlen=23
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k CoiffedCicadaeAcidifiedAcaciaBoa opc CededEffacedAceFacedBadFadedBeef
% Invalid value for K: 'CoiffedCicadaeAcidifiedAcaciaBoa'
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
OPC=cededeffacedacefacedbadfadedbeef
IND-bitlen=23
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d opc CoiffedCicadaeAcidifiedAcaciaBoa
% Invalid value for OPC: 'CoiffedCicadaeAcidifiedAcaciaBoa'
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
OPC=cededeffacedacefacedbadfadedbeef
IND-bitlen=23
ctrl: completely replace all CTRL commands The previous commands are not conforming to how the CTRL interface is intended to work: SET enable-ps <IMSI> SET disable-ps <IMSI> SET status-ps <IMSI> 'status-ps' is a write-only command even though it returns the status. 'enable-ps' / 'disable-ps' indicate the value instead of a variable name of an entity. The entity <IMSI> takes the place of the variable value. See also https://lists.osmocom.org/pipermail/openbsc/2017-September/011236.html Instead, replace with SET subscriber.by-imsi-123456.ps-enabled {0,1} GET subscriber.by-imsi-123456.ps-enabled and also provide further CTRL functions while at it: {SET,GET} subscriber.by-{imsi,msisdn,id}-123456.{cs,ps}-enabled {0,1} GET subscriber.by-{imsi,msisdn,id}-123456.{info,info-aud,info-all} Provide CTRL tests in the form of transcripts. Adjust tests/test_subscriber.sql to feature nonzero SQN, to see some values for SQN in the CTRL transcript tests. (This does not affect the VTY tests, because that creates its own subscribers, and there's no VTY command to set the SQN.) This is the first time an application uses CTRL_NODE ids that are defined outside of libosmocore, see 'Depends' below. Implementation choice: the first idea was to have a '.' between the 'by-xxx' and the value, like: subscriber.by-xxx.123456.function but the difficulty with subscribers is that they are not in RAM, and I can't just point node_data at a struct instance that is always there (like, say, a global bts[0] struct in osmo-bsc). Instead, I want to store the selector and later decide whether to read from the DB or whatever. With a '.' separating things, the only way in a ctrl function to obtain both 'by-xxx' and '123456' for picking a subscriber record would be to parse the entire variable path string elements, including 'subscriber' and 'function', which would then also clumsily fix at which node level we hook these commands; there could have been separate CTRL_NODE_SUBSCR_BY_{IMSI,MSISDN,ID} parent nodes, but we cannot introspect the current parent node dynamically within a ctrl function handler (plus I'm not sure whether it's possible and a good idea to have the same command under multiple parent nodes). Rather than that, I store the 'by-foo-123' token in the node_data pointer to have both bits of information pointed at by a single pointer; I use the incoming command parsing to get this token pre-separated from surrounding node names, and no need to re-allocate it, since the vector of tokens lives until after command execution is complete. Each leaf command obtains this token from cmd->node (aka node_data), and feeds this token to a common static function to parse selector and value from it and to retrieve a subscriber record as needed. (BTW, I have mentioned on the mailing list that this way might be necessary to avoid numeric-only CTRL node names, but we don't need to, and that is not at all related to this choice of structure.) Depends: libosmocore I1bd62ae0d4eefde7e1517db15a2155640a1bab58 libosmocore Ic9dba0e4a1eb5a7dc3cee2f181b9024ed4fc7005 Change-Id: I98ee6a06b3aa6a67adb868e0b63b0e04eb42eb50
2017-10-16 23:58:24 +00:00
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d op C01ffedC1cadaeAc1d1f1edAcac1aB0a
OsmoHLR# subscriber imsi 123456789023000 update aud3g milenage k Deaf0ff1ceD0d0DabbedD1ced1ceF00d op CoiffedCicadaeAcidifiedAcaciaBoa
% Invalid value for OP: 'CoiffedCicadaeAcidifiedAcaciaBoa'
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
ctrl: completely replace all CTRL commands The previous commands are not conforming to how the CTRL interface is intended to work: SET enable-ps <IMSI> SET disable-ps <IMSI> SET status-ps <IMSI> 'status-ps' is a write-only command even though it returns the status. 'enable-ps' / 'disable-ps' indicate the value instead of a variable name of an entity. The entity <IMSI> takes the place of the variable value. See also https://lists.osmocom.org/pipermail/openbsc/2017-September/011236.html Instead, replace with SET subscriber.by-imsi-123456.ps-enabled {0,1} GET subscriber.by-imsi-123456.ps-enabled and also provide further CTRL functions while at it: {SET,GET} subscriber.by-{imsi,msisdn,id}-123456.{cs,ps}-enabled {0,1} GET subscriber.by-{imsi,msisdn,id}-123456.{info,info-aud,info-all} Provide CTRL tests in the form of transcripts. Adjust tests/test_subscriber.sql to feature nonzero SQN, to see some values for SQN in the CTRL transcript tests. (This does not affect the VTY tests, because that creates its own subscribers, and there's no VTY command to set the SQN.) This is the first time an application uses CTRL_NODE ids that are defined outside of libosmocore, see 'Depends' below. Implementation choice: the first idea was to have a '.' between the 'by-xxx' and the value, like: subscriber.by-xxx.123456.function but the difficulty with subscribers is that they are not in RAM, and I can't just point node_data at a struct instance that is always there (like, say, a global bts[0] struct in osmo-bsc). Instead, I want to store the selector and later decide whether to read from the DB or whatever. With a '.' separating things, the only way in a ctrl function to obtain both 'by-xxx' and '123456' for picking a subscriber record would be to parse the entire variable path string elements, including 'subscriber' and 'function', which would then also clumsily fix at which node level we hook these commands; there could have been separate CTRL_NODE_SUBSCR_BY_{IMSI,MSISDN,ID} parent nodes, but we cannot introspect the current parent node dynamically within a ctrl function handler (plus I'm not sure whether it's possible and a good idea to have the same command under multiple parent nodes). Rather than that, I store the 'by-foo-123' token in the node_data pointer to have both bits of information pointed at by a single pointer; I use the incoming command parsing to get this token pre-separated from surrounding node names, and no need to re-allocate it, since the vector of tokens lives until after command execution is complete. Each leaf command obtains this token from cmd->node (aka node_data), and feeds this token to a common static function to parse selector and value from it and to retrieve a subscriber record as needed. (BTW, I have mentioned on the mailing list that this way might be necessary to avoid numeric-only CTRL node names, but we don't need to, and that is not at all related to this choice of structure.) Depends: libosmocore I1bd62ae0d4eefde7e1517db15a2155640a1bab58 libosmocore Ic9dba0e4a1eb5a7dc3cee2f181b9024ed4fc7005 Change-Id: I98ee6a06b3aa6a67adb868e0b63b0e04eb42eb50
2017-10-16 23:58:24 +00:00
OP=c01ffedc1cadaeac1d1f1edacac1ab0a
IND-bitlen=5
OsmoHLR# subscriber id 101 update aud2g comp128v2 ki CededEffacedAceFacedBadFadedBeef
OsmoHLR# subscriber id 101 show
ID: 101
IMSI: 123456789023000
MSISDN: 423
2G auth: COMP128v2
KI=cededeffacedacefacedbadfadedbeef
3G auth: MILENAGE
K=deaf0ff1ced0d0dabbedd1ced1cef00d
ctrl: completely replace all CTRL commands The previous commands are not conforming to how the CTRL interface is intended to work: SET enable-ps <IMSI> SET disable-ps <IMSI> SET status-ps <IMSI> 'status-ps' is a write-only command even though it returns the status. 'enable-ps' / 'disable-ps' indicate the value instead of a variable name of an entity. The entity <IMSI> takes the place of the variable value. See also https://lists.osmocom.org/pipermail/openbsc/2017-September/011236.html Instead, replace with SET subscriber.by-imsi-123456.ps-enabled {0,1} GET subscriber.by-imsi-123456.ps-enabled and also provide further CTRL functions while at it: {SET,GET} subscriber.by-{imsi,msisdn,id}-123456.{cs,ps}-enabled {0,1} GET subscriber.by-{imsi,msisdn,id}-123456.{info,info-aud,info-all} Provide CTRL tests in the form of transcripts. Adjust tests/test_subscriber.sql to feature nonzero SQN, to see some values for SQN in the CTRL transcript tests. (This does not affect the VTY tests, because that creates its own subscribers, and there's no VTY command to set the SQN.) This is the first time an application uses CTRL_NODE ids that are defined outside of libosmocore, see 'Depends' below. Implementation choice: the first idea was to have a '.' between the 'by-xxx' and the value, like: subscriber.by-xxx.123456.function but the difficulty with subscribers is that they are not in RAM, and I can't just point node_data at a struct instance that is always there (like, say, a global bts[0] struct in osmo-bsc). Instead, I want to store the selector and later decide whether to read from the DB or whatever. With a '.' separating things, the only way in a ctrl function to obtain both 'by-xxx' and '123456' for picking a subscriber record would be to parse the entire variable path string elements, including 'subscriber' and 'function', which would then also clumsily fix at which node level we hook these commands; there could have been separate CTRL_NODE_SUBSCR_BY_{IMSI,MSISDN,ID} parent nodes, but we cannot introspect the current parent node dynamically within a ctrl function handler (plus I'm not sure whether it's possible and a good idea to have the same command under multiple parent nodes). Rather than that, I store the 'by-foo-123' token in the node_data pointer to have both bits of information pointed at by a single pointer; I use the incoming command parsing to get this token pre-separated from surrounding node names, and no need to re-allocate it, since the vector of tokens lives until after command execution is complete. Each leaf command obtains this token from cmd->node (aka node_data), and feeds this token to a common static function to parse selector and value from it and to retrieve a subscriber record as needed. (BTW, I have mentioned on the mailing list that this way might be necessary to avoid numeric-only CTRL node names, but we don't need to, and that is not at all related to this choice of structure.) Depends: libosmocore I1bd62ae0d4eefde7e1517db15a2155640a1bab58 libosmocore Ic9dba0e4a1eb5a7dc3cee2f181b9024ed4fc7005 Change-Id: I98ee6a06b3aa6a67adb868e0b63b0e04eb42eb50
2017-10-16 23:58:24 +00:00
OP=c01ffedc1cadaeac1d1f1edacac1ab0a
IND-bitlen=5
OsmoHLR# subscriber imsi 123456789023000 delete
% Deleted subscriber for IMSI '123456789023000'
OsmoHLR# subscriber imsi 123456789023000 show
% No subscriber for imsi = '123456789023000'
OsmoHLR# subscriber id 101 show
% No subscriber for id = '101'
OsmoHLR# subscriber msisdn 423 show
% No subscriber for msisdn = '423'
OsmoHLR# subscriber imsi 123456789023000 create
% Created subscriber 123456789023000
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber imsi 123456789023000 delete
% Deleted subscriber for IMSI '123456789023000'
OsmoHLR# subscriber imsi 123456789023000 create
% Created subscriber 123456789023000
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber imsi 123456789023000 update imei ?
none Forget IMEI
IMEI Set IMEI (use for debug only!)
OsmoHLR# subscriber imsi 123456789023000 update imei 35761300444848
% Updated subscriber IMSI='123456789023000' to IMEI='35761300444848'
OsmoHLR# subscriber imsi 123456789023000 update imei 357613004448484
% IMEI invalid: '357613004448484'
OsmoHLR# subscriber imsi 123456789023000 update imei 357613004448485
% Updated subscriber IMSI='123456789023000' to IMEI='35761300444848'
OsmoHLR# show subscriber imei 35761300444848
ID: 101
IMSI: 123456789023000
MSISDN: none
IMEI: 357613004448485
OsmoHLR# show subscriber imei 357613004448485
% Checksum validated and stripped for search: imei = '35761300444848'
ID: 101
IMSI: 123456789023000
MSISDN: none
IMEI: 357613004448485
OsmoHLR# show subscriber imei 357613004448484
% No subscriber for imei = '357613004448484'
OsmoHLR# subscriber imsi 123456789023000 update imei none
% Updated subscriber IMSI='123456789023000': removed IMEI
OsmoHLR# subscriber imsi 123456789023000 show
ID: 101
IMSI: 123456789023000
MSISDN: none
OsmoHLR# subscriber imsi 123456789023000 delete
% Deleted subscriber for IMSI '123456789023000'
OsmoHLR# show subscriber id 99
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'