diff options
author | Oliver Smith <osmith@sysmocom.de> | 2019-05-07 14:13:55 +0200 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2019-05-15 10:57:43 +0200 |
commit | b8077b0c1dcf76f7117bed9bb78c508d56df2386 (patch) | |
tree | 0d2e24e70f6e7ece09634b93c3e2f7cb626b5313 | |
parent | d103705f01435592dfe97ed33e1e2e3b93ac18fc (diff) |
vlr: when setting IMEISV, also set IMEI
Copy IMEISV to IMEI when IMEISV changes. The additional SV digits will
get cut off then. This is needed for the subscriber on demand use case,
since we can get the IMEISV early (see [1]), but need to send the IMEI
to the Check IMEI procedure.
While adjusting the tests, I have noticed that there are code paths
where we ask the MS for the IMEISV first, and later ask the MS for the
IMEI, although we already have the IMEISV. This could be improved in a
future patch.
[1] Change-Id I256224194c3b8caf2b58a88d11dccd32c569201f
Related: OS#2542
Change-Id: I02e7b66848bf7dddb31b105e2ae981432817ae1e
-rw-r--r-- | src/libvlr/vlr.c | 3 | ||||
-rw-r--r-- | tests/msc_vlr/msc_vlr_test_gsm_ciph.err | 1 | ||||
-rw-r--r-- | tests/msc_vlr/msc_vlr_test_no_authen.err | 5 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index 508246989..f76a7ee01 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -451,6 +451,9 @@ void vlr_subscr_set_imeisv(struct vlr_subscr *vsub, const char *imeisv) OSMO_STRLCPY_ARRAY(vsub->imeisv, imeisv); DEBUGP(DVLR, "set IMEISV on subscriber; IMSI=%s IMEISV=%s\n", vsub->imsi, vsub->imeisv); + + /* Copy IMEISV to IMEI (additional SV digits get cut off) */ + vlr_subscr_set_imei(vsub, imeisv); } /* Safely copy the given MSISDN string to vsub->msisdn */ diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err index 1999d89ea..7328a8de2 100644 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err @@ -1783,6 +1783,7 @@ DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: D DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_CIPH_M_COMPL DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Ciphering Mode Complete contains Mobile Identity: IMEI-SV-4234234234234275F DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275 +DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342 DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_ID_IMEISV DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Event VLR_ULA_E_ID_IMEISV not permitted DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu) diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err index 7d668cbb5..a048215ab 100644 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ b/tests/msc_vlr/msc_vlr_test_no_authen.err @@ -1702,6 +1702,7 @@ DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: D DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275 DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275 +DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342 DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1() DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth() @@ -1920,6 +1921,7 @@ DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: D DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275 DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275 +DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342 DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1() DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth() @@ -2186,6 +2188,7 @@ DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: D DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275 DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275 +DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342 DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1() DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth() @@ -2382,6 +2385,7 @@ DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP DMM IDENTITY RESPONSE: MI=IMEI-SV-5234234234234276 DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=5234234234234276 +DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=52342342342342 DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1() DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth() @@ -2646,6 +2650,7 @@ DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: D DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275 DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275 +DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342 DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1() DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth() |