diff --git a/openair-cn/GTPV1-U/gtpv1u_eNB.c b/openair-cn/GTPV1-U/gtpv1u_eNB.c index b9735f728f9c2ded2594c3190d5ee6e9e4a93b4f..9b68de71cf50fdd80f7cd05eb48ab927a99ff522 100644 --- a/openair-cn/GTPV1-U/gtpv1u_eNB.c +++ b/openair-cn/GTPV1-U/gtpv1u_eNB.c @@ -1082,14 +1082,14 @@ void *gtpv1u_eNB_task(void *args) if (rc != NW_GTPV1U_OK) { LOG_E(GTPU, "nwGtpv1uGpduMsgNew failed: 0x%x\n", rc); - MSC_LOG_EVENT(MSC_GTPU_ENB,"Failed send G-PDU ltid %u rtid %u size %u", + MSC_LOG_EVENT(MSC_GTPU_ENB,"0 Failed send G-PDU ltid %u rtid %u size %u", enb_s1u_teid,sgw_s1u_teid,data_req_p->length); } else { rc = nwGtpv1uProcessUlpReq(gtpv1u_data_g.gtpv1u_stack, &stack_req); if (rc != NW_GTPV1U_OK) { LOG_E(GTPU, "nwGtpv1uProcessUlpReq failed: 0x%x\n", rc); - MSC_LOG_EVENT(MSC_GTPU_ENB,"Failed send G-PDU ltid %u rtid %u size %u", + MSC_LOG_EVENT(MSC_GTPU_ENB,"0 Failed send G-PDU ltid %u rtid %u size %u", enb_s1u_teid,sgw_s1u_teid,data_req_p->length); } else { MSC_LOG_TX_MESSAGE( diff --git a/openair-cn/MME_APP/mme_app_authentication.c b/openair-cn/MME_APP/mme_app_authentication.c index 514db141f19b9bd6c0aa08b4a79e7edc54eff6da..d10e7d645b13c6b4178e6a1a6e40713b4c137cb5 100644 --- a/openair-cn/MME_APP/mme_app_authentication.c +++ b/openair-cn/MME_APP/mme_app_authentication.c @@ -170,8 +170,8 @@ int mme_app_handle_authentication_info_answer( const s6a_auth_info_ans_t * const s6a_auth_info_ans_pP) { - struct ue_context_s *ue_context; - uint64_t imsi; + struct ue_context_s *ue_context = NULL; + uint64_t imsi = 0; DevAssert(s6a_auth_info_ans_pP != NULL); diff --git a/openair-cn/MME_APP/mme_app_context.c b/openair-cn/MME_APP/mme_app_context.c index 43c6628fb4a4a945a062bba69186a9e6c057dabd..f7ca54f8da3993556355c08435eaf311f9dcf356 100644 --- a/openair-cn/MME_APP/mme_app_context.c +++ b/openair-cn/MME_APP/mme_app_context.c @@ -275,6 +275,29 @@ int mme_insert_ue_context(mme_ue_context_t *mme_ue_context, struct ue_context_s return 0; } + + +//------------------------------------------------------------------------------ +void mme_remove_ue_context(mme_ue_context_t *mme_ue_context, struct ue_context_s *ue_context_p) +//------------------------------------------------------------------------------ +{ + struct ue_context_s *collision_p = NULL; + + DevAssert(mme_ue_context != NULL); + DevAssert(ue_context_p != NULL); + + /* Updating statistics */ + mme_ue_context->nb_ue_managed++; + mme_ue_context->nb_ue_since_last_stat++; + + collision_p = RB_REMOVE(ue_context_map, &mme_ue_context->ue_context_tree, + ue_context_p); +#warning "TODO mme_ue_context_free_content" + //TODO mme_ue_context_free_content(ue_context_p); + free(ue_context_p); + return 0; +} + //------------------------------------------------------------------------------ void mme_app_dump_ue_contexts(mme_ue_context_t *mme_ue_context) //------------------------------------------------------------------------------ @@ -451,13 +474,12 @@ void mme_app_dump_ue_contexts(mme_ue_context_t *mme_ue_context) void mme_app_handle_s1ap_ue_context_release_req(const s1ap_ue_context_release_req_t const *s1ap_ue_context_release_req) //------------------------------------------------------------------------------ { - struct ue_context_s *ue_context_p = NULL; + struct ue_context_s *ue_context_p = NULL; + MessageDef *message_p = NULL; MME_APP_DEBUG("Received S1AP_UE_CONTEXT_RELEASE_REQ from S1AP\n"); - ue_context_p = mme_ue_context_exists_nas_ue_id(&mme_app_desc.mme_ue_contexts, s1ap_ue_context_release_req->mme_ue_s1ap_id); - if (ue_context_p == NULL) { MSC_LOG_EVENT( MSC_MMEAPP_MME, @@ -467,7 +489,29 @@ void mme_app_handle_s1ap_ue_context_release_req(const s1ap_ue_context_release_re s1ap_ue_context_release_req->mme_ue_s1ap_id); return; } - mme_app_send_s11_release_access_bearers_req(ue_context_p); + if ((ue_context_p->mme_s11_teid == 0) && + (ue_context_p->sgw_s11_teid == 0)) { + // no session was created, no need for releasing bearers in SGW + message_p = itti_alloc_new_message(TASK_MME_APP, S1AP_UE_CONTEXT_RELEASE_COMMAND); + + AssertFatal(message_p != NULL, "itti_alloc_new_message Failed"); + memset((void*)&message_p->ittiMsg.s1ap_ue_context_release_command, + 0, + sizeof(s1ap_ue_context_release_command_t)); + + S1AP_UE_CONTEXT_RELEASE_COMMAND(message_p).mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id; + MSC_LOG_TX_MESSAGE( + MSC_MMEAPP_MME, + MSC_S1AP_MME, + NULL,0, + "0 S1AP_UE_CONTEXT_RELEASE_COMMAND mme_ue_s1ap_id %06"PRIX32" ", + S1AP_UE_CONTEXT_RELEASE_COMMAND(message_p).mme_ue_s1ap_id); + + + itti_send_msg_to_task(TASK_S1AP, INSTANCE_DEFAULT, message_p); + } else { + mme_app_send_s11_release_access_bearers_req(ue_context_p); + } } @@ -506,4 +550,6 @@ void mme_app_handle_s1ap_ue_context_release_complete(const s1ap_ue_context_relea "0 S1AP_DEREGISTER_UE_REQ"); itti_send_msg_to_task(TASK_NAS_MME, INSTANCE_DEFAULT, message_p); + + mme_remove_ue_context(&mme_app_desc.mme_ue_contexts, ue_context_p); } diff --git a/openair-cn/MME_APP/mme_app_ue_context.h b/openair-cn/MME_APP/mme_app_ue_context.h index 5c876ed2784175e4e02b8e857b87e64e21b67323..d87f0fa4c0f90cf35e480e63e1d32f1c41c39852 100644 --- a/openair-cn/MME_APP/mme_app_ue_context.h +++ b/openair-cn/MME_APP/mme_app_ue_context.h @@ -241,6 +241,13 @@ ue_context_t *mme_ue_context_exists_guti(mme_ue_context_t *mme_ue_context, int mme_insert_ue_context(mme_ue_context_t *mme_ue_context, struct ue_context_s *ue_context_p); +/** \brief Remove a UE context of the tree of known UEs. + * \param ue_context_p The UE context to remove + **/ +void mme_remove_ue_context(mme_ue_context_t *mme_ue_context, + struct ue_context_s *ue_context_p); + + /** \brief Allocate memory for a new UE context * @returns Pointer to the new structure, NULL if allocation failed **/ diff --git a/openair-cn/NAS/COMMON/API/NETWORK/as_message.c b/openair-cn/NAS/COMMON/API/NETWORK/as_message.c index b0f07f937d77d77da81d01795554757af57dd6b5..5b29016f3abc6a7f0bec25fb02945c7b6c69f7c1 100644 --- a/openair-cn/NAS/COMMON/API/NETWORK/as_message.c +++ b/openair-cn/NAS/COMMON/API/NETWORK/as_message.c @@ -91,8 +91,8 @@ int as_message_decode(const char* buffer, as_message_t* msg, int length) Byte_t** data = NULL; /* Get the message type */ - msg->msgID = *(UInt16_t*)(buffer); - bytes = sizeof(UInt16_t); + msg->msgID = *(uint16_t*)(buffer); + bytes = sizeof(uint16_t); switch (msg->msgID) { case AS_NAS_ESTABLISH_REQ: diff --git a/openair-cn/NAS/COMMON/API/NETWORK/l2_message.h b/openair-cn/NAS/COMMON/API/NETWORK/l2_message.h index ced2b54bc378624da2f719fa203c6ee02dbb458e..d24d78b503b10edc4c599c6f528501ff85b31de4 100644 --- a/openair-cn/NAS/COMMON/API/NETWORK/l2_message.h +++ b/openair-cn/NAS/COMMON/API/NETWORK/l2_message.h @@ -204,13 +204,13 @@ typedef struct {} paging_ind_t; /* Structure of the SAE Temporary Mobile Subscriber Identity */ typedef struct { - UInt8_t MMEcode; /* MME code that allocated the GUTI */ - UInt32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */ + uint8_t MMEcode; /* MME code that allocated the GUTI */ + uint32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */ } as_stmsi_t; /* Structure of the dedicated NAS information */ typedef struct { - UInt32_t length; /* Length of the NAS information data */ + uint32_t length; /* Length of the NAS information data */ Byte_t* data; /* Dedicated NAS information data container */ } as_nas_info_t; @@ -220,8 +220,8 @@ typedef struct { * to transfer initial NAS message to the network while UE is in IDLE mode. */ typedef struct { - UInt8_t cause; /* Connection establishment cause */ - UInt8_t type; /* Associated call type */ + uint8_t cause; /* Connection establishment cause */ + uint8_t type; /* Associated call type */ plmn_t plmnID; /* Identifier of the selected PLMN */ as_stmsi_t s_tmsi; /* SAE Temporary Mobile Subscriber Identity */ as_nas_info_t initialNasMsg;/* Initial NAS message to transfer */ @@ -274,7 +274,7 @@ typedef as_nas_info_t ul_info_transfer_t; * -------------------------------------------------------------------------- */ typedef struct { - UInt16_t msgID; + uint16_t msgID; union { cell_info_req_t cell_info_req; cell_info_rsp_t cell_info_rsp; diff --git a/openair-cn/NAS/COMMON/API/NETWORK/nas_message.c b/openair-cn/NAS/COMMON/API/NETWORK/nas_message.c index 9896ebfde06cca3539ac47789c26e69b6e5a679d..611ad6fc3acdbfdb6070d626bcbfe9c9cbc9afb8 100644 --- a/openair-cn/NAS/COMMON/API/NETWORK/nas_message.c +++ b/openair-cn/NAS/COMMON/API/NETWORK/nas_message.c @@ -97,9 +97,9 @@ static int _nas_message_protected_encode( static int _nas_message_decrypt( char* dest, const char* src, - UInt8_t type, - UInt32_t code, - UInt8_t seq, + uint8_t type, + uint32_t code, + uint8_t seq, int length, const emm_security_context_t * const emm_security_context); @@ -108,15 +108,15 @@ static int _nas_message_encrypt( char *dest, const char *src, - UInt8_t type, - UInt32_t code, - UInt8_t seq, + uint8_t type, + uint32_t code, + uint8_t seq, int const direction, int length, const emm_security_context_t * const emm_security_context); /* Functions used for integrity protection of layer 3 NAS messages */ -static UInt32_t _nas_message_get_mac( +static uint32_t _nas_message_get_mac( const char * const buffer, int const length, int const direction, @@ -180,9 +180,9 @@ nas_message_encrypt( /* Integrity protected the NAS message */ if (bytes > 0) { /* Compute offset of the sequence number field */ - int offset = size - sizeof(UInt8_t); + int offset = size - sizeof(uint8_t); /* Compute the NAS message authentication code */ - UInt32_t mac = _nas_message_get_mac( + uint32_t mac = _nas_message_get_mac( outbuf + offset, bytes + size - offset, #ifdef NAS_MME @@ -192,7 +192,7 @@ nas_message_encrypt( #endif emm_security_context); /* Set the message authentication code of the NAS message */ - *(UInt32_t*)(outbuf + sizeof(UInt8_t)) = htonl(mac); + *(uint32_t*)(outbuf + sizeof(uint8_t)) = htonl(mac); } } else { /* The input buffer does not need to be encrypted */ @@ -301,9 +301,9 @@ int nas_message_decrypt( } /* Compute offset of the sequence number field */ - int offset = size - sizeof(UInt8_t); + int offset = size - sizeof(uint8_t); /* Compute the NAS message authentication code */ - UInt32_t mac = _nas_message_get_mac( + uint32_t mac = _nas_message_get_mac( inbuf + offset, length - offset, #ifdef NAS_MME @@ -410,9 +410,9 @@ int nas_message_decode( } /* Compute offset of the sequence number field */ - int offset = size - sizeof(UInt8_t); + int offset = size - sizeof(uint8_t); /* Compute the NAS message authentication code */ - UInt32_t mac = _nas_message_get_mac( + uint32_t mac = _nas_message_get_mac( buffer + offset, length - offset, #ifdef NAS_MME @@ -524,13 +524,13 @@ int nas_message_encode( /* Integrity protect the NAS message */ if (bytes > 0) { /* Compute offset of the sequence number field */ - int offset = size - sizeof(UInt8_t); + int offset = size - sizeof(uint8_t); /* Compute the NAS message authentication code */ LOG_TRACE(DEBUG, "offset %d = %d - %d, hdr encode = %d, length = %d bytes = %d", - offset, size, sizeof(UInt8_t), + offset, size, sizeof(uint8_t), size, length, bytes); - UInt32_t mac = _nas_message_get_mac( + uint32_t mac = _nas_message_get_mac( buffer + offset, bytes + size - offset, #ifdef NAS_MME @@ -540,7 +540,7 @@ int nas_message_encode( #endif emm_security_context); /* Set the message authentication code of the NAS message */ - *(UInt32_t*)(buffer + sizeof(UInt8_t)) = htonl(mac); + *(uint32_t*)(buffer + sizeof(uint8_t)) = htonl(mac); if (emm_security_context) { #ifdef NAS_MME @@ -644,7 +644,7 @@ _nas_message_header_decode( /* Decode the first octet of the header (security header type or EPS bearer * identity, and protocol discriminator) */ - DECODE_U8(buffer, *(UInt8_t*)(header), size); + DECODE_U8(buffer, *(uint8_t*)(header), size); if (header->protocol_discriminator == EPS_MOBILITY_MANAGEMENT_MESSAGE) { if (header->security_header_type != SECURITY_HEADER_TYPE_NOT_PROTECTED) { @@ -798,7 +798,7 @@ static int _nas_message_header_encode( /* Encode the first octet of the header (security header type or EPS bearer * identity, and protocol discriminator) */ - ENCODE_U8(buffer, *(UInt8_t*)(header), size); + ENCODE_U8(buffer, *(uint8_t*)(header), size); if (header->protocol_discriminator == EPS_MOBILITY_MANAGEMENT_MESSAGE) { if (header->security_header_type != SECURITY_HEADER_TYPE_NOT_PROTECTED) { @@ -956,9 +956,9 @@ static int _nas_message_protected_encode( static int _nas_message_decrypt( char *dest, const char *src, - UInt8_t security_header_type, - UInt32_t code, - UInt8_t seq, + uint8_t security_header_type, + uint32_t code, + uint8_t seq, int length, const emm_security_context_t * const emm_security_context) { @@ -986,7 +986,7 @@ static int _nas_message_decrypt( "No decryption of message length %u according to security header type 0x%02x", length, security_header_type); memcpy(dest, src, length); - DECODE_U8(dest, *(UInt8_t*)(&header), size); + DECODE_U8(dest, *(uint8_t*)(&header), size); LOG_FUNC_RETURN (header.protocol_discriminator); //LOG_FUNC_RETURN (length); break; @@ -1022,7 +1022,7 @@ static int _nas_message_decrypt( nas_stream_encrypt_eea1(&stream_cipher, dest); /* Decode the first octet (security header type or EPS bearer identity, * and protocol discriminator) */ - DECODE_U8(dest, *(UInt8_t*)(&header), size); + DECODE_U8(dest, *(uint8_t*)(&header), size); LOG_FUNC_RETURN (header.protocol_discriminator); @@ -1056,7 +1056,7 @@ static int _nas_message_decrypt( nas_stream_encrypt_eea1(&stream_cipher, dest); /* Decode the first octet (security header type or EPS bearer identity, * and protocol discriminator) */ - DECODE_U8(dest, *(UInt8_t*)(&header), size); + DECODE_U8(dest, *(uint8_t*)(&header), size); LOG_FUNC_RETURN (header.protocol_discriminator); } @@ -1071,7 +1071,7 @@ static int _nas_message_decrypt( memcpy(dest, src, length); /* Decode the first octet (security header type or EPS bearer identity, * and protocol discriminator) */ - DECODE_U8(dest, *(UInt8_t*)(&header), size); + DECODE_U8(dest, *(uint8_t*)(&header), size); LOG_FUNC_RETURN (header.protocol_discriminator); @@ -1084,7 +1084,7 @@ static int _nas_message_decrypt( memcpy(dest, src, length); /* Decode the first octet (security header type or EPS bearer identity, * and protocol discriminator) */ - DECODE_U8(dest, *(UInt8_t*)(&header), size); + DECODE_U8(dest, *(uint8_t*)(&header), size); LOG_FUNC_RETURN (header.protocol_discriminator); break; @@ -1124,9 +1124,9 @@ static int _nas_message_decrypt( static int _nas_message_encrypt( char *dest, const char *src, - UInt8_t security_header_type, - UInt32_t code, - UInt8_t seq, + uint8_t security_header_type, + uint32_t code, + uint8_t seq, int const direction, int length, const emm_security_context_t * const emm_security_context) @@ -1274,7 +1274,7 @@ static int _nas_message_encrypt( ** Others: None ** ** ** ***************************************************************************/ -static UInt32_t _nas_message_get_mac( +static uint32_t _nas_message_get_mac( const char * const buffer, int const length, int const direction, @@ -1296,10 +1296,10 @@ static UInt32_t _nas_message_get_mac( switch (emm_security_context->selected_algorithms.integrity) { case NAS_SECURITY_ALGORITHMS_EIA1: { - UInt8_t mac[4]; + uint8_t mac[4]; nas_stream_cipher_t stream_cipher; - UInt32_t count; - UInt32_t *mac32; + uint32_t count; + uint32_t *mac32; int i,bytes = 0; @@ -1354,20 +1354,20 @@ static UInt32_t _nas_message_get_mac( LOG_TRACE(DEBUG, "NAS_SECURITY_ALGORITHMS_EIA1 returned MAC %x.%x.%x.%x(%u) for length %d direction %d, count %d", mac[0], mac[1], mac[2],mac[3], - *((UInt32_t*)&mac), + *((uint32_t*)&mac), length, direction, count); - mac32 = (UInt32_t*)&mac; + mac32 = (uint32_t*)&mac; LOG_FUNC_RETURN (ntohl(*mac32)); } break; case NAS_SECURITY_ALGORITHMS_EIA2: { - UInt8_t mac[4]; + uint8_t mac[4]; nas_stream_cipher_t stream_cipher; - UInt32_t count; - UInt32_t *mac32; + uint32_t count; + uint32_t *mac32; if (direction == SECU_DIRECTION_UPLINK) { count = 0x00000000 || @@ -1400,11 +1400,11 @@ static UInt32_t _nas_message_get_mac( LOG_TRACE(DEBUG, "NAS_SECURITY_ALGORITHMS_EIA2 returned MAC %x.%x.%x.%x(%u) for length %d direction %d, count %d", mac[0], mac[1], mac[2],mac[3], - *((UInt32_t*)&mac), + *((uint32_t*)&mac), length, direction, count); - mac32 = (UInt32_t*)&mac; + mac32 = (uint32_t*)&mac; LOG_FUNC_RETURN (ntohl(*mac32)); } break; diff --git a/openair-cn/NAS/COMMON/API/NETWORK/nas_message.h b/openair-cn/NAS/COMMON/API/NETWORK/nas_message.h index d7d09f11456683b1d023adf565956b506976f374..f4187b73967f0afa269207fd0b7abcdacaff4199 100644 --- a/openair-cn/NAS/COMMON/API/NETWORK/nas_message.h +++ b/openair-cn/NAS/COMMON/API/NETWORK/nas_message.h @@ -68,14 +68,14 @@ Description Defines the layer 3 messages supported by the NAS sublayer typedef struct { #ifdef __LITTLE_ENDIAN_BITFIELD eps_protocol_discriminator_t protocol_discriminator:4; - UInt8_t security_header_type:4; + uint8_t security_header_type:4; #endif #ifdef __BIG_ENDIAN_BITFIELD - UInt8_t security_header_type:4; - UInt8_t protocol_discriminator:4; + uint8_t security_header_type:4; + uint8_t protocol_discriminator:4; #endif - UInt32_t message_authentication_code; - UInt8_t sequence_number; + uint32_t message_authentication_code; + uint8_t sequence_number; } nas_message_security_header_t; /* Structure of plain NAS message */ diff --git a/openair-cn/NAS/MME/API/MME/mme_api.c b/openair-cn/NAS/MME/API/MME/mme_api.c index 78bf8e4cd506f78832a920a1a01cb878c4d75540..91b688558cd525f0d203a743d0457bb343af1227 100644 --- a/openair-cn/NAS/MME/API/MME/mme_api.c +++ b/openair-cn/NAS/MME/API/MME/mme_api.c @@ -98,19 +98,19 @@ static const plmn_t mme_api_plmn = {0, 2, 0xf, 8, 0, 1}; // 20810 /* Authentication parameter RAND */ -static const UInt8_t _mme_api_rand[AUTH_RAND_SIZE] = { +static const uint8_t _mme_api_rand[AUTH_RAND_SIZE] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04 }; /* Authentication parameter AUTN */ -static const UInt8_t _mme_api_autn[AUTH_AUTN_SIZE] = { +static const uint8_t _mme_api_autn[AUTH_AUTN_SIZE] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x05, 0x04, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }; /* Authentication response parameter */ -static const UInt8_t _mme_api_xres[AUTH_XRES_SIZE] = { +static const uint8_t _mme_api_xres[AUTH_XRES_SIZE] = { 0x67, 0x70, 0x3a, 0x31, 0xf2, 0x2a, 0x2d, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/openair-cn/NAS/MME/API/MME/mme_api.h b/openair-cn/NAS/MME/API/MME/mme_api.h index 4cf22d9d74e9c912931883bc6f22322d89b81470..a8f83e12374af194c7c9dcc6380f6d14389b2cb6 100644 --- a/openair-cn/NAS/MME/API/MME/mme_api.h +++ b/openair-cn/NAS/MME/API/MME/mme_api.h @@ -58,7 +58,7 @@ Description Implements the API used by the NAS layer running in the MME /****************************************************************************/ /* Maximum number of UEs the MME may simultaneously support */ -#define MME_API_NB_UE_MAX 1 +#define MME_API_NB_UE_MAX 256 /* Features supported by the MME */ diff --git a/openair-cn/NAS/MME/EMM/Attach.c b/openair-cn/NAS/MME/EMM/Attach.c index ab1ee269e35c20a712dfb92c0709ec9c9e34ffc6..ec7a873cd97039bd1817c1b944a2050153943aeb 100644 --- a/openair-cn/NAS/MME/EMM/Attach.c +++ b/openair-cn/NAS/MME/EMM/Attach.c @@ -207,7 +207,7 @@ int emm_proc_attach_request( int rc; emm_data_context_t ue_ctx; - LOG_TRACE(INFO, "EMM-PROC - EPS attach type = %s (%d) requested (ueid=0x%08x)", + LOG_TRACE(INFO, "EMM-PROC - EPS attach type = %s (%d) requested (ueid="NAS_UE_ID_FMT")", _emm_attach_type_str[type], type, ueid); LOG_TRACE(INFO, "EMM-PROC - umts_present = %u umts_present = %u", umts_present, gprs_present); @@ -314,6 +314,15 @@ int emm_proc_attach_request( (*emm_ctx)->emm_cause = EMM_CAUSE_SUCCESS; (*emm_ctx)->_emm_fsm_status = EMM_INVALID; (*emm_ctx)->ueid = ueid; + /* + * Initialize EMM timers + */ + (*emm_ctx)->T3450.id = NAS_TIMER_INACTIVE_ID; + (*emm_ctx)->T3450.sec = T3450_DEFAULT_VALUE; + (*emm_ctx)->T3460.id = NAS_TIMER_INACTIVE_ID; + (*emm_ctx)->T3460.sec = T3460_DEFAULT_VALUE; + (*emm_ctx)->T3470.id = NAS_TIMER_INACTIVE_ID; + (*emm_ctx)->T3470.sec = T3470_DEFAULT_VALUE; emm_fsm_set_status(ueid, *emm_ctx, EMM_DEREGISTERED); #if defined(NAS_BUILT_IN_EPC) @@ -324,7 +333,7 @@ int emm_proc_attach_request( if (tai) { LOG_TRACE(WARNING, - "EMM-PROC - Set tac %u in context %u ", + "EMM-PROC - Set tac %u in context", tai->tac); (*emm_ctx)->tac = tai->tac; } else { @@ -433,11 +442,7 @@ int emm_proc_attach_complete(unsigned int ueid, const OctetString *esm_msg_pP) LOG_FUNC_IN; - LOG_TRACE(INFO, "EMM-PROC - EPS attach complete (ueid=%u)", ueid); - - /* Stop timer T3450 */ - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3450 (%d)", T3450.id); - T3450.id = nas_timer_stop(T3450.id); + LOG_TRACE(INFO, "EMM-PROC - EPS attach complete (ueid="NAS_UE_ID_FMT")", ueid); /* Release retransmission timer parameters */ attach_data_t *data = (attach_data_t *)(emm_proc_common_get_args(ueid)); @@ -446,28 +451,27 @@ int emm_proc_attach_complete(unsigned int ueid, const OctetString *esm_msg_pP) if (data->esm_msg.length > 0) { free(data->esm_msg.value); } - free(data); } /* Get the UE context */ - #if defined(NAS_BUILT_IN_EPC) - if (ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, ueid); } - #else - if (ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[ueid]; } - #endif if (emm_ctx) { - /* Delete the old GUTI and consider the GUTI sent in the Attach + /* Stop timer T3450 */ + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3450 (%d)", emm_ctx->T3450.id); + emm_ctx->T3450.id = nas_timer_stop(emm_ctx->T3450.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3450 stopped UE "NAS_UE_ID_FMT" ", ueid); + + /* Delete the old GUTI and consider the GUTI sent in the Attach * Accept message as valid */ emm_ctx->guti_is_new = FALSE; emm_ctx->old_guti = NULL; @@ -612,7 +616,7 @@ static int _emm_attach_release(void *args) emm_data_context_t *emm_ctx = (emm_data_context_t *)(args); if (emm_ctx) { - LOG_TRACE(WARNING, "EMM-PROC - Release UE context data (ueid=%u)", + LOG_TRACE(WARNING, "EMM-PROC - Release UE context data (ueid="NAS_UE_ID_FMT")", emm_ctx->ueid); unsigned int ueid = emm_ctx->ueid; @@ -663,6 +667,25 @@ static int _emm_attach_release(void *args) emm_ctx->security = NULL; } + /* Stop timer T3450 */ + if (emm_ctx->T3450.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3450 (%d)", emm_ctx->T3450.id); + emm_ctx->T3450.id = nas_timer_stop(emm_ctx->T3450.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3450 stopped UE "NAS_UE_ID_FMT" ", emm_ctx->ueid); + } + /* Stop timer T3460 */ + if (emm_ctx->T3460.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", emm_ctx->ueid); + } + /* Stop timer T3470 */ + if (emm_ctx->T3470.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3470 (%d)", emm_ctx->T3460.id); + emm_ctx->T3470.id = nas_timer_stop(emm_ctx->T3470.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3470 stopped UE "NAS_UE_ID_FMT" ", emm_ctx->ueid); + } + /* Release the EMM context */ #if defined(NAS_BUILT_IN_EPC) emm_data_context_remove(&_emm_data, emm_ctx); @@ -713,7 +736,7 @@ static int _emm_attach_reject(void *args) if (emm_ctx) { emm_sap_t emm_sap; LOG_TRACE(WARNING, "EMM-PROC - EMM attach procedure not accepted " - "by the network (ueid=%08x, cause=%d)", + "by the network (ueid="NAS_UE_ID_FMT", cause=%d)", emm_ctx->ueid, emm_ctx->emm_cause); /* * Notify EMM-AS SAP that Attach Reject message has to be sent @@ -783,13 +806,20 @@ static int _emm_attach_abort(void *args) unsigned int ueid = data->ueid; esm_sap_t esm_sap; - LOG_TRACE(WARNING, "EMM-PROC - Abort the attach procedure (ueid=%u)", + LOG_TRACE(WARNING, "EMM-PROC - Abort the attach procedure (ueid="NAS_UE_ID_FMT")", ueid); - - /* Stop timer T3450 */ - if (T3450.id != NAS_TIMER_INACTIVE_ID) { - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3450 (%d)", T3450.id); - T3450.id = nas_timer_stop(T3450.id); +#if defined(NAS_BUILT_IN_EPC) + ctx = emm_data_context_get(&_emm_data, ueid); +#else + ctx = _emm_data.ctx[ueid]; +#endif + if (ctx) { + /* Stop timer T3450 */ + if (ctx->T3450.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3450 (%d)", ctx->T3450.id); + ctx->T3450.id = nas_timer_stop(ctx->T3450.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3450 stopped UE "NAS_UE_ID_FMT" ", data->ueid); + } } /* Release retransmission timer parameters */ @@ -799,11 +829,7 @@ static int _emm_attach_abort(void *args) free(data); -#if defined(NAS_BUILT_IN_EPC) - ctx = emm_data_context_get(&_emm_data, ueid); -#else - ctx = _emm_data.ctx[ueid]; -#endif + /* * Notify ESM that the network locally refused PDN connectivity @@ -865,7 +891,7 @@ static int _emm_attach_identify(void *args) LOG_FUNC_IN; - LOG_TRACE(INFO, "EMM-PROC - Identify incoming UE (ueid=0x%08x) using %s", + LOG_TRACE(INFO, "EMM-PROC - Identify incoming UE (ueid="NAS_UE_ID_FMT") using %s", emm_ctx->ueid, (emm_ctx->imsi)? "IMSI" : (emm_ctx->guti)? "GUTI" : (emm_ctx->imei)? "IMEI" : "none"); @@ -1055,7 +1081,7 @@ static int _emm_attach_security(void *args) int rc; emm_data_context_t *emm_ctx = (emm_data_context_t *)(args); - LOG_TRACE(INFO, "EMM-PROC - Setup NAS security (ueid=%u)", emm_ctx->ueid); + LOG_TRACE(INFO, "EMM-PROC - Setup NAS security (ueid="NAS_UE_ID_FMT")", emm_ctx->ueid); /* Create new NAS security context */ if (emm_ctx->security == NULL) { @@ -1131,7 +1157,7 @@ static int _emm_attach(void *args) emm_data_context_t *emm_ctx = (emm_data_context_t *)(args); - LOG_TRACE(INFO, "EMM-PROC - Attach UE (ueid=%u)", emm_ctx->ueid); + LOG_TRACE(INFO, "EMM-PROC - Attach UE (ueid="NAS_UE_ID_FMT")", emm_ctx->ueid); /* 3GPP TS 24.401, Figure 5.3.2.1-1, point 5a * At this point, all NAS messages shall be protected by the NAS security @@ -1330,16 +1356,18 @@ static int _emm_attach_accept(emm_data_context_t *emm_ctx, attach_data_t *data) rc = emm_sap_send(&emm_sap); if (rc != RETURNerror) { - if (T3450.id != NAS_TIMER_INACTIVE_ID) { + if (emm_ctx->T3450.id != NAS_TIMER_INACTIVE_ID) { /* Re-start T3450 timer */ - T3450.id = nas_timer_restart(T3450.id); + emm_ctx->T3450.id = nas_timer_restart(emm_ctx->T3450.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3450 restarted UE "NAS_UE_ID_FMT"", data->ueid); } else { /* Start T3450 timer */ - T3450.id = nas_timer_start(T3450.sec, _emm_attach_t3450_handler, data); + emm_ctx->T3450.id = nas_timer_start(emm_ctx->T3450.sec, _emm_attach_t3450_handler, data); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3450 started UE "NAS_UE_ID_FMT" ", data->ueid); } LOG_TRACE(INFO,"EMM-PROC - Timer T3450 (%d) expires in %ld seconds", - T3450.id, T3450.sec); + emm_ctx->T3450.id, emm_ctx->T3450.sec); } } else { LOG_TRACE(WARNING,"EMM-PROC - emm_ctx NULL"); diff --git a/openair-cn/NAS/MME/EMM/Authentication.c b/openair-cn/NAS/MME/EMM/Authentication.c index 87de2ae416b11b13b8e9dd72f51b288c5c885162..19eb5c13a8a9274b908ebc7e9bb095447333b5e2 100644 --- a/openair-cn/NAS/MME/EMM/Authentication.c +++ b/openair-cn/NAS/MME/EMM/Authentication.c @@ -235,7 +235,7 @@ int emm_proc_authentication(void *ctx, unsigned int ueid, int ksi, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REQ ue id %06x (authentication)", ueid); + "0 EMMREG_COMMON_PROC_REQ ue id "NAS_UE_ID_FMT" (authentication)", ueid); emm_sap_t emm_sap; emm_sap.primitive = EMMREG_COMMON_PROC_REQ; @@ -279,12 +279,9 @@ int emm_proc_authentication_complete(unsigned int ueid, int emm_cause, LOG_FUNC_IN; - LOG_TRACE(INFO, "EMM-PROC - Authentication complete (ueid=%u, cause=%d)", + LOG_TRACE(INFO, "EMM-PROC - Authentication complete (ueid="NAS_UE_ID_FMT", cause=%d)", ueid, emm_cause); - /* Stop timer T3460 */ - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", T3460.id); - T3460.id = nas_timer_stop(T3460.id); /* Release retransmission timer paramaters */ authentication_data_t *data = @@ -304,21 +301,22 @@ int emm_proc_authentication_complete(unsigned int ueid, int emm_cause, /* Get the UE context */ emm_data_context_t *emm_ctx = NULL; - #if defined(NAS_BUILT_IN_EPC) - if (ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, ueid); } - #else - if (ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[ueid]; } - #endif + if (emm_ctx) { + /* Stop timer T3460 */ + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", data->ueid); + } if (emm_cause == EMM_CAUSE_SUCCESS) { /* Check the received RES parameter */ if ( (emm_ctx == NULL) || @@ -342,7 +340,7 @@ int emm_proc_authentication_complete(unsigned int ueid, int emm_cause, */ MSC_LOG_EVENT( MSC_NAS_EMM_MME, - "SQN SYNCH_FAILURE ue id %06x", ueid); + "0 SQN SYNCH_FAILURE ue id "NAS_UE_ID_FMT" ", ueid); LOG_TRACE(DEBUG, "EMM-PROC - USIM has detected a mismatch in SQN Ask for a new vector"); nas_itti_auth_info_req(ueid, emm_ctx->imsi, 0, res->value); @@ -365,7 +363,7 @@ int emm_proc_authentication_complete(unsigned int ueid, int emm_cause, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REJ ue id %06x", ueid); + "0 EMMREG_COMMON_PROC_REJ ue id "NAS_UE_ID_FMT" ", ueid); emm_sap.primitive = EMMREG_COMMON_PROC_REJ; @@ -381,7 +379,7 @@ int emm_proc_authentication_complete(unsigned int ueid, int emm_cause, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_CNF ue id %06x", ueid); + "0 EMMREG_COMMON_PROC_CNF ue id "NAS_UE_ID_FMT" ", ueid); LOG_TRACE(DEBUG, "EMM-PROC - Notify EMM that the authentication procedure successfully completed"); emm_sap.primitive = EMMREG_COMMON_PROC_CNF; @@ -520,22 +518,26 @@ int _authentication_request(authentication_data_t *data) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_SECURITY_REQ ue id %06x", data->ueid); + "0 EMMAS_SECURITY_REQ ue id "NAS_UE_ID_FMT" ", data->ueid); rc = emm_sap_send(&emm_sap); if (rc != RETURNerror) { - if (T3460.id != NAS_TIMER_INACTIVE_ID) { - /* Re-start T3460 timer */ - T3460.id = nas_timer_restart(T3460.id); - } else { - /* Start T3460 timer */ - T3460.id = nas_timer_start(T3460.sec, _authentication_t3460_handler, + if (emm_ctx) { + if (emm_ctx->T3460.id != NAS_TIMER_INACTIVE_ID) { + /* Re-start T3460 timer */ + emm_ctx->T3460.id = nas_timer_restart(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 restarted UE "NAS_UE_ID_FMT" ", data->ueid); + } else { + /* Start T3460 timer */ + emm_ctx->T3460.id = nas_timer_start(emm_ctx->T3460.sec, _authentication_t3460_handler, data); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 started UE "NAS_UE_ID_FMT" ", data->ueid); + } } LOG_TRACE(INFO,"EMM-PROC - Timer T3460 (%d) expires in %ld seconds", - T3460.id, T3460.sec); + emm_ctx->T3460.id, emm_ctx->T3460.sec); } LOG_FUNC_RETURN (rc); @@ -604,6 +606,7 @@ static int _authentication_abort(void *args) LOG_FUNC_IN; int rc = RETURNerror; + struct emm_data_context_s *emm_ctx; authentication_data_t *data = (authentication_data_t *)(args); @@ -612,12 +615,19 @@ static int _authentication_abort(void *args) int notify_failure = data->notify_failure; LOG_TRACE(WARNING, "EMM-PROC - Abort authentication procedure " - "(ueid=%u)", ueid); - - /* Stop timer T3460 */ - if (T3460.id != NAS_TIMER_INACTIVE_ID) { - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", T3460.id); - T3460.id = nas_timer_stop(T3460.id); + "(ueid="NAS_UE_ID_FMT")", ueid); +#if defined(NAS_BUILT_IN_EPC) + emm_ctx = emm_data_context_get(&_emm_data, ueid); +#else + emm_ctx = _emm_data.ctx[ueid]; +#endif + if (emm_ctx) { + /* Stop timer T3460 */ + if (emm_ctx->T3460.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", data->ueid); + } } /* Release retransmission timer paramaters */ diff --git a/openair-cn/NAS/MME/EMM/Detach.c b/openair-cn/NAS/MME/EMM/Detach.c index e87b4ebd535bab1d493418c1a52d1aad3d442c23..1ba60e5b6dc4ae63305a7cd13e4bda603b6977ab 100644 --- a/openair-cn/NAS/MME/EMM/Detach.c +++ b/openair-cn/NAS/MME/EMM/Detach.c @@ -188,7 +188,7 @@ int emm_proc_detach_request(unsigned int ueid, emm_proc_detach_type_t type, int rc; emm_data_context_t *emm_ctx = NULL; - LOG_TRACE(INFO, "EMM-PROC - Detach type = %s (%d) requested (ueid=%u)", + LOG_TRACE(INFO, "EMM-PROC - Detach type = %s (%d) requested (ueid="NAS_UE_ID_FMT")", _emm_detach_type_str[type], type, ueid); /* Get the UE context */ @@ -207,13 +207,13 @@ int emm_proc_detach_request(unsigned int ueid, emm_proc_detach_type_t type, #endif if (emm_ctx == NULL) { - LOG_TRACE(WARNING, "No EMM context exists for the UE (ueid=%u)", ueid); + LOG_TRACE(WARNING, "No EMM context exists for the UE (ueid="NAS_UE_ID_FMT")", ueid); LOG_FUNC_RETURN(RETURNok); } if (switch_off) { MSC_LOG_EVENT(MSC_NAS_EMM_MME, - "0 Removing UE context ue id %06x", ueid); + "0 Removing UE context ue id "NAS_UE_ID_FMT" ", ueid); /* The UE is switched off */ if (emm_ctx->guti) { free(emm_ctx->guti); @@ -249,7 +249,24 @@ int emm_proc_detach_request(unsigned int ueid, emm_proc_detach_type_t type, free(emm_ctx->security); } - + /* Stop timer T3450 */ + if (emm_ctx->T3450.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3450 (%d)", emm_ctx->T3450.id); + emm_ctx->T3450.id = nas_timer_stop(emm_ctx->T3450.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3450 stopped UE "NAS_UE_ID_FMT" ", emm_ctx->ueid); + } + /* Stop timer T3460 */ + if (emm_ctx->T3460.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", emm_ctx->ueid); + } + /* Stop timer T3470 */ + if (emm_ctx->T3470.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3470 (%d)", emm_ctx->T3460.id); + emm_ctx->T3470.id = nas_timer_stop(emm_ctx->T3470.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3470 stopped UE "NAS_UE_ID_FMT" ", emm_ctx->ueid); + } /* Release the EMM context */ #if defined(NAS_BUILT_IN_EPC) emm_data_context_remove(&_emm_data, emm_ctx); @@ -267,7 +284,7 @@ int emm_proc_detach_request(unsigned int ueid, emm_proc_detach_type_t type, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMM_AS_NAS_INFO_DETACH ue id %06x", ueid); + "0 EMM_AS_NAS_INFO_DETACH ue id "NAS_UE_ID_FMT" ", ueid); /* Setup NAS information message to transfer */ emm_as->NASinfo = EMM_AS_NAS_INFO_DETACH; @@ -295,7 +312,7 @@ int emm_proc_detach_request(unsigned int ueid, emm_proc_detach_type_t type, MSC_NAS_EMM_MME, MSC_NAS_ESM_MME, NULL,0, - "0 ESM_EPS_BEARER_CONTEXT_DEACTIVATE_REQ ue id %06x", ueid); + "0 ESM_EPS_BEARER_CONTEXT_DEACTIVATE_REQ ue id "NAS_UE_ID_FMT" ", ueid); esm_sap_t esm_sap; esm_sap.primitive = ESM_EPS_BEARER_CONTEXT_DEACTIVATE_REQ; esm_sap.ueid = ueid; @@ -312,7 +329,7 @@ int emm_proc_detach_request(unsigned int ueid, emm_proc_detach_type_t type, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_DETACH_REQ ue id %06x", ueid); + "0 EMMREG_DETACH_REQ ue id "NAS_UE_ID_FMT" ", ueid); emm_sap.primitive = EMMREG_DETACH_REQ; emm_sap.u.emm_reg.ueid = ueid; emm_sap.u.emm_reg.ctx = emm_ctx; diff --git a/openair-cn/NAS/MME/EMM/Identification.c b/openair-cn/NAS/MME/EMM/Identification.c index db40df589f020e1382e7dc3440c717d919f70949..a4e34f5be3bafa3901f669f24416083ada4d044b 100644 --- a/openair-cn/NAS/MME/EMM/Identification.c +++ b/openair-cn/NAS/MME/EMM/Identification.c @@ -193,7 +193,7 @@ int emm_proc_identification(unsigned int ueid, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REQ ue id %06x (identification)", ueid); + "0 EMMREG_COMMON_PROC_REQ ue id "NAS_UE_ID_FMT" (identification)", ueid); emm_sap_t emm_sap; emm_sap.primitive = EMMREG_COMMON_PROC_REQ; @@ -229,7 +229,7 @@ int emm_proc_identification(unsigned int ueid, ** ** ***************************************************************************/ int emm_proc_identification_complete(unsigned int ueid, const imsi_t *imsi, - const imei_t *imei, UInt32_t *tmsi) + const imei_t *imei, uint32_t *tmsi) { int rc = RETURNerror; emm_sap_t emm_sap; @@ -238,36 +238,32 @@ int emm_proc_identification_complete(unsigned int ueid, const imsi_t *imsi, LOG_FUNC_IN; - LOG_TRACE(INFO, "EMM-PROC - Identification complete (ueid=%u)", ueid); - - /* Stop timer T3470 */ - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3470 (%d)", T3470.id); - T3470.id = nas_timer_stop(T3470.id); + LOG_TRACE(INFO, "EMM-PROC - Identification complete (ueid="NAS_UE_ID_FMT")", ueid); /* Release retransmission timer paramaters */ identification_data_t *data = (identification_data_t *)(emm_proc_common_get_args(ueid)); - if (data) { free(data); } /* Get the UE context */ #if defined(NAS_BUILT_IN_EPC) - if (ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, ueid); } - #else - if (ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[ueid]; } - #endif if (emm_ctx) { + /* Stop timer T3470 */ + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3470 (%d)", emm_ctx->T3470.id); + emm_ctx->T3470.id = nas_timer_stop(emm_ctx->T3470.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3470 stopped UE "NAS_UE_ID_FMT" ", ueid); + if (imsi) { /* Update the IMSI */ if (emm_ctx->imsi == NULL) { @@ -306,7 +302,7 @@ int emm_proc_identification_complete(unsigned int ueid, const imsi_t *imsi, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_CNF ue id %06x", ueid); + "0 EMMREG_COMMON_PROC_CNF ue id "NAS_UE_ID_FMT" ", ueid); emm_sap.primitive = EMMREG_COMMON_PROC_CNF; emm_sap.u.emm_reg.ueid = ueid; @@ -321,7 +317,7 @@ int emm_proc_identification_complete(unsigned int ueid, const imsi_t *imsi, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REJ ue id %06x", ueid); + "0 EMMREG_COMMON_PROC_REJ ue id "NAS_UE_ID_FMT" ", ueid); emm_sap.primitive = EMMREG_COMMON_PROC_REJ; emm_sap.u.emm_reg.ueid = ueid; @@ -428,7 +424,7 @@ int _identification_request(identification_data_t *data) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_SECURITY_REQ ue id %06x", data->ueid); + "0 EMMAS_SECURITY_REQ ue id "NAS_UE_ID_FMT" ", data->ueid); emm_sap.primitive = EMMAS_SECURITY_REQ; emm_sap.u.emm_as.u.security.guti = NULL; @@ -437,17 +433,13 @@ int _identification_request(identification_data_t *data) emm_sap.u.emm_as.u.security.identType = data->type; #if defined(NAS_BUILT_IN_EPC) - if (data->ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, data->ueid); } - #else - if (data->ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[data->ueid]; } - #endif /* Setup EPS NAS security data */ emm_as_set_security_data(&emm_sap.u.emm_as.u.security.sctx, @@ -455,17 +447,19 @@ int _identification_request(identification_data_t *data) rc = emm_sap_send(&emm_sap); if (rc != RETURNerror) { - if (T3470.id != NAS_TIMER_INACTIVE_ID) { + if (emm_ctx->T3470.id != NAS_TIMER_INACTIVE_ID) { /* Re-start T3470 timer */ - T3470.id = nas_timer_restart(T3470.id); + emm_ctx->T3470.id = nas_timer_restart(emm_ctx->T3470.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3470 restarted UE "NAS_UE_ID_FMT" ", data->ueid); } else { /* Start T3470 timer */ - T3470.id = nas_timer_start(T3470.sec, _identification_t3470_handler, + emm_ctx->T3470.id = nas_timer_start(emm_ctx->T3470.sec, _identification_t3470_handler, data); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3470 started UE "NAS_UE_ID_FMT" ", data->ueid); } LOG_TRACE(INFO,"EMM-PROC - Timer T3470 (%d) expires in %ld seconds", - T3470.id, T3470.sec); + emm_ctx->T3470.id, emm_ctx->T3470.sec); } LOG_FUNC_RETURN (rc); @@ -496,14 +490,25 @@ static int _identification_abort(void *args) if (data) { unsigned int ueid = data->ueid; int notify_failure = data->notify_failure; - + struct emm_data_context_s *emm_ctx = NULL; + /* Get the UE context */ + #if defined(NAS_BUILT_IN_EPC) + if (ueid > 0) { + emm_ctx = emm_data_context_get(&_emm_data, ueid); + } + #else + if (ueid < EMM_DATA_NB_UE_MAX) { + emm_ctx = _emm_data.ctx[ueid]; + } + #endif LOG_TRACE(WARNING, "EMM-PROC - Abort identification procedure " - "(ueid=%u)", ueid); + "(ueid="NAS_UE_ID_FMT")", ueid); /* Stop timer T3470 */ - if (T3470.id != NAS_TIMER_INACTIVE_ID) { - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3470 (%d)", T3470.id); - T3470.id = nas_timer_stop(T3470.id); + if (emm_ctx->T3470.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3470 (%d)", emm_ctx->T3470.id); + emm_ctx->T3470.id = nas_timer_stop(emm_ctx->T3470.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3470 stopped UE "NAS_UE_ID_FMT" ", data->ueid); } /* Release retransmission timer paramaters */ @@ -517,7 +522,7 @@ static int _identification_abort(void *args) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REJ ue id %06x", ueid); + "0 EMMREG_COMMON_PROC_REJ ue id "NAS_UE_ID_FMT" ", ueid); emm_sap_t emm_sap; emm_sap.primitive = EMMREG_COMMON_PROC_REJ; emm_sap.u.emm_reg.ueid = ueid; diff --git a/openair-cn/NAS/MME/EMM/LowerLayer.c b/openair-cn/NAS/MME/EMM/LowerLayer.c index 1463dd28d6e36b37743957abfa1f694a8a9b8ef5..20121649757e5a679d1fb03afc4b8ff11f00bf64 100644 --- a/openair-cn/NAS/MME/EMM/LowerLayer.c +++ b/openair-cn/NAS/MME/EMM/LowerLayer.c @@ -102,6 +102,7 @@ int lowerlayer_success(unsigned int ueid) emm_sap.primitive = EMMREG_LOWERLAYER_SUCCESS; emm_sap.u.emm_reg.ueid = ueid; + emm_sap.u.emm_reg.ctx = NULL; rc = emm_sap_send(&emm_sap); LOG_FUNC_RETURN (rc); @@ -131,6 +132,15 @@ int lowerlayer_failure(unsigned int ueid) emm_sap.primitive = EMMREG_LOWERLAYER_FAILURE; emm_sap.u.emm_reg.ueid = ueid; +#if defined(NAS_BUILT_IN_EPC) + emm_data_context_t *emm_ctx = NULL; + if (ueid > 0) { + emm_ctx = emm_data_context_get(&_emm_data, ueid); + } + emm_sap.u.emm_reg.ctx = emm_ctx; +#else + emm_sap.u.emm_reg.ctx = NULL; +#endif rc = emm_sap_send(&emm_sap); LOG_FUNC_RETURN (rc); @@ -182,6 +192,7 @@ int lowerlayer_release(int cause) emm_sap.primitive = EMMREG_LOWERLAYER_RELEASE; emm_sap.u.emm_reg.ueid = 0; + emm_sap.u.emm_reg.ctx = NULL; rc = emm_sap_send(&emm_sap); LOG_FUNC_RETURN (rc); @@ -328,7 +339,7 @@ void emm_as_set_security_data(emm_as_security_data_t *data, const void *args, is_new, context->eksi, context->ul_count.seq_num, - *(UInt32_t *)(&context->ul_count)); + *(uint32_t *)(&context->ul_count)); LOG_TRACE(INFO, "knas_int %s",dump_octet_string(&context->knas_int)); LOG_TRACE(INFO, @@ -339,7 +350,7 @@ void emm_as_set_security_data(emm_as_security_data_t *data, const void *args, data->is_new = is_new; data->ksi = context->eksi; data->sqn = context->dl_count.seq_num; - // LG data->count = *(UInt32_t *)(&context->ul_count); + // LG data->count = *(uint32_t *)(&context->ul_count); data->count = 0x00000000 | (context->dl_count.overflow << 8 ) | context->dl_count.seq_num; /* NAS integrity and cyphering keys may not be available if the * current security context is a partial EPS security context diff --git a/openair-cn/NAS/MME/EMM/SAP/emm_as.c b/openair-cn/NAS/MME/EMM/SAP/emm_as.c index 34454dfb3826a88da8949cb7cea2a16d84aa7c1e..882c9e800efaef049d038f18bd4566bd86af5281 100644 --- a/openair-cn/NAS/MME/EMM/SAP/emm_as.c +++ b/openair-cn/NAS/MME/EMM/SAP/emm_as.c @@ -201,7 +201,7 @@ int emm_as_send(const emm_as_t *msg) int emm_cause = EMM_CAUSE_SUCCESS; emm_as_primitive_t primitive = msg->primitive; - UInt32_t ueid = 0; + uint32_t ueid = 0; LOG_TRACE(INFO, "EMMAS-SAP - Received primitive %s (%d)", _emm_as_primitive_str[primitive - _EMMAS_START - 1], primitive); @@ -445,7 +445,7 @@ static int _emm_as_data_ind(const emm_as_data_t *msg, int *emm_cause) int rc = RETURNerror; LOG_TRACE(INFO, "EMMAS-SAP - Received AS data transfer indication " - "(ueid=%u, delivered=%s, length=%d)", msg->ueid, + "(ueid="NAS_UE_ID_FMT", delivered=%s, length=%d)", msg->ueid, (msg->delivered)? "TRUE" : "FALSE", msg->NASmsg.length); if (msg->delivered) { @@ -992,7 +992,7 @@ static int _emm_as_send(const emm_as_t *msg) LOG_FUNC_RETURN (RETURNok); } else { LOG_TRACE(DEBUG, "EMMAS-SAP - " - "Sending nas_itti_establish_cnf to S1AP UE ID %d" + "Sending nas_itti_establish_cnf to S1AP UE ID 0x%x" " selected_encryption_algorithm 0x%04X", " selected_integrity_algorithm 0x%04X", as_msg.msg.nas_establish_rsp.UEid, @@ -1295,9 +1295,9 @@ static int _emm_as_security_req(const emm_as_security_t *msg, if (emm_msg != NULL) switch (msg->msgType) { case EMM_AS_MSG_TYPE_IDENT: if (msg->guti) { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send IDENTITY_REQUEST to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send IDENTITY_REQUEST to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); } else { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send IDENTITY_REQUEST to ue id %u ", as_msg->UEid); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send IDENTITY_REQUEST to ue id "NAS_UE_ID_FMT" ", as_msg->UEid); } size = emm_send_identity_request(msg, &emm_msg->identity_request); @@ -1305,9 +1305,9 @@ static int _emm_as_security_req(const emm_as_security_t *msg, case EMM_AS_MSG_TYPE_AUTH: if (msg->guti) { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send AUTHENTICATION_REQUEST to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send AUTHENTICATION_REQUEST to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); } else { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send AUTHENTICATION_REQUEST to ue id %u ", as_msg->UEid); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send AUTHENTICATION_REQUEST to ue id "NAS_UE_ID_FMT" ", as_msg->UEid); } size = emm_send_authentication_request(msg, &emm_msg->authentication_request); @@ -1315,9 +1315,9 @@ static int _emm_as_security_req(const emm_as_security_t *msg, case EMM_AS_MSG_TYPE_SMC: if (msg->guti) { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send SECURITY_MODE_COMMAND to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send SECURITY_MODE_COMMAND to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); } else { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send SECURITY_MODE_COMMAND to ue id %u ", as_msg->UEid); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send SECURITY_MODE_COMMAND to ue id "NAS_UE_ID_FMT" ", as_msg->UEid); } size = emm_send_security_mode_command(msg, &emm_msg->security_mode_command); @@ -1410,9 +1410,9 @@ static int _emm_as_security_rej(const emm_as_security_t *msg, if (emm_msg != NULL) switch (msg->msgType) { case EMM_AS_MSG_TYPE_AUTH: if (msg->guti) { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send AUTHENTICATION_REJECT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send AUTHENTICATION_REJECT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); } else { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send AUTHENTICATION_REJECT to ue id %x ", as_msg->UEid); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send AUTHENTICATION_REJECT to ue id "NAS_UE_ID_FMT" ", as_msg->UEid); } size = emm_send_authentication_reject( &emm_msg->authentication_reject); @@ -1516,7 +1516,7 @@ static int _emm_as_establish_cnf(const emm_as_establish_t *msg, "EMMAS-SAP - emm_as_establish.nasMSG.length=%d", msg->NASmsg.length); - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send ATTACH_ACCEPT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send ATTACH_ACCEPT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); size = emm_send_attach_accept(msg, &emm_msg->attach_accept); break; @@ -1632,18 +1632,18 @@ static int _emm_as_establish_rej(const emm_as_establish_t *msg, if (emm_msg != NULL) switch (msg->NASinfo) { case EMM_AS_NAS_INFO_ATTACH: if (msg->UEid.guti) { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send ATTACH_REJECT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send ATTACH_REJECT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); } else { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send ATTACH_REJECT to ue id 0x%06"PRIX32" ", as_msg->UEid); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send ATTACH_REJECT to ue id "NAS_UE_ID_FMT" ", as_msg->UEid); } size = emm_send_attach_reject(msg, &emm_msg->attach_reject); break; case EMM_AS_NAS_INFO_TAU: if (msg->UEid.guti) { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send TRACKING_AREA_UPDATE_REJECT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send TRACKING_AREA_UPDATE_REJECT to s_TMSI %u.%u ", as_msg->s_tmsi.MMEcode, as_msg->s_tmsi.m_tmsi); } else { - MSC_LOG_EVENT(MSC_NAS_EMM_MME, "send TRACKING_AREA_UPDATE_REJECT to ue id 0x%06"PRIX32" ", as_msg->UEid); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 send TRACKING_AREA_UPDATE_REJECT to ue id "NAS_UE_ID_FMT" ", as_msg->UEid); } size = emm_send_tracking_area_update_reject(msg, &emm_msg->tracking_area_update_reject); diff --git a/openair-cn/NAS/MME/EMM/SAP/emm_asDef.h b/openair-cn/NAS/MME/EMM/SAP/emm_asDef.h index e2e0a773f8af9a275e45a4a972c6d51ec894fe34..fbd2a6b38e714d7ca02cb7e741297ecfa9deb852 100644 --- a/openair-cn/NAS/MME/EMM/SAP/emm_asDef.h +++ b/openair-cn/NAS/MME/EMM/SAP/emm_asDef.h @@ -81,11 +81,11 @@ typedef enum emm_as_primitive_u { /* Data used to setup EPS NAS security */ typedef struct emm_as_security_data_s { - UInt8_t is_new; /* New security data indicator */ + uint8_t is_new; /* New security data indicator */ #define EMM_AS_NO_KEY_AVAILABLE 0xff - UInt8_t ksi; /* NAS key set identifier */ - UInt8_t sqn; /* Sequence number */ - UInt32_t count; /* NAS counter */ + uint8_t ksi; /* NAS key set identifier */ + uint8_t sqn; /* Sequence number */ + uint32_t count; /* NAS counter */ const OctetString *k_enc; /* NAS cyphering key */ const OctetString *k_int; /* NAS integrity key */ } emm_as_security_data_t; @@ -99,21 +99,21 @@ typedef struct emm_as_security_data_s { * ---------------------------- */ typedef struct emm_as_security_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int emm_cause; /* EMM failure cause code */ /* * Identity request/response */ - UInt8_t identType; /* Type of requested UE's identity */ + uint8_t identType; /* Type of requested UE's identity */ const imsi_t *imsi; /* The requested IMSI of the UE */ const imei_t *imei; /* The requested IMEI of the UE */ - UInt32_t tmsi; /* The requested TMSI of the UE */ + uint32_t tmsi; /* The requested TMSI of the UE */ /* * Authentication request/response */ - UInt8_t ksi; /* NAS key set identifier */ + uint8_t ksi; /* NAS key set identifier */ const OctetString *rand; /* Random challenge number */ const OctetString *autn; /* Authentication token */ const OctetString *res; /* Authentication response */ @@ -121,23 +121,23 @@ typedef struct emm_as_security_s { /* * Security Mode Command */ - UInt8_t eea; /* Replayed EPS encryption algorithms */ - UInt8_t eia; /* Replayed EPS integrity algorithms */ - UInt8_t uea; /* Replayed UMTS encryption algorithms */ + uint8_t eea; /* Replayed EPS encryption algorithms */ + uint8_t eia; /* Replayed EPS integrity algorithms */ + uint8_t uea; /* Replayed UMTS encryption algorithms */ uint8_t ucs2; - UInt8_t uia; /* Replayed UMTS integrity algorithms */ - UInt8_t gea; /* Replayed GPRS encryption algorithms */ - UInt8_t umts_present; - UInt8_t gprs_present; + uint8_t uia; /* Replayed UMTS integrity algorithms */ + uint8_t gea; /* Replayed GPRS encryption algorithms */ + uint8_t umts_present; + uint8_t gprs_present; // Added by LG - UInt8_t selected_eea; /* Selected EPS encryption algorithms */ - UInt8_t selected_eia; /* Selected EPS integrity algorithms */ + uint8_t selected_eea; /* Selected EPS encryption algorithms */ + uint8_t selected_eia; /* Selected EPS integrity algorithms */ #define EMM_AS_MSG_TYPE_IDENT 0x01 /* Identification message */ #define EMM_AS_MSG_TYPE_AUTH 0x02 /* Authentication message */ #define EMM_AS_MSG_TYPE_SMC 0x03 /* Security Mode Command */ - UInt8_t msgType; /* Type of NAS security message to transfer */ + uint8_t msgType; /* Type of NAS security message to transfer */ } emm_as_security_t; /* @@ -153,17 +153,17 @@ typedef struct emm_as_EPS_identity_s { } emm_as_EPS_identity_t; typedef struct emm_as_establish_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ emm_as_EPS_identity_t UEid; /* UE's EPS mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int switch_off; /* TRUE if the UE is switched off */ - UInt8_t type; /* Network attach/detach type */ - UInt8_t RRCcause; /* Connection establishment cause */ - UInt8_t RRCtype; /* Associated call type */ + uint8_t type; /* Network attach/detach type */ + uint8_t RRCcause; /* Connection establishment cause */ + uint8_t RRCtype; /* Associated call type */ const plmn_t *plmnID; /* Identifier of the selected PLMN */ - UInt8_t ksi; /* NAS key set identifier */ - UInt8_t encryption:4; /* Ciphering algorithm */ - UInt8_t integrity:4; /* Integrity protection algorithm */ + uint8_t ksi; /* NAS key set identifier */ + uint8_t encryption:4; /* Ciphering algorithm */ + uint8_t integrity:4; /* Integrity protection algorithm */ int emm_cause; /* EMM failure cause code */ const GUTI_t *new_guti; /* New GUTI, if re-allocated */ int n_tacs; /* Number of concecutive tracking areas @@ -175,7 +175,7 @@ typedef struct emm_as_establish_s { #define EMM_AS_NAS_INFO_TAU 0x03 /* Tracking Area Update request */ #define EMM_AS_NAS_INFO_SR 0x04 /* Service Request */ #define EMM_AS_NAS_INFO_EXTSR 0x05 /* Extended Service Request */ - UInt8_t NASinfo; /* Type of initial NAS information to transfer */ + uint8_t NASinfo; /* Type of initial NAS information to transfer */ OctetString NASmsg; /* NAS message to be transfered within * initial NAS information message */ } emm_as_establish_t; @@ -185,11 +185,11 @@ typedef struct emm_as_establish_s { * -------------------------------------- */ typedef struct emm_as_release_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ #define EMM_AS_CAUSE_AUTHENTICATION 0x01 /* Authentication failure */ #define EMM_AS_CAUSE_DETACH 0x02 /* Detach requested */ - UInt8_t cause; /* Release cause */ + uint8_t cause; /* Release cause */ } emm_as_release_t; /* @@ -197,15 +197,15 @@ typedef struct emm_as_release_s { * --------------------------------- */ typedef struct emm_as_data_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int switch_off; /* TRUE if the UE is switched off */ - UInt8_t type; /* Network detach type */ - UInt8_t delivered; /* Data message delivery indicator */ + uint8_t type; /* Network detach type */ + uint8_t delivered; /* Data message delivery indicator */ #define EMM_AS_NAS_DATA_ATTACH 0x01 /* Attach complete */ #define EMM_AS_NAS_DATA_DETACH 0x02 /* Detach request */ - UInt8_t NASinfo; /* Type of NAS information to transfer */ + uint8_t NASinfo; /* Type of NAS information to transfer */ OctetString NASmsg; /* NAS message to be transfered */ } emm_as_data_t; @@ -220,7 +220,7 @@ typedef struct emm_as_page_s {} emm_as_page_t; * ------------------------------------- */ typedef struct emm_as_status_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int emm_cause; /* EMM failure cause code */ @@ -231,7 +231,7 @@ typedef struct emm_as_status_s { * ------------------------------------ */ typedef struct emm_as_cell_info_s { - UInt8_t found; /* Indicates whether a suitable cell is found */ + uint8_t found; /* Indicates whether a suitable cell is found */ #define EMM_AS_PLMN_LIST_SIZE 6 PLMN_LIST_T(EMM_AS_PLMN_LIST_SIZE) plmnIDs; /* List of identifiers of available PLMNs */ diff --git a/openair-cn/NAS/MME/EMM/SAP/emm_cn.c b/openair-cn/NAS/MME/EMM/SAP/emm_cn.c index 3c9bf936f7b6369e7c006c9b4e41445cf480c0d9..603e849c14e02a84fdba7acfeb6634e6defd6a04 100644 --- a/openair-cn/NAS/MME/EMM/SAP/emm_cn.c +++ b/openair-cn/NAS/MME/EMM/SAP/emm_cn.c @@ -105,7 +105,7 @@ static int _emm_cn_authentication_res(const emm_cn_auth_res_t *msg) if (emm_ctx == NULL) { LOG_TRACE(ERROR, "EMM-PROC - " - "Failed to find UE associated to id %u...", msg->ue_id); + "Failed to find UE associated to id "NAS_UE_ID_FMT"...", msg->ue_id); LOG_FUNC_RETURN (rc); } @@ -166,13 +166,13 @@ static int _emm_cn_authentication_fail(const emm_cn_auth_fail_t *msg) LOG_FUNC_RETURN (rc); } -static int _emm_cn_deregister_ue(const UInt32_t ue_id) +static int _emm_cn_deregister_ue(const uint32_t ue_id) { int rc = RETURNok; LOG_FUNC_IN; LOG_TRACE(WARNING, "EMM-PROC - " - "TODO deregister UE %u, following procedure is a test"); + "TODO deregister UE "NAS_UE_ID_FMT", following procedure is a test", ue_id); emm_proc_detach_request(ue_id, EMM_DETACH_TYPE_EPS /* ??? emm_proc_detach_type_t*/, 1 /*switch_off*/, 0 /*native_ksi*/, 0 /*ksi*/, NULL /*guti*/, NULL /*imsi*/, NULL /*imei*/); @@ -207,7 +207,7 @@ static int _emm_cn_pdn_connectivity_res(const emm_cn_pdn_res_t *msg_pP) if (emm_ctx_p == NULL) { LOG_TRACE(ERROR, "EMMCN-SAP - " - "Failed to find UE associated to id %u...", msg_pP->ue_id); + "Failed to find UE associated to id "NAS_UE_ID_FMT"...", msg_pP->ue_id); LOG_FUNC_RETURN (rc); } diff --git a/openair-cn/NAS/MME/EMM/SAP/emm_cnDef.h b/openair-cn/NAS/MME/EMM/SAP/emm_cnDef.h index d5a88b9923e629186999ac012303c7d767f61fa3..738871e5ebb433d7d6df7028b4cc7004fac462d8 100644 --- a/openair-cn/NAS/MME/EMM/SAP/emm_cnDef.h +++ b/openair-cn/NAS/MME/EMM/SAP/emm_cnDef.h @@ -70,7 +70,7 @@ typedef nas_pdn_connectivity_rsp_t emm_cn_pdn_res_t; typedef nas_pdn_connectivity_fail_t emm_cn_pdn_fail_t; typedef struct emm_cn_deregister_ue_s { - UInt32_t UEid; + uint32_t UEid; } emm_cn_deregister_ue_t; typedef struct emm_mme_ul_s { diff --git a/openair-cn/NAS/MME/EMM/SAP/emm_fsm.c b/openair-cn/NAS/MME/EMM/SAP/emm_fsm.c index 505b49862ae4dcc765202147ae1754834a9625a4..bbbace861b81cde29192f668f92ce5b26de1997c 100644 --- a/openair-cn/NAS/MME/EMM/SAP/emm_fsm.c +++ b/openair-cn/NAS/MME/EMM/SAP/emm_fsm.c @@ -55,6 +55,7 @@ Description Defines the EPS Mobility Management procedures executed at #if defined(NAS_BUILT_IN_EPC) # include "assertions.h" #endif +# include "msc.h" /****************************************************************************/ /**************** E X T E R N A L D E F I N I T I O N S ****************/ @@ -201,11 +202,12 @@ int emm_fsm_set_status( DevAssert(emm_ctx != NULL); if ((status < EMM_STATE_MAX) && (ueid > 0)) { - LOG_TRACE(INFO, "EMM-FSM - Status changed: %s ===> %s", - _emm_fsm_status_str[emm_ctx->_emm_fsm_status], - _emm_fsm_status_str[status]); if (status != emm_ctx->_emm_fsm_status) { + LOG_TRACE(INFO, "EMM-FSM - Status changed: %s ===> %s", + _emm_fsm_status_str[emm_ctx->_emm_fsm_status], + _emm_fsm_status_str[status]); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 EMM state %s ", _emm_fsm_status_str[status]); emm_ctx->_emm_fsm_status = status; } @@ -215,11 +217,11 @@ int emm_fsm_set_status( #else if ( (status < EMM_STATE_MAX) && (ueid < EMM_FSM_NB_UE_MAX) ) { - LOG_TRACE(INFO, "EMM-FSM - Status changed: %s ===> %s", - _emm_fsm_status_str[_emm_fsm_status[ueid]], - _emm_fsm_status_str[status]); - if (status != _emm_fsm_status[ueid]) { + LOG_TRACE(INFO, "EMM-FSM - Status changed: %s ===> %s", + _emm_fsm_status_str[_emm_fsm_status[ueid]], + _emm_fsm_status_str[status]); + _emm_fsm_status[ueid] = status; } @@ -250,7 +252,11 @@ emm_fsm_state_t emm_fsm_get_status(unsigned int ueid, void *ctx) { # if defined(NAS_BUILT_IN_EPC) emm_data_context_t *emm_ctx = (emm_data_context_t *)ctx; - + if (emm_ctx == NULL) { + LOG_TRACE(INFO, "EMM-FSM - try again get context ueid "NAS_UE_ID_FMT" ", + ueid); + emm_ctx = emm_data_context_get(&_emm_data, ueid); + } if (emm_ctx != NULL) { return emm_ctx->_emm_fsm_status; } @@ -290,7 +296,6 @@ int emm_fsm_process(const emm_reg_t *evt) # if defined(NAS_BUILT_IN_EPC) emm_data_context_t *emm_ctx = (emm_data_context_t *)evt->ctx; - DevAssert(emm_ctx != NULL); status = emm_fsm_get_status(0, emm_ctx); diff --git a/openair-cn/NAS/MME/EMM/SAP/emm_recv.c b/openair-cn/NAS/MME/EMM/SAP/emm_recv.c index 59c771e1bc06a879a5d3204deb2fc89273f7c64c..2f0d944679b004da3a91fde0d1ae7c8e4eb17beb 100644 --- a/openair-cn/NAS/MME/EMM/SAP/emm_recv.c +++ b/openair-cn/NAS/MME/EMM/SAP/emm_recv.c @@ -562,7 +562,7 @@ int emm_recv_identity_response(unsigned int ueid, identity_response_msg *msg, /* Execute the identification completion procedure */ rc = emm_proc_identification_complete(ueid, p_imsi, p_imei, - (UInt32_t *)(p_tmsi)); + (uint32_t *)(p_tmsi)); LOG_FUNC_RETURN (rc); } diff --git a/openair-cn/NAS/MME/EMM/SecurityModeControl.c b/openair-cn/NAS/MME/EMM/SecurityModeControl.c index 286191ea98c803420c37854bcbbf21823035a957..bd04316ee26b35d2745a4a7ffa5b6f51812e84ef 100644 --- a/openair-cn/NAS/MME/EMM/SecurityModeControl.c +++ b/openair-cn/NAS/MME/EMM/SecurityModeControl.c @@ -338,7 +338,7 @@ int emm_proc_security_mode_control(unsigned int ueid, int ksi, MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REQ ue id %06x (security mode control)", ueid); + "0 EMMREG_COMMON_PROC_REQ ue id "NAS_UE_ID_FMT" (security mode control)", ueid); emm_sap_t emm_sap; emm_sap.primitive = EMMREG_COMMON_PROC_REQ; emm_sap.u.emm_reg.ueid = ueid; @@ -381,34 +381,33 @@ int emm_proc_security_mode_complete(unsigned int ueid) LOG_FUNC_IN; - LOG_TRACE(INFO, "EMM-PROC - Security mode complete (ueid=%u)", ueid); + LOG_TRACE(INFO, "EMM-PROC - Security mode complete (ueid="NAS_UE_ID_FMT")", ueid); - /* Stop timer T3460 */ - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", T3460.id); - T3460.id = nas_timer_stop(T3460.id); - - /* Release retransmission timer paramaters */ - security_data_t *data = (security_data_t *)(emm_proc_common_get_args(ueid)); - - if (data) { - free(data); - } /* Get the UE context */ #if defined(NAS_BUILT_IN_EPC) - if (ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, ueid); } - #else - if (ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[ueid]; } - #endif + if (emm_ctx) { + /* Stop timer T3460 */ + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", ueid); + } + /* Release retransmission timer paramaters */ + security_data_t *data = (security_data_t *)(emm_proc_common_get_args(ueid)); + + if (data) { + free(data); + } + if (emm_ctx && emm_ctx->security) { /* * Notify EMM that the authentication procedure successfully completed @@ -417,7 +416,7 @@ int emm_proc_security_mode_complete(unsigned int ueid) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_CNF ue id %06x (security mode complete)", ueid); + "0 EMMREG_COMMON_PROC_CNF ue id "NAS_UE_ID_FMT" (security mode complete)", ueid); emm_sap.primitive = EMMREG_COMMON_PROC_CNF; emm_sap.u.emm_reg.ueid = ueid; emm_sap.u.emm_reg.ctx = emm_ctx; @@ -431,7 +430,7 @@ int emm_proc_security_mode_complete(unsigned int ueid) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REJ ue id %06x (security mode complete)", ueid); + "0 EMMREG_COMMON_PROC_REJ ue id "NAS_UE_ID_FMT" (security mode complete)", ueid); emm_sap.primitive = EMMREG_COMMON_PROC_REJ; emm_sap.u.emm_reg.ueid = ueid; emm_sap.u.emm_reg.ctx = emm_ctx; @@ -474,34 +473,32 @@ int emm_proc_security_mode_reject(unsigned int ueid) LOG_FUNC_IN; LOG_TRACE(WARNING, "EMM-PROC - Security mode command not accepted by the UE" - "(ueid=0x%08x)", ueid); - - /* Stop timer T3460 */ - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", T3460.id); - T3460.id = nas_timer_stop(T3460.id); + "(ueid="NAS_UE_ID_FMT")", ueid); - /* Release retransmission timer paramaters */ - security_data_t *data = (security_data_t *)(emm_proc_common_get_args(ueid)); - if (data) { - free(data); - } /* Get the UE context */ #if defined(NAS_BUILT_IN_EPC) - if (ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, ueid); DevAssert(emm_ctx != NULL); } - #else - if (ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[ueid]; } - #endif + if (emm_ctx) { + /* Stop timer T3460 */ + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", ueid); + } + /* Release retransmission timer paramaters */ + security_data_t *data = (security_data_t *)(emm_proc_common_get_args(ueid)); + if (data) { + free(data); + } /* Set the key set identifier to its previous value */ if (emm_ctx && emm_ctx->security) { @@ -521,7 +518,7 @@ int emm_proc_security_mode_reject(unsigned int ueid) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REJ ue id %06x (security mode reject)", ueid); + "0 EMMREG_COMMON_PROC_REJ ue id "NAS_UE_ID_FMT" (security mode reject)", ueid); emm_sap_t emm_sap; emm_sap.primitive = EMMREG_COMMON_PROC_REJ; emm_sap.u.emm_reg.ueid = ueid; @@ -642,17 +639,13 @@ int _security_request(security_data_t *data, int is_new) emm_sap.u.emm_as.u.security.selected_eia = data->selected_eia; #if defined(NAS_BUILT_IN_EPC) - if (data->ueid > 0) { emm_ctx = emm_data_context_get(&_emm_data, data->ueid); } - #else - if (data->ueid < EMM_DATA_NB_UE_MAX) { emm_ctx = _emm_data.ctx[data->ueid]; } - #endif /* Setup EPS NAS security data */ @@ -662,22 +655,22 @@ int _security_request(security_data_t *data, int is_new) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_SECURITY_REQ ue id %06x", data->ueid); + "0 EMMAS_SECURITY_REQ ue id "NAS_UE_ID_FMT" ", data->ueid); rc = emm_sap_send(&emm_sap); if (rc != RETURNerror) { - if (T3460.id != NAS_TIMER_INACTIVE_ID) { + if (emm_ctx->T3460.id != NAS_TIMER_INACTIVE_ID) { /* Re-start T3460 timer */ - T3460.id = nas_timer_restart(T3460.id); + emm_ctx->T3460.id = nas_timer_restart(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 restarted UE "NAS_UE_ID_FMT" ", data->ueid); } else { /* Start T3460 timer */ - T3460.id = nas_timer_start(T3460.sec, _security_t3460_handler, data); + emm_ctx->T3460.id = nas_timer_start(emm_ctx->T3460.sec, _security_t3460_handler, data); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 started UE "NAS_UE_ID_FMT" ", data->ueid); } - LOG_TRACE(INFO,"EMM-PROC - Timer T3460 (%d) expires in %ld seconds", - T3460.id, T3460.sec); + emm_ctx->T3460.id, emm_ctx->T3460.sec); } - LOG_FUNC_RETURN (rc); } @@ -700,6 +693,7 @@ static int _security_abort(void *args) { LOG_FUNC_IN; + struct emm_data_context_s *emm_ctx = NULL; int rc = RETURNerror; security_data_t *data = (security_data_t *)(args); @@ -709,12 +703,21 @@ static int _security_abort(void *args) int notify_failure = data->notify_failure; LOG_TRACE(WARNING, "EMM-PROC - Abort security mode control procedure " - "(ueid=%u)", ueid); - + "(ueid="NAS_UE_ID_FMT")", ueid); +#if defined(NAS_BUILT_IN_EPC) + if (data->ueid > 0) { + emm_ctx = emm_data_context_get(&_emm_data, data->ueid); + } +#else + if (data->ueid < EMM_DATA_NB_UE_MAX) { + emm_ctx = _emm_data.ctx[data->ueid]; + } +#endif /* Stop timer T3460 */ - if (T3460.id != NAS_TIMER_INACTIVE_ID) { - LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", T3460.id); - T3460.id = nas_timer_stop(T3460.id); + if (emm_ctx->T3460.id != NAS_TIMER_INACTIVE_ID) { + LOG_TRACE(INFO, "EMM-PROC - Stop timer T3460 (%d)", emm_ctx->T3460.id); + emm_ctx->T3460.id = nas_timer_stop(emm_ctx->T3460.id); + MSC_LOG_EVENT(MSC_NAS_EMM_MME, "0 T3460 stopped UE "NAS_UE_ID_FMT" ", ueid); } /* Release retransmission timer paramaters */ @@ -728,7 +731,7 @@ static int _security_abort(void *args) MSC_NAS_EMM_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMREG_COMMON_PROC_REJ ue id %06x (security abort)", data->ueid); + "0 EMMREG_COMMON_PROC_REJ ue id "NAS_UE_ID_FMT" (security abort)", data->ueid); emm_sap_t emm_sap; emm_sap.primitive = EMMREG_COMMON_PROC_REJ; emm_sap.u.emm_reg.ueid = ueid; diff --git a/openair-cn/NAS/MME/EMM/TrackingAreaUpdate.c b/openair-cn/NAS/MME/EMM/TrackingAreaUpdate.c index e6cae2ac732f469bd398e394ce47ffe9d3c85274..09ae70da85e541b226f30c7bebd75f5afde4aecb 100644 --- a/openair-cn/NAS/MME/EMM/TrackingAreaUpdate.c +++ b/openair-cn/NAS/MME/EMM/TrackingAreaUpdate.c @@ -158,7 +158,7 @@ static int _emm_tracking_area_update_reject(void *args) if (emm_ctx) { emm_sap_t emm_sap; LOG_TRACE(WARNING, "EMM-PROC - EMM tracking area update procedure not accepted " - "by the network (ueid=%08x, cause=%d)", + "by the network (ueid="NAS_UE_ID_FMT", cause=%d)", emm_ctx->ueid, emm_ctx->emm_cause); /* * Notify EMM-AS SAP that Tracking Area Update Reject message has to be sent diff --git a/openair-cn/NAS/MME/EMM/emmData.h b/openair-cn/NAS/MME/EMM/emmData.h index 44adb669a65ac39f36bfa5907034a9321a594b1a..e17214badbd9e07e455aefb204ad2d120bd0a78a 100644 --- a/openair-cn/NAS/MME/EMM/emmData.h +++ b/openair-cn/NAS/MME/EMM/emmData.h @@ -110,22 +110,22 @@ typedef struct emm_security_context_s { OctetString knas_enc; /* NAS cyphering key */ OctetString knas_int; /* NAS integrity key */ struct count_s{ - UInt32_t spare:8; - UInt32_t overflow:16; - UInt32_t seq_num:8; + uint32_t spare:8; + uint32_t overflow:16; + uint32_t seq_num:8; } dl_count, ul_count; /* Downlink and uplink count parameters */ struct { - UInt8_t eps_encryption; /* algorithm used for ciphering */ - UInt8_t eps_integrity; /* algorithm used for integrity protection */ - UInt8_t umts_encryption; /* algorithm used for ciphering */ - UInt8_t umts_integrity; /* algorithm used for integrity protection */ - UInt8_t gprs_encryption; /* algorithm used for ciphering */ - UInt8_t umts_present:1; - UInt8_t gprs_present:1; + uint8_t eps_encryption; /* algorithm used for ciphering */ + uint8_t eps_integrity; /* algorithm used for integrity protection */ + uint8_t umts_encryption; /* algorithm used for ciphering */ + uint8_t umts_integrity; /* algorithm used for integrity protection */ + uint8_t gprs_encryption; /* algorithm used for ciphering */ + uint8_t umts_present:1; + uint8_t gprs_present:1; } capability; /* UE network capability */ struct { - UInt8_t encryption:4; /* algorithm used for ciphering */ - UInt8_t integrity:4; /* algorithm used for integrity protection */ + uint8_t encryption:4; /* algorithm used for ciphering */ + uint8_t integrity:4; /* algorithm used for integrity protection */ } selected_algorithms; /* MME selected algorithms */ } emm_security_context_t; @@ -181,6 +181,10 @@ typedef struct emm_data_context_s { emm_fsm_state_t _emm_fsm_status; + struct nas_timer_t T3450; /* EMM message retransmission timer */ + struct nas_timer_t T3460; /* Authentication timer */ + struct nas_timer_t T3470; /* Identification timer */ + esm_data_context_t esm_data_ctx; } emm_data_context_t; @@ -240,10 +244,6 @@ emm_data_t _emm_data; #define T3460_DEFAULT_VALUE 6 /* 6 seconds */ #define T3470_DEFAULT_VALUE 6 /* 6 seconds */ -struct nas_timer_t T3450; /* EMM message retransmission timer */ -struct nas_timer_t T3460; /* Authentication timer */ -struct nas_timer_t T3470; /* Identification timer */ - /* * mobile reachable timer * ---------------------- diff --git a/openair-cn/NAS/MME/EMM/emm_data_ctx.c b/openair-cn/NAS/MME/EMM/emm_data_ctx.c index 90a96a18fbdf9d78e89018b16204103cebe10d36..4030e08e95d43acf83943ab8fd3c4d811ee18da8 100644 --- a/openair-cn/NAS/MME/EMM/emm_data_ctx.c +++ b/openair-cn/NAS/MME/EMM/emm_data_ctx.c @@ -80,13 +80,13 @@ struct emm_data_context_s *emm_data_context_get( struct emm_data_context_s *emm_data_context_remove( emm_data_t *emm_data, struct emm_data_context_s *elm) { - LOG_TRACE(INFO, "EMM-CTX - Remove in context %p UE id %u", elm, elm->ueid); + LOG_TRACE(INFO, "EMM-CTX - Remove in context %p UE id "NAS_UE_ID_FMT" ", elm, elm->ueid); return RB_REMOVE(emm_data_context_map, &emm_data->ctx_map, elm); } void emm_data_context_add(emm_data_t *emm_data, struct emm_data_context_s *elm) { - LOG_TRACE(INFO, "EMM-CTX - Add in context %p UE id %u", elm, elm->ueid); + LOG_TRACE(INFO, "EMM-CTX - Add in context %p UE id "NAS_UE_ID_FMT" ", elm, elm->ueid); RB_INSERT(emm_data_context_map, &emm_data->ctx_map, elm); } @@ -97,7 +97,7 @@ void emm_data_context_dump(struct emm_data_context_s *elm_pP) char guti_str[22]; int k, size, remaining_size; char key_string[KASME_LENGTH_OCTETS*2]; - LOG_TRACE(INFO, "EMM-CTX: ue id: 0x%06"PRIX32" (UE identifier)", elm_pP->ueid); + LOG_TRACE(INFO, "EMM-CTX: ue id: "NAS_UE_ID_FMT" (UE identifier)", elm_pP->ueid); LOG_TRACE(INFO, " is_dynamic: %u (Dynamically allocated context indicator)", elm_pP->is_dynamic); LOG_TRACE(INFO, " is_attached: %u (Attachment indicator)", elm_pP->is_attached); LOG_TRACE(INFO, " is_emergency: %u (Emergency bearer services indicator)", elm_pP->is_emergency); diff --git a/openair-cn/NAS/MME/EMM/emm_main.c b/openair-cn/NAS/MME/EMM/emm_main.c index 10a2891d17d7df35e28991cf2747de4c0ca56ef4..c90a7836f51ccb9481e920474da3d02d0aedbbbc 100644 --- a/openair-cn/NAS/MME/EMM/emm_main.c +++ b/openair-cn/NAS/MME/EMM/emm_main.c @@ -104,16 +104,6 @@ void emm_main_initialize(void) RB_INIT(&_emm_data.ctx_map); #endif - /* - * Initialize EMM timers - */ - T3450.id = NAS_TIMER_INACTIVE_ID; - T3450.sec = T3450_DEFAULT_VALUE; - T3460.id = NAS_TIMER_INACTIVE_ID; - T3460.sec = T3460_DEFAULT_VALUE; - T3470.id = NAS_TIMER_INACTIVE_ID; - T3470.sec = T3470_DEFAULT_VALUE; - LOG_FUNC_OUT; } diff --git a/openair-cn/NAS/MME/EMM/emm_proc.h b/openair-cn/NAS/MME/EMM/emm_proc.h index 15b66e8f7e09bd5763df72c2c66598b20fb1bf92..d7892a03b1bef4abedd6c995e14588137ba065f4 100644 --- a/openair-cn/NAS/MME/EMM/emm_proc.h +++ b/openair-cn/NAS/MME/EMM/emm_proc.h @@ -156,7 +156,7 @@ int emm_proc_identification(unsigned int ueid, emm_common_reject_callback_t reject, emm_common_failure_callback_t failure); int emm_proc_identification_complete(unsigned int ueid, const imsi_t *imsi, - const imei_t *imei, UInt32_t *tmsi); + const imei_t *imei, uint32_t *tmsi); /* * -------------------------------------------------------------------------- diff --git a/openair-cn/NAS/MME/ESM/DedicatedEpsBearerContextActivation.c b/openair-cn/NAS/MME/ESM/DedicatedEpsBearerContextActivation.c index 3894f017be78bd90c2e54c4682b1d52a449997ab..813b29770d663b6ff976ffe0cb31c7bb421c6dc3 100644 --- a/openair-cn/NAS/MME/ESM/DedicatedEpsBearerContextActivation.c +++ b/openair-cn/NAS/MME/ESM/DedicatedEpsBearerContextActivation.c @@ -134,7 +134,7 @@ int esm_proc_dedicated_eps_bearer_context(emm_data_context_t *ctx, int pid, LOG_FUNC_IN; LOG_TRACE(INFO, "ESM-PROC - Dedicated EPS bearer context activation " - "(ueid=%u, pid=%d)", ctx->ueid, pid); + "(ueid="NAS_UE_ID_FMT", pid=%d)", ctx->ueid, pid); /* Assign new EPS bearer context */ *ebi = esm_ebr_assign(ctx, ESM_EBI_UNASSIGNED); @@ -194,7 +194,7 @@ int esm_proc_dedicated_eps_bearer_context_request(int is_standalone, int rc = RETURNok; LOG_TRACE(INFO,"ESM-PROC - Initiate dedicated EPS bearer context " - "activation (ueid=%d, ebi=%d)", ctx->ueid, ebi); + "activation (ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Send activate dedicated EPS bearer context request message and * start timer T3485 */ @@ -244,7 +244,7 @@ int esm_proc_dedicated_eps_bearer_context_accept(emm_data_context_t *ctx, int eb int rc; LOG_TRACE(INFO, "ESM-PROC - Dedicated EPS bearer context activation " - "accepted by the UE (ueid=%u, ebi=%d)", ctx->ueid, ebi); + "accepted by the UE (ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Stop T3485 timer */ rc = esm_ebr_stop_timer(ctx, ebi); @@ -297,7 +297,7 @@ int esm_proc_dedicated_eps_bearer_context_reject(emm_data_context_t *ctx, int eb LOG_FUNC_IN; LOG_TRACE(WARNING, "ESM-PROC - Dedicated EPS bearer context activation " - "not accepted by the UE (ueid=%u, ebi=%d)", ctx->ueid, ebi); + "not accepted by the UE (ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Stop T3485 timer if running */ rc = esm_ebr_stop_timer(ctx, ebi); @@ -362,7 +362,7 @@ static void *_dedicated_eps_bearer_activate_t3485_handler(void *args) /* Increment the retransmission counter */ data->count += 1; - LOG_TRACE(WARNING, "ESM-PROC - T3485 timer expired (ueid=%d, ebi=%d), " + LOG_TRACE(WARNING, "ESM-PROC - T3485 timer expired (ueid="NAS_UE_ID_FMT", ebi=%d), " "retransmission counter = %d", data->ueid, data->ebi, data->count); diff --git a/openair-cn/NAS/MME/ESM/DefaultEpsBearerContextActivation.c b/openair-cn/NAS/MME/ESM/DefaultEpsBearerContextActivation.c index ecb2dc1d2f89ddeac95a5900ad06aea59035edf7..831fc3327d257d4f5f6761eb3042b1b144ad0805 100644 --- a/openair-cn/NAS/MME/ESM/DefaultEpsBearerContextActivation.c +++ b/openair-cn/NAS/MME/ESM/DefaultEpsBearerContextActivation.c @@ -126,7 +126,7 @@ int esm_proc_default_eps_bearer_context(emm_data_context_t *ctx, int pid, LOG_FUNC_IN; LOG_TRACE(INFO, "ESM-PROC - Default EPS bearer context activation " - "(ueid=%u, pid=%d, GBR UL %u GBR DL %u, MBR UL %u MBR DL %u QCI %u)", + "(ueid="NAS_UE_ID_FMT", pid=%d, GBR UL %u GBR DL %u, MBR UL %u MBR DL %u QCI %u)", ctx->ueid, pid, qos->gbrUL, @@ -200,11 +200,11 @@ int esm_proc_default_eps_bearer_context_request(int is_standalone, /* Send activate default EPS bearer context request message and * start timer T3485 */ LOG_TRACE(INFO,"ESM-PROC - Initiate standalone default EPS bearer context activation " - "(ueid=%u, ebi=%d)", ctx->ueid, ebi); + "(ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); rc = _default_eps_bearer_activate(ctx, ebi, msg); } else { LOG_TRACE(INFO,"ESM-PROC - Initiate non standalone default EPS bearer context activation " - "(ueid=%u, ebi=%d)", ctx->ueid, ebi); + "(ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); } if (rc != RETURNerror) { @@ -251,7 +251,7 @@ int esm_proc_default_eps_bearer_context_accept(emm_data_context_t *ctx, int ebi, int rc; LOG_TRACE(INFO, "ESM-PROC - Default EPS bearer context activation " - "accepted by the UE (ueid=%u, ebi=%d)", ctx->ueid, ebi); + "accepted by the UE (ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Stop T3485 timer if running */ rc = esm_ebr_stop_timer(ctx, ebi); @@ -300,7 +300,7 @@ int esm_proc_default_eps_bearer_context_reject(emm_data_context_t *ctx, int ebi, int rc; LOG_TRACE(WARNING, "ESM-PROC - Default EPS bearer context activation " - "not accepted by the UE (ueid=%u, ebi=%d)", ctx->ueid, ebi); + "not accepted by the UE (ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Stop T3485 timer if running */ rc = esm_ebr_stop_timer(ctx, ebi); @@ -352,7 +352,7 @@ int esm_proc_default_eps_bearer_context_failure(emm_data_context_t *ctx) LOG_FUNC_IN; LOG_TRACE(WARNING, "ESM-PROC - Default EPS bearer context activation " - "failure (ueid=%u)", ctx->ueid); + "failure (ueid="NAS_UE_ID_FMT")", ctx->ueid); /* Get the EPS bearer identity of the EPS bearer context which is still * pending in the active pending state */ @@ -417,7 +417,7 @@ static void *_default_eps_bearer_activate_t3485_handler(void *args) /* Increment the retransmission counter */ data->count += 1; - LOG_TRACE(WARNING, "ESM-PROC - T3485 timer expired (ueid=%d, ebi=%d), " + LOG_TRACE(WARNING, "ESM-PROC - T3485 timer expired (ueid="NAS_UE_ID_FMT", ebi=%d), " "retransmission counter = %d", data->ueid, data->ebi, data->count); diff --git a/openair-cn/NAS/MME/ESM/EpsBearerContextDeactivation.c b/openair-cn/NAS/MME/ESM/EpsBearerContextDeactivation.c index 2b282cccd2da886c071d8f35601934a8d3f3919e..b26240a848d96aaadc97e4d54a3059fc3301bc2d 100644 --- a/openair-cn/NAS/MME/ESM/EpsBearerContextDeactivation.c +++ b/openair-cn/NAS/MME/ESM/EpsBearerContextDeactivation.c @@ -164,7 +164,7 @@ int esm_proc_eps_bearer_context_deactivate(emm_data_context_t *ctx, int is_local } LOG_TRACE(INFO, "ESM-PROC - EPS bearer context deactivation " - "(ueid=%u, ebi=%d)", ctx->ueid, ebi); + "(ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); if ((ctx != NULL) && (*pid < ESM_DATA_PDN_MAX) ) { @@ -234,7 +234,7 @@ int esm_proc_eps_bearer_context_deactivate_request(int is_standalone, int rc; LOG_TRACE(INFO,"ESM-PROC - Initiate EPS bearer context deactivation " - "(ueid=%d, ebi=%d)", ctx->ueid, ebi); + "(ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Send deactivate EPS bearer context request message and * start timer T3495 */ @@ -288,7 +288,7 @@ int esm_proc_eps_bearer_context_deactivate_accept(emm_data_context_t *ctx, int e int pid = RETURNerror; LOG_TRACE(INFO, "ESM-PROC - EPS bearer context deactivation " - "accepted by the UE (ueid=%u, ebi=%d)", ctx->ueid, ebi); + "accepted by the UE (ueid="NAS_UE_ID_FMT", ebi=%d)", ctx->ueid, ebi); /* Stop T3495 timer if running */ rc = esm_ebr_stop_timer(ctx, ebi); @@ -353,7 +353,7 @@ static void *_eps_bearer_deactivate_t3495_handler(void *args) /* Increment the retransmission counter */ data->count += 1; - LOG_TRACE(WARNING, "ESM-PROC - T3495 timer expired (ueid=%d, ebi=%d), " + LOG_TRACE(WARNING, "ESM-PROC - T3495 timer expired (ueid="NAS_UE_ID_FMT", ebi=%d), " "retransmission counter = %d", data->ueid, data->ebi, data->count); diff --git a/openair-cn/NAS/MME/ESM/PdnConnectivity.c b/openair-cn/NAS/MME/ESM/PdnConnectivity.c index 7cb51e0af4307ef3052e64a4d67a6d51ee793547..e2eda77bed43a5d7aa554a2d4d1f84f7a63ca65e 100644 --- a/openair-cn/NAS/MME/ESM/PdnConnectivity.c +++ b/openair-cn/NAS/MME/ESM/PdnConnectivity.c @@ -162,7 +162,7 @@ int esm_proc_pdn_connectivity_request(emm_data_context_t *ctx, int pti, LOG_FUNC_IN; LOG_TRACE(INFO, "ESM-PROC - PDN connectivity requested by the UE " - "(ueid=%u, pti=%d) PDN type = %s, APN = %s pdn addr = %s", ctx->ueid, pti, + "(ueid="NAS_UE_ID_FMT", pti=%d) PDN type = %s, APN = %s pdn addr = %s", ctx->ueid, pti, (pdn_type == ESM_PDN_TYPE_IPV4)? "IPv4" : (pdn_type == ESM_PDN_TYPE_IPV6)? "IPv6" : "IPv4v6", (apn) ? (char *)(apn->value) : "null", @@ -323,7 +323,7 @@ int esm_proc_pdn_connectivity_reject(int is_standalone, emm_data_context_t *ctx, int rc = RETURNerror; LOG_TRACE(WARNING, "ESM-PROC - PDN connectivity not accepted by the " - "network (ueid=%d)", ctx->ueid); + "network (ueid="NAS_UE_ID_FMT")", ctx->ueid); if (is_standalone) { emm_sap_t emm_sap; @@ -371,7 +371,7 @@ int esm_proc_pdn_connectivity_failure(emm_data_context_t *ctx, int pid) LOG_FUNC_IN; - LOG_TRACE(WARNING, "ESM-PROC - PDN connectivity failure (ueid=%u, pid=%d)", + LOG_TRACE(WARNING, "ESM-PROC - PDN connectivity failure (ueid="NAS_UE_ID_FMT", pid=%d)", ctx->ueid, pid); /* Delete the PDN connection entry */ @@ -426,7 +426,7 @@ static int _pdn_connectivity_create(emm_data_context_t *ctx, int pid = ESM_DATA_PDN_MAX; LOG_TRACE(INFO, "ESM-PROC - Create new PDN connection " - "(pti=%d) APN = %s, IP address = %s (ueid=%u)", pti, apn->value, + "(pti=%d) APN = %s, IP address = %s (ueid="NAS_UE_ID_FMT")", pti, apn->value, (pdn_type == ESM_PDN_TYPE_IPV4)? esm_data_get_ipv4_addr(pdn_addr) : (pdn_type == ESM_PDN_TYPE_IPV6)? esm_data_get_ipv6_addr(pdn_addr) : esm_data_get_ipv4v6_addr(pdn_addr), ctx->ueid); diff --git a/openair-cn/NAS/MME/ESM/PdnDisconnect.c b/openair-cn/NAS/MME/ESM/PdnDisconnect.c index a17744577cc624093cc40791aae26e339908d669..9dfcbd66fb3120c676b501bea03be3b9f841bf6a 100644 --- a/openair-cn/NAS/MME/ESM/PdnDisconnect.c +++ b/openair-cn/NAS/MME/ESM/PdnDisconnect.c @@ -123,7 +123,7 @@ int esm_proc_pdn_disconnect_request(emm_data_context_t *ctx, int pti, int *esm_c LOG_FUNC_IN; LOG_TRACE(INFO, "ESM-PROC - PDN disconnect requested by the UE " - "(ueid=%d, pti=%d)", ctx->ueid, pti); + "(ueid="NAS_UE_ID_FMT", pti=%d)", ctx->ueid, pti); /* Get UE's ESM context */ if (ctx->esm_data_ctx.n_pdns > 1) { @@ -173,7 +173,7 @@ int esm_proc_pdn_disconnect_accept(emm_data_context_t *ctx, int pid, int *esm_ca LOG_FUNC_IN; LOG_TRACE(INFO, "ESM-PROC - PDN disconnect accepted by the UE " - "(ueid=%d, pid=%d)", ctx->ueid, pid); + "(ueid="NAS_UE_ID_FMT", pid=%d)", ctx->ueid, pid); /* Release the connectivity with the requested PDN */ int rc = mme_api_unsubscribe(NULL); @@ -225,7 +225,7 @@ int esm_proc_pdn_disconnect_reject(int is_standalone, emm_data_context_t *ctx, emm_sap_t emm_sap; LOG_TRACE(WARNING, "ESM-PROC - PDN disconnect not accepted by the network " - "(ueid=%d)", ctx->ueid); + "(ueid="NAS_UE_ID_FMT")", ctx->ueid); /* * Notity EMM that ESM PDU has to be forwarded to lower layers diff --git a/openair-cn/NAS/MME/ESM/esm_ebr.c b/openair-cn/NAS/MME/ESM/esm_ebr.c index bd85dd6643d818dd04e9a842848588097624801b..720e69a5eb59a19bd9dbf2e1fce1220f5ce374a3 100644 --- a/openair-cn/NAS/MME/ESM/esm_ebr.c +++ b/openair-cn/NAS/MME/ESM/esm_ebr.c @@ -53,6 +53,7 @@ Description Defines functions used to handle state of EPS bearer contexts #include "nas_log.h" #include "mme_api.h" +#include "msc.h" /****************************************************************************/ /**************** E X T E R N A L D E F I N I T I O N S ****************/ @@ -268,6 +269,7 @@ int esm_ebr_release( LOG_TRACE(INFO, "ESM-FSM - Stop retransmission timer %d", ebr_ctx->timer.id); ebr_ctx->timer.id = nas_timer_stop(ebr_ctx->timer.id); + MSC_LOG_EVENT(MSC_NAS_ESM_MME, "0 Timer %x ebi %u stopped",ebr_ctx->timer.id, ebi); } /* Release the retransmisison timer parameters */ @@ -335,6 +337,7 @@ int esm_ebr_start_timer(emm_data_context_t *ctx, int ebi, const OctetString *msg if (ebr_ctx->args) { /* Re-start the retransmission timer */ ebr_ctx->timer.id = nas_timer_restart(ebr_ctx->timer.id); + MSC_LOG_EVENT(MSC_NAS_ESM_MME, "0 Timer %x ebi %u restarted",ebr_ctx->timer.id, ebi); } } else { /* Setup the retransmission timer parameters */ @@ -359,6 +362,7 @@ int esm_ebr_start_timer(emm_data_context_t *ctx, int ebi, const OctetString *msg /* Setup the retransmission timer to expire at the given * time interval */ ebr_ctx->timer.id = nas_timer_start(sec, cb, ebr_ctx->args); + MSC_LOG_EVENT(MSC_NAS_ESM_MME, "0 Timer %x ebi %u started",ebr_ctx->timer.id, ebi); ebr_ctx->timer.sec = sec; } } @@ -415,6 +419,7 @@ int esm_ebr_stop_timer(emm_data_context_t *ctx, int ebi) LOG_TRACE(INFO, "ESM-FSM - Stop retransmission timer %d", ebr_ctx->timer.id); ebr_ctx->timer.id = nas_timer_stop(ebr_ctx->timer.id); + MSC_LOG_EVENT(MSC_NAS_ESM_MME, "0 Timer %x ebi %u stopped",ebr_ctx->timer.id, ebi); } /* Release the retransmisison timer parameters */ @@ -526,13 +531,18 @@ int esm_ebr_set_status( old_status = ebr_ctx->status; if (status < ESM_EBR_STATE_MAX) { - LOG_TRACE(INFO, "ESM-FSM - Status of EPS bearer context %d changed:" - " %s ===> %s", ebi, - _esm_ebr_state_str[old_status], _esm_ebr_state_str[status]); - if (status != old_status) { + LOG_TRACE(INFO, "ESM-FSM - Status of EPS bearer context %d changed:" + " %s ===> %s", ebi, + _esm_ebr_state_str[old_status], _esm_ebr_state_str[status]); + MSC_LOG_EVENT(MSC_NAS_ESM_MME, "0 ESM state %s => %s "NAS_UE_ID_FMT" ", + _esm_ebr_state_str[old_status], _esm_ebr_state_str[status], ctx->ueid); + ebr_ctx->status = status; LOG_FUNC_RETURN (RETURNok); + } else { + LOG_TRACE(INFO, "ESM-FSM - Status of EPS bearer context %d unchanged:" + " %s ", ebi, _esm_ebr_state_str[status]); } } diff --git a/openair-cn/NAS/MME/nas_itti_messaging.c b/openair-cn/NAS/MME/nas_itti_messaging.c index 7dcb5c52d1421ca8cbb46a381dc8de2fc1ad9c0d..c22f40895494b6858d1d0382ce203f57571dbfd9 100644 --- a/openair-cn/NAS/MME/nas_itti_messaging.c +++ b/openair-cn/NAS/MME/nas_itti_messaging.c @@ -37,7 +37,7 @@ #if defined(NAS_BUILT_IN_EPC) -static const UInt8_t emm_message_ids[] = { +static const uint8_t emm_message_ids[] = { ATTACH_REQUEST, ATTACH_ACCEPT, ATTACH_COMPLETE, @@ -69,7 +69,7 @@ static const UInt8_t emm_message_ids[] = { CS_SERVICE_NOTIFICATION, }; -static const UInt8_t esm_message_ids[] = { +static const uint8_t esm_message_ids[] = { ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST, ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT, ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT, @@ -94,7 +94,7 @@ static const UInt8_t esm_message_ids[] = { ESM_STATUS, }; -static int _nas_find_message_index(const UInt8_t message_id, const UInt8_t *message_ids, const int ids_number) +static int _nas_find_message_index(const uint8_t message_id, const uint8_t *message_ids, const int ids_number) { int i; @@ -201,7 +201,7 @@ int nas_itti_dl_data_req(const uint32_t ue_id, void *const data, MSC_NAS_MME, MSC_S1AP_MME, NULL,0, - "0 NAS_DOWNLINK_DATA_REQ ue id %06"PRIX32" len %u", ue_id, length); + "0 NAS_DOWNLINK_DATA_REQ ue id "NAS_UE_ID_FMT" len %u", ue_id, length); return itti_send_msg_to_task(TASK_S1AP, INSTANCE_DEFAULT, message_p); } diff --git a/openair-cn/NAS/MME/nas_proc.c b/openair-cn/NAS/MME/nas_proc.c index 4f53506dba6f1f3622dd5a280f621139a513e632..7fae146a894c23ec11e6a23b49c3e053df74f9ef 100644 --- a/openair-cn/NAS/MME/nas_proc.c +++ b/openair-cn/NAS/MME/nas_proc.c @@ -165,8 +165,8 @@ void nas_proc_cleanup(void) ** Others: None ** ** ** ***************************************************************************/ -int nas_proc_establish_ind(UInt32_t ueid, tac_t tac, - const Byte_t *data, UInt32_t len) +int nas_proc_establish_ind(uint32_t ueid, tac_t tac, + const Byte_t *data, uint32_t len) { LOG_FUNC_IN; @@ -179,7 +179,7 @@ int nas_proc_establish_ind(UInt32_t ueid, tac_t tac, MSC_NAS_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_ESTABLISH_REQ ue id %06"PRIX32" tac %u", ueid, tac); + "0 EMMAS_ESTABLISH_REQ ue id "NAS_UE_ID_FMT" tac %u", ueid, tac); /* * Notify the EMM procedure call manager that NAS signalling * connection establishment indication message has been received @@ -211,7 +211,7 @@ int nas_proc_establish_ind(UInt32_t ueid, tac_t tac, ** Others: None ** ** ** ***************************************************************************/ -int nas_proc_dl_transfer_cnf(UInt32_t ueid) +int nas_proc_dl_transfer_cnf(uint32_t ueid) { LOG_FUNC_IN; @@ -222,7 +222,7 @@ int nas_proc_dl_transfer_cnf(UInt32_t ueid) MSC_NAS_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_DATA_IND dl_transfer_conf ue id %06"PRIX32"", ueid); + "0 EMMAS_DATA_IND dl_transfer_conf ue id "NAS_UE_ID_FMT" ", ueid); /* * Notify the EMM procedure call manager that downlink NAS message @@ -254,7 +254,7 @@ int nas_proc_dl_transfer_cnf(UInt32_t ueid) ** Others: None ** ** ** ***************************************************************************/ -int nas_proc_dl_transfer_rej(UInt32_t ueid) +int nas_proc_dl_transfer_rej(uint32_t ueid) { LOG_FUNC_IN; @@ -265,7 +265,7 @@ int nas_proc_dl_transfer_rej(UInt32_t ueid) MSC_NAS_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_DATA_IND dl_transfer_reject ue id %06"PRIX32"", ueid); + "0 EMMAS_DATA_IND dl_transfer_reject ue id "NAS_UE_ID_FMT" ", ueid); /* * Notify the EMM procedure call manager that transmission @@ -298,7 +298,7 @@ int nas_proc_dl_transfer_rej(UInt32_t ueid) ** Others: None ** ** ** ***************************************************************************/ -int nas_proc_ul_transfer_ind(UInt32_t ueid, const Byte_t *data, UInt32_t len) +int nas_proc_ul_transfer_ind(uint32_t ueid, const Byte_t *data, uint32_t len) { int rc = RETURNerror; @@ -314,7 +314,7 @@ int nas_proc_ul_transfer_ind(UInt32_t ueid, const Byte_t *data, UInt32_t len) MSC_NAS_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMAS_DATA_IND ue id %06"PRIX32" len %u", ueid, len); + "0 EMMAS_DATA_IND ue id "NAS_UE_ID_FMT" len %u", ueid, len); emm_sap.primitive = EMMAS_DATA_IND; emm_sap.u.emm_as.u.data.ueid = ueid; @@ -370,7 +370,7 @@ int nas_proc_auth_param_fail(emm_cn_auth_fail_t *emm_cn_auth_fail) LOG_FUNC_RETURN (rc); } -int nas_proc_deregister_ue(UInt32_t ue_id) +int nas_proc_deregister_ue(uint32_t ue_id) { int rc = RETURNerror; emm_sap_t emm_sap; @@ -381,7 +381,7 @@ int nas_proc_deregister_ue(UInt32_t ue_id) MSC_NAS_MME, MSC_NAS_EMM_MME, NULL,0, - "0 EMMCN_DEREGISTER_UE ue_id %06"PRIX32"",ue_id); + "0 EMMCN_DEREGISTER_UE ue_id "NAS_UE_ID_FMT" ",ue_id); emm_sap.primitive = EMMCN_DEREGISTER_UE; emm_sap.u.emm_cn.u.deregister.UEid = ue_id; diff --git a/openair-cn/NAS/MME/nas_proc.h b/openair-cn/NAS/MME/nas_proc.h index 9e6f6aa0254a9f78248d8c3dee6a16678313b130..a00060ed9d61194290faabfbc0404b909c185938 100644 --- a/openair-cn/NAS/MME/nas_proc.h +++ b/openair-cn/NAS/MME/nas_proc.h @@ -93,12 +93,12 @@ void nas_proc_cleanup(void); -int nas_proc_establish_ind(UInt32_t ueid, tac_t tac, const Byte_t *data, - UInt32_t len); +int nas_proc_establish_ind(uint32_t ueid, tac_t tac, const Byte_t *data, + uint32_t len); -int nas_proc_dl_transfer_cnf(UInt32_t ueid); -int nas_proc_dl_transfer_rej(UInt32_t ueid); -int nas_proc_ul_transfer_ind(UInt32_t ueid, const Byte_t *data, UInt32_t len); +int nas_proc_dl_transfer_cnf(uint32_t ueid); +int nas_proc_dl_transfer_rej(uint32_t ueid); +int nas_proc_ul_transfer_ind(uint32_t ueid, const Byte_t *data, uint32_t len); /* * -------------------------------------------------------------------------- @@ -108,7 +108,7 @@ int nas_proc_ul_transfer_ind(UInt32_t ueid, const Byte_t *data, UInt32_t len); #if defined(NAS_BUILT_IN_EPC) int nas_proc_auth_param_res(emm_cn_auth_res_t *emm_cn_auth_res); int nas_proc_auth_param_fail(emm_cn_auth_fail_t *emm_cn_auth_fail); -int nas_proc_deregister_ue(UInt32_t ue_id); +int nas_proc_deregister_ue(uint32_t ue_id); int nas_proc_pdn_connectivity_res(nas_pdn_connectivity_rsp_t *nas_pdn_connectivity_rsp); int nas_proc_pdn_connectivity_fail(nas_pdn_connectivity_fail_t *nas_pdn_connectivity_fail); #endif diff --git a/openair-cn/NAS/TEST/AS_SIMULATOR/as_simulator.c b/openair-cn/NAS/TEST/AS_SIMULATOR/as_simulator.c index 39139e11dfbcc925a8ac6f3250802d59d7b775fd..20c49981bdcb557c749e6ce67850d0ec29e21174 100644 --- a/openair-cn/NAS/TEST/AS_SIMULATOR/as_simulator.c +++ b/openair-cn/NAS/TEST/AS_SIMULATOR/as_simulator.c @@ -57,12 +57,12 @@ Description Implements the Access-Stratum simulator operating between /* * Direction of the message to be transfered to the UE NAS process */ -static UInt8_t _as_simulator_ue_transfer = AS_SIMULATOR_NO_TRANSFER; +static uint8_t _as_simulator_ue_transfer = AS_SIMULATOR_NO_TRANSFER; /* * Direction of the message to be transfered to the MME NAS process */ -static UInt8_t _as_simulator_mme_transfer = AS_SIMULATOR_NO_TRANSFER; +static uint8_t _as_simulator_mme_transfer = AS_SIMULATOR_NO_TRANSFER; /* * Size of the message to be transfered to the UE NAS process diff --git a/openair-cn/NAS/TOOLS/usim_data.c b/openair-cn/NAS/TOOLS/usim_data.c index 5354ebac88c362159a0501122e19c4c63edf2e66..ea867fef3cc2e860fb863f867fbeca38a35bb953 100644 --- a/openair-cn/NAS/TOOLS/usim_data.c +++ b/openair-cn/NAS/TOOLS/usim_data.c @@ -515,9 +515,9 @@ static void _display_usim_data(const usim_data_t* data) memcpy(kasme, data->securityctx.Kasme.value, USIM_K_ASME_SIZE); printf("\tKasme\t: \"%s\"\n", kasme); printf("\tulNAScount\t: 0x%.8x\n", - *(UInt32_t*)data->securityctx.ulNAScount.value); + *(uint32_t*)data->securityctx.ulNAScount.value); printf("\tdlNAScount\t: 0x%.8x\n", - *(UInt32_t*)data->securityctx.dlNAScount.value); + *(uint32_t*)data->securityctx.dlNAScount.value); printf("\talgorithmID\t: 0x%.2x\n\n", data->securityctx.algorithmID.value[0]); diff --git a/openair-cn/NAS/UE/API/USER/user_indication.h b/openair-cn/NAS/UE/API/USER/user_indication.h index 799b02114867e5268a5bd01ff71e9f4dab7314d2..4cf762b609b7ca230d68076f64455898ca68a416 100644 --- a/openair-cn/NAS/UE/API/USER/user_indication.h +++ b/openair-cn/NAS/UE/API/USER/user_indication.h @@ -90,7 +90,7 @@ typedef struct { * has activated or desactivated a PDN connection */ typedef struct { - UInt8_t cid; /* PDN connection identifier */ + uint8_t cid; /* PDN connection identifier */ network_pdn_state_t status; /* PDN connection status */ } user_ind_pdn_t; diff --git a/openair-cn/NAS/UE/API/USIM/usim_api.c b/openair-cn/NAS/UE/API/USIM/usim_api.c index 944e7447298710321de2a76439a279cdccb08bac..e69e78ddec85d388933f3e4d442276508dda11d4 100644 --- a/openair-cn/NAS/UE/API/USIM/usim_api.c +++ b/openair-cn/NAS/UE/API/USIM/usim_api.c @@ -79,7 +79,7 @@ Description Implements the API used by the NAS layer to read/write #define USIM_API_K_SIZE 16 #define USIM_API_K_VALUE "8BAF473F2F8FD09487CCCBD7097C6862" -static UInt8_t _usim_api_k[USIM_API_K_SIZE]; +static uint8_t _usim_api_k[USIM_API_K_SIZE]; /* @@ -87,16 +87,16 @@ static UInt8_t _usim_api_k[USIM_API_K_SIZE]; */ static struct _usim_api_data_s { /* Highest sequence number the USIM has ever accepted */ - UInt32_t sqn_ms; + uint32_t sqn_ms; /* List of the last used sequence numbers */ #define USIM_API_SQN_LIST_SIZE 32 - UInt8_t n_sqns; - UInt32_t sqn[USIM_API_SQN_LIST_SIZE]; + uint8_t n_sqns; + uint32_t sqn[USIM_API_SQN_LIST_SIZE]; } _usim_api_data; -static UInt8_t _usim_api_hex_char_to_hex_value (char c); -static void _usim_api_hex_string_to_hex_value (UInt8_t *hex_value, const char *hex_string, int size); -static int _usim_api_check_sqn(UInt32_t seq, UInt8_t ind); +static uint8_t _usim_api_hex_char_to_hex_value (char c); +static void _usim_api_hex_string_to_hex_value (uint8_t *hex_value, const char *hex_string, int size); +static int _usim_api_check_sqn(uint32_t seq, uint8_t ind); /****************************************************************************/ /****************** E X P O R T E D F U N C T I O N S ******************/ @@ -274,7 +274,7 @@ int usim_api_authenticate(const OctetString* rand_pP, const OctetString* autn_pP } /* Verify that the received sequence number SQN is in the correct range */ - rc = _usim_api_check_sqn(*(UInt32_t*)(sqn), sqn[USIM_API_SQN_SIZE - 1]); + rc = _usim_api_check_sqn(*(uint32_t*)(sqn), sqn[USIM_API_SQN_SIZE - 1]); if (rc != RETURNok) { /* Synchronisation failure; compute the AUTS parameter */ @@ -291,7 +291,7 @@ int usim_api_authenticate(const OctetString* rand_pP, const OctetString* autn_pP for (i = 0; i < USIM_API_SQN_MS_SIZE; i++) { #warning "LG:BUG HERE TODO" sqn_ms[USIM_API_SQNMS_SIZE - i] = - ((UInt8_t*)(_usim_api_data.sqn_ms))[USIM_API_SQN_MS_SIZE - i]; + ((uint8_t*)(_usim_api_data.sqn_ms))[USIM_API_SQN_MS_SIZE - i]; } u8 sqnms[USIM_API_SQNMS_SIZE]; @@ -340,7 +340,7 @@ int usim_api_authenticate(const OctetString* rand_pP, const OctetString* autn_pP ** Others: None ** ** ** ***************************************************************************/ -static UInt8_t _usim_api_hex_char_to_hex_value (char c) +static uint8_t _usim_api_hex_char_to_hex_value (char c) { if (c >= 'A') { /* Remove case bit */ @@ -368,7 +368,7 @@ static UInt8_t _usim_api_hex_char_to_hex_value (char c) ** Others: None ** ** ** ***************************************************************************/ -static void _usim_api_hex_string_to_hex_value (UInt8_t *hex_value, const char *hex_string, int size) +static void _usim_api_hex_string_to_hex_value (uint8_t *hex_value, const char *hex_string, int size) { int i; @@ -396,7 +396,7 @@ static void _usim_api_hex_string_to_hex_value (UInt8_t *hex_value, const char *h ** Others: None ** ** ** ***************************************************************************/ -static int _usim_api_check_sqn(UInt32_t seq, UInt8_t ind) +static int _usim_api_check_sqn(uint32_t seq, uint8_t ind) { /* TODO */ return (RETURNok); diff --git a/openair-cn/NAS/UE/API/USIM/usim_api.h b/openair-cn/NAS/UE/API/USIM/usim_api.h index e2c09c41a6b16a4e0c4fdc11acf428f28f0bf70f..7b5a767d9858aa1a35ae0b78ec106f3be3461c93 100644 --- a/openair-cn/NAS/UE/API/USIM/usim_api.h +++ b/openair-cn/NAS/UE/API/USIM/usim_api.h @@ -63,7 +63,7 @@ Description Implements the API used by the NAS layer to read/write * USIM TLV parameter structure * ---------------------------- */ -#define USIM_TLV_T(SIZE) struct {UInt8_t type; UInt8_t length; Byte_t value[SIZE];} +#define USIM_TLV_T(SIZE) struct {uint8_t type; uint8_t length; Byte_t value[SIZE];} /* * Non Access Stratum Configuration @@ -123,7 +123,7 @@ typedef struct { typedef struct { /* Length of all subsequent data */ #define USIM_EPS_NAS_SECURITY_CONTEXT_TAG 0xA0U - UInt8_t length; + uint8_t length; /* Key set identifier KSI_ASME */ #define USIM_KSI_ASME_TAG 0x80U USIM_TLV_T(1) KSIasme; @@ -197,7 +197,7 @@ typedef struct { tac_t start; tac_t end; /* PLMN Network Name Record Identifier */ - UInt8_t record_id; + uint8_t record_id; } usim_opl_t; /* @@ -212,7 +212,7 @@ typedef struct { #define USIM_ACT_CDMA_1xRTT 0x1000 #define USIM_ACT_UTRAN 0x0080 #define USIM_ACT_EUTRAN 0x0040 - UInt16_t AcT; + uint16_t AcT; } usim_plmn_act_t; /* @@ -220,7 +220,7 @@ typedef struct { * ------------------------------ */ typedef struct { - UInt32_t tmsi; /* Temporary Mobile Subscriber Identity */ + uint32_t tmsi; /* Temporary Mobile Subscriber Identity */ lai_t lai; /* Location Area Identity */ Byte_t reserved; /* Reserved for future use */ #define USIM_LOCI_UPDATED 0x00 @@ -235,7 +235,7 @@ typedef struct { * ---------------------------------------------- */ typedef struct { - UInt32_t p_tmsi; /* Packet Temporary Mobile Subscriber Identity */ + uint32_t p_tmsi; /* Packet Temporary Mobile Subscriber Identity */ Byte_t signature[3]; /* P-TMSI signature value */ RAI_t rai; /* Routing Area Identity */ #define USIM_PSLOCI_UPDATED 0x00 @@ -280,7 +280,7 @@ typedef struct { #define USIM_MAINTENANCE_MODE 0x02U #define USIM_CELL_TEST_MODE 0x04U Byte_t UE_Operation_Mode; /* Mode of operation for the UE */ - UInt16_t Additional_Info; /* Additional information depending on + uint16_t Additional_Info; /* Additional information depending on * the UE operation mode */ Byte_t MNC_Length; /* Number of digits used for extracting * the MNC from the IMSI */ diff --git a/openair-cn/NAS/UE/EMM/Authentication.c b/openair-cn/NAS/UE/EMM/Authentication.c index ce319c4d3c75a1938667d6aac714556f7eb918b8..e0acb302aca8ae6ec963fba47102b6409736787b 100755 --- a/openair-cn/NAS/UE/EMM/Authentication.c +++ b/openair-cn/NAS/UE/EMM/Authentication.c @@ -945,16 +945,16 @@ static int _authentication_kasme(const OctetString *autn, kasme->length); /* Compute the derivation key KEY = CK || IK */ - UInt8_t key[ck->length + ik->length]; + uint8_t key[ck->length + ik->length]; memcpy(key, ck->value, ck->length); memcpy(key + ck->length, ik->value, ik->length); /* Compute the KDF input_s parameter * S = FC(0x10) || SNid(MCC, MNC) || 0x00 0x03 || SQN ⊕ AK || 0x00 0x06 */ - UInt8_t input_s[16]; // less than 16 - UInt8_t sn_id[AUTH_SNID_SIZE]; // less than 16 - UInt16_t length; + uint8_t input_s[16]; // less than 16 + uint8_t sn_id[AUTH_SNID_SIZE]; // less than 16 + uint16_t length; int offset = 0; int size_of_length = sizeof(length); diff --git a/openair-cn/NAS/UE/EMM/LowerLayer.c b/openair-cn/NAS/UE/EMM/LowerLayer.c index f60f0cf9aeb61677ecdf779568953452f2e72390..10f7c4ccc964da452dace0c746392ff4d19f906b 100755 --- a/openair-cn/NAS/UE/EMM/LowerLayer.c +++ b/openair-cn/NAS/UE/EMM/LowerLayer.c @@ -453,7 +453,7 @@ void emm_as_set_security_data(emm_as_security_data_t *data, const void *args, is_new, context->eksi, context->ul_count.seq_num, - *(UInt32_t *)(&context->ul_count)); + *(uint32_t *)(&context->ul_count)); LOG_TRACE(INFO, "knas_int %s",dump_octet_string(&context->knas_int)); LOG_TRACE(INFO, @@ -464,7 +464,7 @@ void emm_as_set_security_data(emm_as_security_data_t *data, const void *args, data->is_new = is_new; data->ksi = context->eksi; data->sqn = context->ul_count.seq_num; - // LG data->count = *(UInt32_t *)(&context->ul_count); + // LG data->count = *(uint32_t *)(&context->ul_count); data->count = 0x00000000 | (context->ul_count.overflow << 8 ) | context->ul_count.seq_num; /* NAS integrity and cyphering keys may not be available if the * current security context is a partial EPS security context diff --git a/openair-cn/NAS/UE/EMM/SAP/emm_as.c b/openair-cn/NAS/UE/EMM/SAP/emm_as.c index bf98dc4483716ee710eb5df9427ed70b2a88f3ab..433b4e5304787201ed65732d4d9a85d7509a4a33 100755 --- a/openair-cn/NAS/UE/EMM/SAP/emm_as.c +++ b/openair-cn/NAS/UE/EMM/SAP/emm_as.c @@ -203,7 +203,7 @@ int emm_as_send(const emm_as_t *msg) int emm_cause = EMM_CAUSE_SUCCESS; emm_as_primitive_t primitive = msg->primitive; - UInt32_t ueid = 0; + uint32_t ueid = 0; LOG_TRACE(INFO, "EMMAS-SAP - Received primitive %s (%d)", _emm_as_primitive_str[primitive - _EMMAS_START - 1], primitive); diff --git a/openair-cn/NAS/UE/EMM/SAP/emm_asDef.h b/openair-cn/NAS/UE/EMM/SAP/emm_asDef.h index e2e0a773f8af9a275e45a4a972c6d51ec894fe34..fbd2a6b38e714d7ca02cb7e741297ecfa9deb852 100755 --- a/openair-cn/NAS/UE/EMM/SAP/emm_asDef.h +++ b/openair-cn/NAS/UE/EMM/SAP/emm_asDef.h @@ -81,11 +81,11 @@ typedef enum emm_as_primitive_u { /* Data used to setup EPS NAS security */ typedef struct emm_as_security_data_s { - UInt8_t is_new; /* New security data indicator */ + uint8_t is_new; /* New security data indicator */ #define EMM_AS_NO_KEY_AVAILABLE 0xff - UInt8_t ksi; /* NAS key set identifier */ - UInt8_t sqn; /* Sequence number */ - UInt32_t count; /* NAS counter */ + uint8_t ksi; /* NAS key set identifier */ + uint8_t sqn; /* Sequence number */ + uint32_t count; /* NAS counter */ const OctetString *k_enc; /* NAS cyphering key */ const OctetString *k_int; /* NAS integrity key */ } emm_as_security_data_t; @@ -99,21 +99,21 @@ typedef struct emm_as_security_data_s { * ---------------------------- */ typedef struct emm_as_security_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int emm_cause; /* EMM failure cause code */ /* * Identity request/response */ - UInt8_t identType; /* Type of requested UE's identity */ + uint8_t identType; /* Type of requested UE's identity */ const imsi_t *imsi; /* The requested IMSI of the UE */ const imei_t *imei; /* The requested IMEI of the UE */ - UInt32_t tmsi; /* The requested TMSI of the UE */ + uint32_t tmsi; /* The requested TMSI of the UE */ /* * Authentication request/response */ - UInt8_t ksi; /* NAS key set identifier */ + uint8_t ksi; /* NAS key set identifier */ const OctetString *rand; /* Random challenge number */ const OctetString *autn; /* Authentication token */ const OctetString *res; /* Authentication response */ @@ -121,23 +121,23 @@ typedef struct emm_as_security_s { /* * Security Mode Command */ - UInt8_t eea; /* Replayed EPS encryption algorithms */ - UInt8_t eia; /* Replayed EPS integrity algorithms */ - UInt8_t uea; /* Replayed UMTS encryption algorithms */ + uint8_t eea; /* Replayed EPS encryption algorithms */ + uint8_t eia; /* Replayed EPS integrity algorithms */ + uint8_t uea; /* Replayed UMTS encryption algorithms */ uint8_t ucs2; - UInt8_t uia; /* Replayed UMTS integrity algorithms */ - UInt8_t gea; /* Replayed GPRS encryption algorithms */ - UInt8_t umts_present; - UInt8_t gprs_present; + uint8_t uia; /* Replayed UMTS integrity algorithms */ + uint8_t gea; /* Replayed GPRS encryption algorithms */ + uint8_t umts_present; + uint8_t gprs_present; // Added by LG - UInt8_t selected_eea; /* Selected EPS encryption algorithms */ - UInt8_t selected_eia; /* Selected EPS integrity algorithms */ + uint8_t selected_eea; /* Selected EPS encryption algorithms */ + uint8_t selected_eia; /* Selected EPS integrity algorithms */ #define EMM_AS_MSG_TYPE_IDENT 0x01 /* Identification message */ #define EMM_AS_MSG_TYPE_AUTH 0x02 /* Authentication message */ #define EMM_AS_MSG_TYPE_SMC 0x03 /* Security Mode Command */ - UInt8_t msgType; /* Type of NAS security message to transfer */ + uint8_t msgType; /* Type of NAS security message to transfer */ } emm_as_security_t; /* @@ -153,17 +153,17 @@ typedef struct emm_as_EPS_identity_s { } emm_as_EPS_identity_t; typedef struct emm_as_establish_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ emm_as_EPS_identity_t UEid; /* UE's EPS mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int switch_off; /* TRUE if the UE is switched off */ - UInt8_t type; /* Network attach/detach type */ - UInt8_t RRCcause; /* Connection establishment cause */ - UInt8_t RRCtype; /* Associated call type */ + uint8_t type; /* Network attach/detach type */ + uint8_t RRCcause; /* Connection establishment cause */ + uint8_t RRCtype; /* Associated call type */ const plmn_t *plmnID; /* Identifier of the selected PLMN */ - UInt8_t ksi; /* NAS key set identifier */ - UInt8_t encryption:4; /* Ciphering algorithm */ - UInt8_t integrity:4; /* Integrity protection algorithm */ + uint8_t ksi; /* NAS key set identifier */ + uint8_t encryption:4; /* Ciphering algorithm */ + uint8_t integrity:4; /* Integrity protection algorithm */ int emm_cause; /* EMM failure cause code */ const GUTI_t *new_guti; /* New GUTI, if re-allocated */ int n_tacs; /* Number of concecutive tracking areas @@ -175,7 +175,7 @@ typedef struct emm_as_establish_s { #define EMM_AS_NAS_INFO_TAU 0x03 /* Tracking Area Update request */ #define EMM_AS_NAS_INFO_SR 0x04 /* Service Request */ #define EMM_AS_NAS_INFO_EXTSR 0x05 /* Extended Service Request */ - UInt8_t NASinfo; /* Type of initial NAS information to transfer */ + uint8_t NASinfo; /* Type of initial NAS information to transfer */ OctetString NASmsg; /* NAS message to be transfered within * initial NAS information message */ } emm_as_establish_t; @@ -185,11 +185,11 @@ typedef struct emm_as_establish_s { * -------------------------------------- */ typedef struct emm_as_release_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ #define EMM_AS_CAUSE_AUTHENTICATION 0x01 /* Authentication failure */ #define EMM_AS_CAUSE_DETACH 0x02 /* Detach requested */ - UInt8_t cause; /* Release cause */ + uint8_t cause; /* Release cause */ } emm_as_release_t; /* @@ -197,15 +197,15 @@ typedef struct emm_as_release_s { * --------------------------------- */ typedef struct emm_as_data_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int switch_off; /* TRUE if the UE is switched off */ - UInt8_t type; /* Network detach type */ - UInt8_t delivered; /* Data message delivery indicator */ + uint8_t type; /* Network detach type */ + uint8_t delivered; /* Data message delivery indicator */ #define EMM_AS_NAS_DATA_ATTACH 0x01 /* Attach complete */ #define EMM_AS_NAS_DATA_DETACH 0x02 /* Detach request */ - UInt8_t NASinfo; /* Type of NAS information to transfer */ + uint8_t NASinfo; /* Type of NAS information to transfer */ OctetString NASmsg; /* NAS message to be transfered */ } emm_as_data_t; @@ -220,7 +220,7 @@ typedef struct emm_as_page_s {} emm_as_page_t; * ------------------------------------- */ typedef struct emm_as_status_s { - UInt32_t ueid; /* UE lower layer identifier */ + uint32_t ueid; /* UE lower layer identifier */ const GUTI_t *guti; /* GUTI temporary mobile identity */ emm_as_security_data_t sctx;/* EPS NAS security context */ int emm_cause; /* EMM failure cause code */ @@ -231,7 +231,7 @@ typedef struct emm_as_status_s { * ------------------------------------ */ typedef struct emm_as_cell_info_s { - UInt8_t found; /* Indicates whether a suitable cell is found */ + uint8_t found; /* Indicates whether a suitable cell is found */ #define EMM_AS_PLMN_LIST_SIZE 6 PLMN_LIST_T(EMM_AS_PLMN_LIST_SIZE) plmnIDs; /* List of identifiers of available PLMNs */ diff --git a/openair-cn/NAS/UE/EMM/SecurityModeControl.c b/openair-cn/NAS/UE/EMM/SecurityModeControl.c index da1990923ce472d5f96ff4a2d011cfcba21f015c..359ce1ea2f818fb58ac06f0624f40741a153cc25 100755 --- a/openair-cn/NAS/UE/EMM/SecurityModeControl.c +++ b/openair-cn/NAS/UE/EMM/SecurityModeControl.c @@ -86,14 +86,14 @@ Description Defines the security mode control EMM procedure executed by the * -------------------------------------------------------------------------- */ static int _security_kdf(const OctetString *kasme, OctetString *key, - UInt8_t algo_dist, UInt8_t algo_id); + uint8_t algo_dist, uint8_t algo_id); static int _security_knas_enc(const OctetString *kasme, OctetString *knas_enc, - UInt8_t eia); + uint8_t eia); static int _security_knas_int(const OctetString *kasme, OctetString *knas_int, - UInt8_t eea); + uint8_t eea); static int _security_kenb(const OctetString *kasme, OctetString *kenb, - UInt32_t count); + uint32_t count); /* * Internal data used for security mode control procedure @@ -166,8 +166,8 @@ int emm_proc_security_mode_command(int native_ksi, int ksi, /* * Check the replayed UE security capabilities */ - UInt8_t eea = (0x80 >> _emm_data.security->capability.eps_encryption); - UInt8_t eia = (0x80 >> _emm_data.security->capability.eps_integrity); + uint8_t eea = (0x80 >> _emm_data.security->capability.eps_encryption); + uint8_t eia = (0x80 >> _emm_data.security->capability.eps_integrity); if ( (reea != eea) || (reia != eia) ) { LOG_TRACE(WARNING, "EMM-PROC - Replayed UE security capabilities " @@ -240,7 +240,7 @@ int emm_proc_security_mode_command(int native_ksi, int ksi, // LG COMMENT rc = _security_kenb(&_emm_data.security->kasme, rc = _security_kenb(&_emm_data.non_current->kasme, &_security_data.kenb, - *(UInt32_t *)(&_emm_data.non_current->ul_count)); + *(uint32_t *)(&_emm_data.non_current->ul_count)); } } @@ -416,7 +416,7 @@ static void _security_release(emm_security_context_t *ctx) ** ** ***************************************************************************/ static int _security_knas_enc(const OctetString *kasme, OctetString *knas_enc, - UInt8_t eea) + uint8_t eea) { LOG_FUNC_IN; LOG_TRACE(INFO, "%s with algo dist %d algo id %d", __FUNCTION__,0x01, eea); @@ -442,7 +442,7 @@ static int _security_knas_enc(const OctetString *kasme, OctetString *knas_enc, ** ** ***************************************************************************/ static int _security_knas_int(const OctetString *kasme, OctetString *knas_int, - UInt8_t eia) + uint8_t eia) { LOG_FUNC_IN; LOG_TRACE(INFO, "%s with algo dist %d algo id %d", __FUNCTION__,0x02, eia); @@ -468,13 +468,13 @@ static int _security_knas_int(const OctetString *kasme, OctetString *knas_int, ** ** ***************************************************************************/ static int _security_kenb(const OctetString *kasme, OctetString *kenb, - UInt32_t count) + uint32_t count) { /* Compute the KDF input parameter * S = FC(0x11) || UL NAS Count || 0x00 0x04 */ - UInt8_t input[32]; - // UInt16_t length = 4; + uint8_t input[32]; + // uint16_t length = 4; // int offset = 0; LOG_TRACE(INFO, "%s with count= %d", __FUNCTION__, count); @@ -482,9 +482,9 @@ static int _security_kenb(const OctetString *kasme, OctetString *kenb, input[0] = 0x11; // P0 input[1] = count >> 24; - input[2] = (UInt8_t)(count >> 16); - input[3] = (UInt8_t)(count >> 8); - input[4] = (UInt8_t)count; + input[2] = (uint8_t)(count >> 16); + input[3] = (uint8_t)(count >> 8); + input[4] = (uint8_t)count; // L0 input[5] = 0; input[6] = 4; @@ -515,14 +515,14 @@ static int _security_kenb(const OctetString *kasme, OctetString *kenb, ** ** ***************************************************************************/ static int _security_kdf(const OctetString *kasme, OctetString *key, - UInt8_t algo_dist, UInt8_t algo_id) + uint8_t algo_dist, uint8_t algo_id) { /* Compute the KDF input parameter * S = FC(0x15) || Algorithm distinguisher || 0x00 0x01 || Algorithm identity || 0x00 0x01 */ - UInt8_t input[32]; - UInt8_t output[32]; + uint8_t input[32]; + uint8_t output[32]; LOG_TRACE(DEBUG, "%s:%u output key mem %p lenth %u", __FUNCTION__, __LINE__, key->value, diff --git a/openair-cn/NAS/UE/EMM/emmData.h b/openair-cn/NAS/UE/EMM/emmData.h index 94795bffe66d3d4ef17f2178423cee6df5798e26..7a81600871a4b8fcb51da7cb74a736363d12f9a6 100755 --- a/openair-cn/NAS/UE/EMM/emmData.h +++ b/openair-cn/NAS/UE/EMM/emmData.h @@ -122,22 +122,22 @@ typedef struct emm_security_context_s { OctetString knas_enc; /* NAS cyphering key */ OctetString knas_int; /* NAS integrity key */ struct count_s{ - UInt32_t spare:8; - UInt32_t overflow:16; - UInt32_t seq_num:8; + uint32_t spare:8; + uint32_t overflow:16; + uint32_t seq_num:8; } dl_count, ul_count; /* Downlink and uplink count parameters */ struct { - UInt8_t eps_encryption; /* algorithm used for ciphering */ - UInt8_t eps_integrity; /* algorithm used for integrity protection */ - UInt8_t umts_encryption; /* algorithm used for ciphering */ - UInt8_t umts_integrity; /* algorithm used for integrity protection */ - UInt8_t gprs_encryption; /* algorithm used for ciphering */ - UInt8_t umts_present:1; - UInt8_t gprs_present:1; + uint8_t eps_encryption; /* algorithm used for ciphering */ + uint8_t eps_integrity; /* algorithm used for integrity protection */ + uint8_t umts_encryption; /* algorithm used for ciphering */ + uint8_t umts_integrity; /* algorithm used for integrity protection */ + uint8_t gprs_encryption; /* algorithm used for ciphering */ + uint8_t umts_present:1; + uint8_t gprs_present:1; } capability; /* UE network capability */ struct { - UInt8_t encryption:4; /* algorithm used for ciphering */ - UInt8_t integrity:4; /* algorithm used for integrity protection */ + uint8_t encryption:4; /* algorithm used for ciphering */ + uint8_t integrity:4; /* algorithm used for integrity protection */ } selected_algorithms; /* MME selected algorithms */ } emm_security_context_t; @@ -275,14 +275,14 @@ typedef struct emm_data_s { /* List of user controlled PLMNs */ #define EMM_DATA_PLMN_MAX 4 PLMN_LIST_T(EMM_DATA_PLMN_MAX) plmn; - UInt16_t userAcT[EMM_DATA_PLMN_MAX]; + uint16_t userAcT[EMM_DATA_PLMN_MAX]; /* List of operator controlled PLMNs */ #define EMM_DATA_OPLMN_MAX 4 PLMN_LIST_T(EMM_DATA_OPLMN_MAX) oplmn; - UInt16_t operAcT[EMM_DATA_OPLMN_MAX]; + uint16_t operAcT[EMM_DATA_OPLMN_MAX]; /* List of operator network name records */ #define EMM_DATA_OPNN_MAX 16 - UInt8_t n_opnns; + uint8_t n_opnns; struct { const plmn_t *plmn; const char *fullname; diff --git a/openair-cn/NAS/UE/EMM/emm_main.c b/openair-cn/NAS/UE/EMM/emm_main.c index b147da86bf217101cb093f84d2854d468cf14139..51b6b693fbd892eef48705ec5e21cee450920606 100755 --- a/openair-cn/NAS/UE/EMM/emm_main.c +++ b/openair-cn/NAS/UE/EMM/emm_main.c @@ -287,14 +287,14 @@ void emm_main_initialize(emm_indication_callback_t cb, const char *imei) } /* Downlink count parameter */ - if (_usim_data.securityctx.dlNAScount.length <= sizeof(UInt32_t)) { + if (_usim_data.securityctx.dlNAScount.length <= sizeof(uint32_t)) { memcpy(&_emm_data.security->dl_count, _usim_data.securityctx.dlNAScount.value, _usim_data.securityctx.dlNAScount.length); } /* Uplink count parameter */ - if (_usim_data.securityctx.ulNAScount.length <= sizeof(UInt32_t)) { + if (_usim_data.securityctx.ulNAScount.length <= sizeof(uint32_t)) { memcpy(&_emm_data.security->ul_count, _usim_data.securityctx.ulNAScount.value, _usim_data.securityctx.ulNAScount.length); diff --git a/openair-cn/NAS/UE/nas_itti_messaging.c b/openair-cn/NAS/UE/nas_itti_messaging.c index 0d7ed4d3afd231daccc23df93e6ee1697cf97844..d832585ebdf5c7b8583f321f47f2182c95438363 100755 --- a/openair-cn/NAS/UE/nas_itti_messaging.c +++ b/openair-cn/NAS/UE/nas_itti_messaging.c @@ -35,7 +35,7 @@ # define TASK_ORIGIN TASK_NAS_UE #if (defined(ENABLE_NAS_UE_LOGGING) && defined(NAS_BUILT_IN_UE) ) -static const UInt8_t emm_message_ids[] = { +static const uint8_t emm_message_ids[] = { ATTACH_REQUEST, ATTACH_ACCEPT, ATTACH_COMPLETE, @@ -67,7 +67,7 @@ static const UInt8_t emm_message_ids[] = { CS_SERVICE_NOTIFICATION, }; -static const UInt8_t esm_message_ids[] = { +static const uint8_t esm_message_ids[] = { ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST, ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT, ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT, @@ -92,7 +92,7 @@ static const UInt8_t esm_message_ids[] = { ESM_STATUS, }; -static int _nas_find_message_index(const UInt8_t message_id, const UInt8_t *message_ids, const int ids_number) +static int _nas_find_message_index(const uint8_t message_id, const uint8_t *message_ids, const int ids_number) { int i; @@ -207,7 +207,7 @@ int nas_itti_cell_info_req(const plmn_t plmnID, const Byte_t rat) return itti_send_msg_to_task(TASK_RRC_UE, NB_eNB_INST + 0 /* TODO to be virtualized */, message_p); } -int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data, UInt32_t length) +int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data, uint32_t length) { MessageDef *message_p; diff --git a/openair-cn/NAS/UE/nas_itti_messaging.h b/openair-cn/NAS/UE/nas_itti_messaging.h index 316d7e6fd424d87005c15215f8a133213fa83449..4165119570ca4bd2046e4bc12946d924033a5614 100755 --- a/openair-cn/NAS/UE/nas_itti_messaging.h +++ b/openair-cn/NAS/UE/nas_itti_messaging.h @@ -56,7 +56,7 @@ int nas_itti_protected_msg( # if defined(NAS_BUILT_IN_UE) int nas_itti_cell_info_req(const plmn_t plmnID, const Byte_t rat); -int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data_pP, UInt32_t lengthP); +int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data_pP, uint32_t lengthP); int nas_itti_ul_data_req(const uint32_t ue_idP, void *const data_pP, const uint32_t lengthP); diff --git a/openair-cn/NAS/UE/nas_proc.c b/openair-cn/NAS/UE/nas_proc.c index 3ac27f613253aae85afe528efc08191230efa53c..f6327fd627f94355a18a7aeec9fc4a0b3ce289c4 100755 --- a/openair-cn/NAS/UE/nas_proc.c +++ b/openair-cn/NAS/UE/nas_proc.c @@ -1029,7 +1029,7 @@ int nas_proc_activate_pdn(int cid) ** ** ***************************************************************************/ int nas_proc_cell_info(int found, tac_t tac, ci_t ci, AcT_t AcT, - UInt8_t rsrq, UInt8_t rsrp) + uint8_t rsrq, uint8_t rsrp) { LOG_FUNC_IN; @@ -1073,7 +1073,7 @@ int nas_proc_cell_info(int found, tac_t tac, ci_t ci, AcT_t AcT, ** Others: None ** ** ** ***************************************************************************/ -int nas_proc_establish_cnf(const Byte_t *data, UInt32_t len) +int nas_proc_establish_cnf(const Byte_t *data, uint32_t len) { LOG_FUNC_IN; @@ -1251,7 +1251,7 @@ int nas_proc_ul_transfer_rej(void) ** Others: None ** ** ** ***************************************************************************/ -int nas_proc_dl_transfer_ind(const Byte_t *data, UInt32_t len) +int nas_proc_dl_transfer_ind(const Byte_t *data, uint32_t len) { LOG_FUNC_IN; diff --git a/openair-cn/NAS/UE/nas_proc.h b/openair-cn/NAS/UE/nas_proc.h index 8cd7ad1c9f99e5912a658cd687522cfda9ce143e..8d4897eddbd9228529f802849a2a45d8d05fc1fb 100755 --- a/openair-cn/NAS/UE/nas_proc.h +++ b/openair-cn/NAS/UE/nas_proc.h @@ -115,17 +115,17 @@ int nas_proc_activate_pdn(int cid); * -------------------------------------------------------------------------- */ -int nas_proc_cell_info(int found, tac_t tac, ci_t ci, AcT_t rat, UInt8_t rsrp, - UInt8_t rsrq); +int nas_proc_cell_info(int found, tac_t tac, ci_t ci, AcT_t rat, uint8_t rsrp, + uint8_t rsrq); -int nas_proc_establish_cnf(const Byte_t *data, UInt32_t len); +int nas_proc_establish_cnf(const Byte_t *data, uint32_t len); int nas_proc_establish_rej(void); int nas_proc_release_ind(int cause); int nas_proc_ul_transfer_cnf(void); int nas_proc_ul_transfer_rej(void); -int nas_proc_dl_transfer_ind(const Byte_t *data, UInt32_t len); +int nas_proc_dl_transfer_ind(const Byte_t *data, uint32_t len); diff --git a/openair2/COMMON/commonDef.h b/openair2/COMMON/commonDef.h index 8f719e377b6b20f24eb0fbf534a4ec5f9c7c655e..47fef519b598a7d21168b532c7154cf4e052f084 100644 --- a/openair2/COMMON/commonDef.h +++ b/openair2/COMMON/commonDef.h @@ -49,6 +49,9 @@ Description Contains global common definitions #include <stdint.h> #include <stddef.h> + +#define NAS_UE_ID_FMT "0x%06x" + /****************************************************************************/ /********************* G L O B A L C O N S T A N T S *******************/ /****************************************************************************/ @@ -80,17 +83,8 @@ Description Contains global common definitions ----------------------------------------------------------------------------- */ typedef int8_t SByte_t; /* 8 bit signed integer */ -typedef int8_t Int8_t; /* 8 bit signed integer */ -typedef int16_t Int16_t; /* 16 bit signed integer */ -typedef int32_t Int32_t; /* 32 bit signed integer */ -typedef int64_t Int64_t; /* 64 bit signed integer */ - - typedef uint8_t Byte_t; /* 8 bit unsigned integer */ -typedef uint8_t UInt8_t; /* 8 bit unsigned integer */ -typedef uint16_t UInt16_t; /* 16 bit unsigned integer */ -typedef uint32_t UInt32_t; /* 32 bit unsigned integer */ -typedef uint64_t UInt64_t; /* 64 bit unsigned integer */ + /* ----------------------------------------------------------------------------- @@ -98,12 +92,12 @@ typedef uint64_t UInt64_t; /* 64 bit unsigned integer */ ----------------------------------------------------------------------------- */ -typedef UInt8_t Stat_t; /* Registration status */ -typedef UInt16_t lac_t; /* Location Area Code */ -typedef UInt8_t rac_t; /* Routing Area Code */ -typedef UInt16_t tac_t; /* Tracking Area Code */ -typedef UInt32_t ci_t; /* Cell Identifier */ -typedef UInt8_t AcT_t; /* Access Technology */ +typedef uint8_t Stat_t; /* Registration status */ +typedef uint16_t lac_t; /* Location Area Code */ +typedef uint8_t rac_t; /* Routing Area Code */ +typedef uint16_t tac_t; /* Tracking Area Code */ +typedef uint32_t ci_t; /* Cell Identifier */ +typedef uint8_t AcT_t; /* Access Technology */ /* * International Mobile Subscriber Identity @@ -244,8 +238,8 @@ typedef struct { */ typedef struct { plmn_t plmn; /* <MCC> + <MNC> */ - UInt16_t MMEgid; /* MME group identifier */ - UInt8_t MMEcode; /* MME code */ + uint16_t MMEgid; /* MME group identifier */ + uint8_t MMEcode; /* MME code */ } gummei_t; /* @@ -253,7 +247,7 @@ typedef struct { */ typedef struct { gummei_t gummei; /* Globally Unique MME Identity */ - UInt32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */ + uint32_t m_tmsi; /* M-Temporary Mobile Subscriber Identity */ } GUTI_t; #define GUTI2STR(GuTi_PtR, GuTi_StR, MaXlEn) \ {\ diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf index 4878c7f868d4597c39798d7eec484b7a0bde1b24..8d975cf087fee3eaaa2a0d9c8c3607a9a816b4b9 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf @@ -19,7 +19,7 @@ eNBs = mobile_country_code = "208"; - mobile_network_code = "93"; + mobile_network_code = "95"; ////////// Physical parameters: