diff --git a/lib/include/srsran/asn1/liblte_mme.h b/lib/include/srsran/asn1/liblte_mme.h index 33d1d6115..93d29f348 100644 --- a/lib/include/srsran/asn1/liblte_mme.h +++ b/lib/include/srsran/asn1/liblte_mme.h @@ -2430,6 +2430,7 @@ LIBLTE_ERROR_ENUM liblte_mme_pack_security_protected_nas_msg(LIBLTE_BYTE_MSG_STR #define LIBLTE_MME_EPS_NETWORK_FEATURE_SUPPORT_IEI 0x64 #define LIBLTE_MME_ADDITIONAL_UPDATE_RESULT_IEI 0xF #define LIBLTE_MME_T3412_EXTENDED_VALUE_IEI 0x5E +#define LIBLTE_MME_ADDITIONAL_INFORMATION_IEI 0x65 // Enums // Structs typedef struct { diff --git a/lib/src/asn1/liblte_mme.cc b/lib/src/asn1/liblte_mme.cc index e3d1cff84..db2cc6264 100644 --- a/lib/src/asn1/liblte_mme.cc +++ b/lib/src/asn1/liblte_mme.cc @@ -7600,7 +7600,11 @@ LIBLTE_ERROR_ENUM liblte_mme_pack_downlink_generic_nas_transport_msg( liblte_mme_pack_generic_message_container_ie(&dl_generic_nas_transport->generic_msg_cont, &msg_ptr); // Additional Information - liblte_mme_pack_additional_information_ie(&dl_generic_nas_transport->add_info, &msg_ptr); + if (dl_generic_nas_transport->add_info_present) { + *msg_ptr = LIBLTE_MME_ADDITIONAL_INFORMATION_IEI; + msg_ptr++; + liblte_mme_pack_additional_information_ie(&dl_generic_nas_transport->add_info, &msg_ptr); + } // Fill in the number of bytes used msg->N_bytes = msg_ptr - msg->msg; @@ -7637,8 +7641,13 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_downlink_generic_nas_transport_msg( liblte_mme_unpack_generic_message_container_ie(&msg_ptr, &dl_generic_nas_transport->generic_msg_cont); // Additional Information - liblte_mme_unpack_additional_information_ie(&msg_ptr, &dl_generic_nas_transport->add_info); - + if (LIBLTE_MME_ADDITIONAL_INFORMATION_IEI == *msg_ptr) { + msg_ptr++; + liblte_mme_unpack_additional_information_ie(&msg_ptr, &dl_generic_nas_transport->add_info); + dl_generic_nas_transport->add_info_present = true; + } else { + dl_generic_nas_transport->add_info_present = false; + } err = LIBLTE_SUCCESS; }