diff --git a/srsue/hdr/stack/upper/nas.h b/srsue/hdr/stack/upper/nas.h index e005bdd5a..5148878e0 100644 --- a/srsue/hdr/stack/upper/nas.h +++ b/srsue/hdr/stack/upper/nas.h @@ -136,6 +136,11 @@ private: const uint32_t t3410_duration_ms = 15 * 1000; // 15s according to TS 24.301 Sec 10.2 const uint32_t t3411_duration_ms = 10 * 1000; // 10s according to TS 24.301 Sec 10.2 + // TS 23.003 Sec. 6.2.2 IMEISV's last two octets are Software Version Number (SVN) + // which identifies the software version number of the mobile equipment + const uint8_t ue_svn_oct1 = 0x5; + const uint8_t ue_svn_oct2 = 0x3; + // Security bool eia_caps[8] = {}; bool eea_caps[8] = {}; diff --git a/srsue/src/stack/upper/nas.cc b/srsue/src/stack/upper/nas.cc index 728d60e51..c2e052b4e 100644 --- a/srsue/src/stack/upper/nas.cc +++ b/srsue/src/stack/upper/nas.cc @@ -1280,8 +1280,8 @@ void nas::parse_security_mode_command(uint32_t lcid, unique_byte_buffer_t pdu) sec_mode_comp.imeisv_present = true; sec_mode_comp.imeisv.type_of_id = LIBLTE_MME_MOBILE_ID_TYPE_IMEISV; usim->get_imei_vec(sec_mode_comp.imeisv.imeisv, 15); - sec_mode_comp.imeisv.imeisv[14] = 5; - sec_mode_comp.imeisv.imeisv[15] = 3; + sec_mode_comp.imeisv.imeisv[14] = ue_svn_oct1; + sec_mode_comp.imeisv.imeisv[15] = ue_svn_oct2; } else { sec_mode_comp.imeisv_present = false; } @@ -1927,6 +1927,12 @@ void nas::send_identity_response(const uint8 id_type, const uint8_t sec_hdr_type id_resp.mobile_id.type_of_id = LIBLTE_MME_MOBILE_ID_TYPE_IMEI; usim->get_imei_vec(id_resp.mobile_id.imei, 15); break; + case LIBLTE_MME_MOBILE_ID_TYPE_IMEISV: + id_resp.mobile_id.type_of_id = LIBLTE_MME_MOBILE_ID_TYPE_IMEISV; + usim->get_imei_vec(id_resp.mobile_id.imeisv, 15); + id_resp.mobile_id.imeisv[14] = ue_svn_oct1; + id_resp.mobile_id.imeisv[15] = ue_svn_oct2; + break; default: nas_log->error("Unhandled ID type: %d\n", id_type); return;