mirror of https://github.com/PentHertz/srsLTE.git
liblte_mme: fix dedicated bearer handling, add handling for UE testmode
This commit is contained in:
parent
7de9f39fcc
commit
f000e36f21
|
@ -2525,6 +2525,10 @@ const char* liblte_nas_sec_hdr_type_to_string(int code);
|
||||||
#define LIBLTE_MME_MSG_TYPE_CS_SERVICE_NOTIFICATION 0x64
|
#define LIBLTE_MME_MSG_TYPE_CS_SERVICE_NOTIFICATION 0x64
|
||||||
#define LIBLTE_MME_MSG_TYPE_DOWNLINK_GENERIC_NAS_TRANSPORT 0x68
|
#define LIBLTE_MME_MSG_TYPE_DOWNLINK_GENERIC_NAS_TRANSPORT 0x68
|
||||||
#define LIBLTE_MME_MSG_TYPE_UPLINK_GENERIC_NAS_TRANSPORT 0x69
|
#define LIBLTE_MME_MSG_TYPE_UPLINK_GENERIC_NAS_TRANSPORT 0x69
|
||||||
|
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_TEST_MODE 0x84
|
||||||
|
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_TEST_MODE_COMPLETE 0x85
|
||||||
|
#define LIBLTE_MME_MSG_TYPE_DEACTIVATE TEST MODE 0x86
|
||||||
|
#define LIBLTE_MME_MSG_TYPE_DEACTIVATE_TEST_MODE_COMPLETE 0x87
|
||||||
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST 0xC1
|
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST 0xC1
|
||||||
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT 0xC2
|
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT 0xC2
|
||||||
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT 0xC3
|
#define LIBLTE_MME_MSG_TYPE_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REJECT 0xC3
|
||||||
|
@ -2548,6 +2552,9 @@ const char* liblte_nas_sec_hdr_type_to_string(int code);
|
||||||
#define LIBLTE_MME_MSG_TYPE_ESM_INFORMATION_RESPONSE 0xDA
|
#define LIBLTE_MME_MSG_TYPE_ESM_INFORMATION_RESPONSE 0xDA
|
||||||
#define LIBLTE_MME_MSG_TYPE_NOTIFICATION 0xDB
|
#define LIBLTE_MME_MSG_TYPE_NOTIFICATION 0xDB
|
||||||
#define LIBLTE_MME_MSG_TYPE_ESM_STATUS 0xE8
|
#define LIBLTE_MME_MSG_TYPE_ESM_STATUS 0xE8
|
||||||
|
#define LIBLTE_MME_MSG_TYPE_TEST_MODE_PROTOCOL_DISCRIMINATOR 0xF
|
||||||
|
#define LIBLTE_MME_MSG_TYPE_TEST_MODE_SKIP_INDICATOR 0x0
|
||||||
|
|
||||||
const char* liblte_nas_msg_type_to_string(int code);
|
const char* liblte_nas_msg_type_to_string(int code);
|
||||||
|
|
||||||
// Enums
|
// Enums
|
||||||
|
@ -3427,6 +3434,8 @@ typedef struct{
|
||||||
}LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT;
|
}LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT;
|
||||||
// Functions
|
// Functions
|
||||||
LIBLTE_ERROR_ENUM liblte_mme_pack_activate_dedicated_eps_bearer_context_accept_msg(LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT *act_ded_eps_bearer_context_accept,
|
LIBLTE_ERROR_ENUM liblte_mme_pack_activate_dedicated_eps_bearer_context_accept_msg(LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT *act_ded_eps_bearer_context_accept,
|
||||||
|
uint8 sec_hdr_type,
|
||||||
|
uint32 count,
|
||||||
LIBLTE_BYTE_MSG_STRUCT *msg);
|
LIBLTE_BYTE_MSG_STRUCT *msg);
|
||||||
LIBLTE_ERROR_ENUM liblte_mme_unpack_activate_dedicated_eps_bearer_context_accept_msg(LIBLTE_BYTE_MSG_STRUCT *msg,
|
LIBLTE_ERROR_ENUM liblte_mme_unpack_activate_dedicated_eps_bearer_context_accept_msg(LIBLTE_BYTE_MSG_STRUCT *msg,
|
||||||
LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT *act_ded_eps_bearer_context_accept);
|
LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT *act_ded_eps_bearer_context_accept);
|
||||||
|
@ -4050,4 +4059,21 @@ LIBLTE_ERROR_ENUM liblte_mme_pack_pdn_disconnect_request_msg(LIBLTE_MME_PDN_DISC
|
||||||
LIBLTE_ERROR_ENUM liblte_mme_unpack_pdn_disconnect_request_msg(LIBLTE_BYTE_MSG_STRUCT *msg,
|
LIBLTE_ERROR_ENUM liblte_mme_unpack_pdn_disconnect_request_msg(LIBLTE_BYTE_MSG_STRUCT *msg,
|
||||||
LIBLTE_MME_PDN_DISCONNECT_REQUEST_MSG_STRUCT *pdn_discon_req);
|
LIBLTE_MME_PDN_DISCONNECT_REQUEST_MSG_STRUCT *pdn_discon_req);
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
Message Name: ACTIVATE TEST MODE COMPLETE
|
||||||
|
|
||||||
|
Description: Sent by the UE to the network in response to an
|
||||||
|
ATTACH ACCEPT message.
|
||||||
|
|
||||||
|
Document Reference: 36.509 v8.7.0 Section 6.6
|
||||||
|
*********************************************************************/
|
||||||
|
// Defines
|
||||||
|
// Enums
|
||||||
|
// Structs
|
||||||
|
// Functions
|
||||||
|
LIBLTE_ERROR_ENUM liblte_mme_pack_activate_test_mode_complete_msg(LIBLTE_BYTE_MSG_STRUCT *msg,
|
||||||
|
uint8 sec_hdr_type,
|
||||||
|
uint32 count);
|
||||||
|
|
||||||
|
|
||||||
#endif // SRSLTE_LIBLTE_MME_H
|
#endif // SRSLTE_LIBLTE_MME_H
|
||||||
|
|
|
@ -8547,6 +8547,8 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_uplink_generic_nas_transport_msg(LIBLTE_BYTE
|
||||||
Document Reference: 24.301 v10.2.0 Section 8.3.1
|
Document Reference: 24.301 v10.2.0 Section 8.3.1
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
LIBLTE_ERROR_ENUM liblte_mme_pack_activate_dedicated_eps_bearer_context_accept_msg(LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT *act_ded_eps_bearer_context_accept,
|
LIBLTE_ERROR_ENUM liblte_mme_pack_activate_dedicated_eps_bearer_context_accept_msg(LIBLTE_MME_ACTIVATE_DEDICATED_EPS_BEARER_CONTEXT_ACCEPT_MSG_STRUCT *act_ded_eps_bearer_context_accept,
|
||||||
|
uint8 sec_hdr_type,
|
||||||
|
uint32 count,
|
||||||
LIBLTE_BYTE_MSG_STRUCT *msg)
|
LIBLTE_BYTE_MSG_STRUCT *msg)
|
||||||
{
|
{
|
||||||
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
||||||
|
@ -8555,6 +8557,20 @@ LIBLTE_ERROR_ENUM liblte_mme_pack_activate_dedicated_eps_bearer_context_accept_m
|
||||||
if(act_ded_eps_bearer_context_accept != NULL &&
|
if(act_ded_eps_bearer_context_accept != NULL &&
|
||||||
msg != NULL)
|
msg != NULL)
|
||||||
{
|
{
|
||||||
|
if(LIBLTE_MME_SECURITY_HDR_TYPE_PLAIN_NAS != sec_hdr_type)
|
||||||
|
{
|
||||||
|
// Protocol Discriminator and Security Header Type
|
||||||
|
*msg_ptr = (sec_hdr_type << 4) | (LIBLTE_MME_PD_EPS_MOBILITY_MANAGEMENT);
|
||||||
|
msg_ptr++;
|
||||||
|
|
||||||
|
// MAC will be filled in later
|
||||||
|
msg_ptr += 4;
|
||||||
|
|
||||||
|
// Sequence Number
|
||||||
|
*msg_ptr = count & 0xFF;
|
||||||
|
msg_ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
// Protocol Discriminator and EPS Bearer ID
|
// Protocol Discriminator and EPS Bearer ID
|
||||||
*msg_ptr = (act_ded_eps_bearer_context_accept->eps_bearer_id << 4) | (LIBLTE_MME_PD_EPS_SESSION_MANAGEMENT);
|
*msg_ptr = (act_ded_eps_bearer_context_accept->eps_bearer_id << 4) | (LIBLTE_MME_PD_EPS_SESSION_MANAGEMENT);
|
||||||
msg_ptr++;
|
msg_ptr++;
|
||||||
|
@ -11207,6 +11223,47 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_pdn_disconnect_request_msg(LIBLTE_BYTE_MSG_S
|
||||||
return(err);
|
return(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LIBLTE_ERROR_ENUM liblte_mme_pack_activate_test_mode_complete_msg(LIBLTE_BYTE_MSG_STRUCT *msg,
|
||||||
|
uint8 sec_hdr_type,
|
||||||
|
uint32 count)
|
||||||
|
{
|
||||||
|
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
||||||
|
uint8 *msg_ptr = msg->msg;
|
||||||
|
|
||||||
|
if(msg != NULL)
|
||||||
|
{
|
||||||
|
if(LIBLTE_MME_SECURITY_HDR_TYPE_PLAIN_NAS != sec_hdr_type)
|
||||||
|
{
|
||||||
|
// Protocol Discriminator and Security Header Type
|
||||||
|
*msg_ptr = (sec_hdr_type << 4) | (LIBLTE_MME_PD_EPS_MOBILITY_MANAGEMENT);
|
||||||
|
msg_ptr++;
|
||||||
|
|
||||||
|
// MAC will be filled in later
|
||||||
|
msg_ptr += 4;
|
||||||
|
|
||||||
|
// Sequence Number
|
||||||
|
*msg_ptr = count & 0xFF;
|
||||||
|
msg_ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Protocol Discriminator and skip indicator (always 0x0F)
|
||||||
|
*msg_ptr = (LIBLTE_MME_MSG_TYPE_TEST_MODE_SKIP_INDICATOR << 4) | (LIBLTE_MME_MSG_TYPE_TEST_MODE_PROTOCOL_DISCRIMINATOR);
|
||||||
|
msg_ptr++;
|
||||||
|
|
||||||
|
// Message Type
|
||||||
|
*msg_ptr = LIBLTE_MME_MSG_TYPE_ACTIVATE_TEST_MODE_COMPLETE;
|
||||||
|
msg_ptr++;
|
||||||
|
|
||||||
|
// Fill in the number of bytes used
|
||||||
|
msg->N_bytes = msg_ptr - msg->msg;
|
||||||
|
|
||||||
|
err = LIBLTE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(err);
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
HELPER FUNCTIONS
|
HELPER FUNCTIONS
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue