Refactor NAS 5GS message type definitions
* move defines to openair3/NAS/NR_UE/nr_nas_msg.h as they are only used in nr_nas_msg.c * made naming of all message types consistent, using the same prefix for all
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include "PduSessionEstablishmentAccept.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
#include "common/utils/tun_if.h"
|
||||
#include "NR_NAS_defs.h"
|
||||
|
||||
static uint16_t getShort(uint8_t *input)
|
||||
{
|
||||
|
||||
@@ -34,55 +34,60 @@ typedef struct {
|
||||
#define TO_TEXT(LabEl, nUmID) {nUmID, #LabEl},
|
||||
#define TO_ENUM(LabEl, nUmID ) LabEl = nUmID,
|
||||
|
||||
#define FOREACH_TYPE(TYPE_DEF) \
|
||||
TYPE_DEF(REGISTRATION_REQUEST, 0x41) \
|
||||
TYPE_DEF(REGISTRATION_ACCEPT, 0x42) \
|
||||
TYPE_DEF(REGISTRATION_COMPLETE, 0x43) \
|
||||
TYPE_DEF(REGISTRATION_REJECT, 0x44) \
|
||||
TYPE_DEF(FGS_DEREGISTRATION_REQUEST_UE_ORIGINATING, 0x45) \
|
||||
TYPE_DEF(FGS_DEREGISTRATION_ACCEPT_UE_ORIGINATING, 0x46) \
|
||||
TYPE_DEF(DeregistrationrequestUEterminated, 0x47) \
|
||||
TYPE_DEF(DeregistrationacceptUEterminated, 0x48) \
|
||||
TYPE_DEF(FGS_SERVICE_REQUEST, 0x4c) \
|
||||
TYPE_DEF(FGS_SERVICE_REJECT, 0x4d) \
|
||||
TYPE_DEF(FGS_SERVICE_ACCEPT, 0x4e) \
|
||||
TYPE_DEF(Controlplaneservicerequest, 0x4f) \
|
||||
TYPE_DEF(Networkslicespecificauthenticationcommand, 0x50) \
|
||||
TYPE_DEF(Networkslicespecificauthenticationcomplete, 0x51) \
|
||||
TYPE_DEF(Networkslicespecificauthenticationresult, 0x52) \
|
||||
TYPE_DEF(Configurationupdatecommand, 0x54) \
|
||||
TYPE_DEF(Configurationupdatecomplete, 0x55) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_REQUEST, 0x56) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_RESPONSE, 0x57) \
|
||||
TYPE_DEF(Authenticationreject, 0x58) \
|
||||
TYPE_DEF(Authenticationfailure, 0x59) \
|
||||
TYPE_DEF(Authenticationresult, 0x5a) \
|
||||
TYPE_DEF(FGS_IDENTITY_REQUEST, 0x5b) \
|
||||
TYPE_DEF(FGS_IDENTITY_RESPONSE, 0x5c) \
|
||||
TYPE_DEF(FGS_SECURITY_MODE_COMMAND, 0x5d) \
|
||||
TYPE_DEF(FGS_SECURITY_MODE_COMPLETE, 0x5e) \
|
||||
TYPE_DEF(Securitymodereject, 0x5f) \
|
||||
TYPE_DEF(SGMMstatus, 0x64) \
|
||||
TYPE_DEF(Notification, 0x65) \
|
||||
TYPE_DEF(Notificationresponse, 0x66) \
|
||||
TYPE_DEF(FGS_UPLINK_NAS_TRANSPORT, 0x67) \
|
||||
TYPE_DEF(FGS_DOWNLINK_NAS_TRANSPORT, 0x68) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_ESTABLISHMENT_REQ, 0xc1) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_ESTABLISHMENT_ACC, 0xc2) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_ESTABLISHMENT_REJ, 0xc3) \
|
||||
TYPE_DEF(PDUsessionauthenticationcommand, 0xc5) \
|
||||
TYPE_DEF(PDUsessionauthenticationcomplete, 0xc6) \
|
||||
TYPE_DEF(PDUsessionauthenticationresult, 0xc7) \
|
||||
TYPE_DEF(PDUsessionmodificationrequest, 0xc9) \
|
||||
TYPE_DEF(PDUsessionmodificationreject, 0xca) \
|
||||
TYPE_DEF(PDUsessionmodificationcommand, 0xcb) \
|
||||
TYPE_DEF(PDUsessionmodificationcomplete, 0xcc) \
|
||||
TYPE_DEF(PDUsessionmodificationcommandreject, 0xcd) \
|
||||
TYPE_DEF(PDUsessionreleaserequest, 0xd1) \
|
||||
TYPE_DEF(PDUsessionreleasereject, 0xd2) \
|
||||
TYPE_DEF(PDUsessionreleasecommand, 0xd3) \
|
||||
TYPE_DEF(PDUsessionreleasecomplete, 0xd4) \
|
||||
TYPE_DEF(SGSMstatus, 0xd6)
|
||||
/* Message types defintions for:
|
||||
(a) 5GS Mobility Management (5GMM) (IDs 0x41 - 0x68)
|
||||
Table 9.7.1 of 3GPP TS 24.501
|
||||
(b) 5GS Session Management (5GSM) (IDs 0xc1 - 0xd6)
|
||||
Table 9.7.2 of 3GPP TS 24.501 */
|
||||
#define FOREACH_TYPE(TYPE_DEF) \
|
||||
TYPE_DEF(FGS_REGISTRATION_REQUEST, 0x41) \
|
||||
TYPE_DEF(FGS_REGISTRATION_ACCEPT, 0x42) \
|
||||
TYPE_DEF(FGS_REGISTRATION_COMPLETE, 0x43) \
|
||||
TYPE_DEF(FGS_REGISTRATION_REJECT, 0x44) \
|
||||
TYPE_DEF(FGS_DEREGISTRATION_REQUEST_UE_ORIGINATING, 0x45) \
|
||||
TYPE_DEF(FGS_DEREGISTRATION_ACCEPT_UE_ORIGINATING, 0x46) \
|
||||
TYPE_DEF(FGS_DEREGISTRATION_REQUEST_UE_TERMINATED, 0x47) \
|
||||
TYPE_DEF(FGS_DEREGISTRATION_ACCEPT_UE_TERMINATED, 0x48) \
|
||||
TYPE_DEF(FGS_SERVICE_REQUEST, 0x4c) \
|
||||
TYPE_DEF(FGS_SERVICE_REJECT, 0x4d) \
|
||||
TYPE_DEF(FGS_SERVICE_ACCEPT, 0x4e) \
|
||||
TYPE_DEF(FGS_CONTROL_PLANE_SERVICE_REQUEST, 0x4f) \
|
||||
TYPE_DEF(FGS_NSS_AUTHENTICATION_COMMAND, 0x50) \
|
||||
TYPE_DEF(FGS_NSS_AUTHENTICATION_COMPLETE, 0x51) \
|
||||
TYPE_DEF(FGS_NSS_AUTHENTICATION_RESULT, 0x52) \
|
||||
TYPE_DEF(FGS_CONFIGURATION_UPDATE_COMMAND, 0x54) \
|
||||
TYPE_DEF(FGS_CONFIGURATION_UPDATE_COMPLETE, 0x55) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_REQUEST, 0x56) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_RESPONSE, 0x57) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_REJECT, 0x58) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_FAILURE, 0x59) \
|
||||
TYPE_DEF(FGS_AUTHENTICATION_RESULT, 0x5a) \
|
||||
TYPE_DEF(FGS_IDENTITY_REQUEST, 0x5b) \
|
||||
TYPE_DEF(FGS_IDENTITY_RESPONSE, 0x5c) \
|
||||
TYPE_DEF(FGS_SECURITY_MODE_COMMAND, 0x5d) \
|
||||
TYPE_DEF(FGS_SECURITY_MODE_COMPLETE, 0x5e) \
|
||||
TYPE_DEF(FGS_SECURITY_MODE_REJECT, 0x5f) \
|
||||
TYPE_DEF(FGS_5GMM_STATUS, 0x64) \
|
||||
TYPE_DEF(FGS_NOTIFICATION, 0x65) \
|
||||
TYPE_DEF(FGS_NOTIFICATION_RESPONSE, 0x66) \
|
||||
TYPE_DEF(FGS_UPLINK_NAS_TRANSPORT, 0x67) \
|
||||
TYPE_DEF(FGS_DOWNLINK_NAS_TRANSPORT, 0x68) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_ESTABLISHMENT_REQ, 0xc1) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_ESTABLISHMENT_ACC, 0xc2) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_ESTABLISHMENT_REJ, 0xc3) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_AUTH_COMMAND, 0xc5) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_AUTH_COMPLETE, 0xc6) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_AUTH_RESULT, 0xc7) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_MODIFICATION_REQ, 0xc9) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_MODIFICATION_REJ, 0xca) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_MODIFICATION_COMMAND, 0xcb) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_MODIFICATION_COMPLETE, 0xcc) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_MODIFICATION_COMMAND_REJ, 0xcd) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_RELEASE_REQ, 0xd1) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_RELEASE_REJ, 0xd2) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_RELEASE_COMMAND, 0xd3) \
|
||||
TYPE_DEF(FGS_PDU_SESSION_RELEASE_COMPLETE, 0xd4) \
|
||||
TYPE_DEF(FGS_5GSM_STATUS, 0xd6)
|
||||
|
||||
static const text_info_t message_text_info[] = {
|
||||
FOREACH_TYPE(TO_TEXT)
|
||||
@@ -91,7 +96,7 @@ static const text_info_t message_text_info[] = {
|
||||
//! Tasks id of each task
|
||||
typedef enum {
|
||||
FOREACH_TYPE(TO_ENUM)
|
||||
} SGSmobilitymanagementmessages_t;
|
||||
} fgs_nas_msg_t;
|
||||
|
||||
// TS 24.501
|
||||
typedef enum {
|
||||
|
||||
@@ -268,7 +268,7 @@ int mm_msg_encode(MM_msg *mm_msg, uint8_t *buffer, uint32_t len)
|
||||
len -= header_result;
|
||||
|
||||
switch (msg_type) {
|
||||
case REGISTRATION_REQUEST:
|
||||
case FGS_REGISTRATION_REQUEST:
|
||||
encode_result = encode_registration_request(&mm_msg->registration_request, buffer, len);
|
||||
break;
|
||||
case FGS_IDENTITY_RESPONSE:
|
||||
@@ -533,14 +533,14 @@ void generateRegistrationRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas)
|
||||
// set header
|
||||
mm_msg->header.ex_protocol_discriminator = FGS_MOBILITY_MANAGEMENT_MESSAGE;
|
||||
mm_msg->header.security_header_type = PLAIN_5GS_MSG;
|
||||
mm_msg->header.message_type = REGISTRATION_REQUEST;
|
||||
mm_msg->header.message_type = FGS_REGISTRATION_REQUEST;
|
||||
|
||||
// set registration request
|
||||
mm_msg->registration_request.protocoldiscriminator = FGS_MOBILITY_MANAGEMENT_MESSAGE;
|
||||
size += 1;
|
||||
mm_msg->registration_request.securityheadertype = PLAIN_5GS_MSG;
|
||||
size += 1;
|
||||
mm_msg->registration_request.messagetype = REGISTRATION_REQUEST;
|
||||
mm_msg->registration_request.messagetype = FGS_REGISTRATION_REQUEST;
|
||||
size += 1;
|
||||
mm_msg->registration_request.fgsregistrationtype = INITIAL_REGISTRATION;
|
||||
mm_msg->registration_request.naskeysetidentifier.naskeysetidentifier = 1;
|
||||
@@ -891,7 +891,7 @@ static void generateRegistrationComplete(nr_ue_nas_t *nas,
|
||||
sp_msg->plain.mm_msg.registration_complete.securityheadertype = PLAIN_5GS_MSG;
|
||||
sp_msg->plain.mm_msg.registration_complete.sparehalfoctet = 0;
|
||||
length += 1;
|
||||
sp_msg->plain.mm_msg.registration_complete.messagetype = REGISTRATION_COMPLETE;
|
||||
sp_msg->plain.mm_msg.registration_complete.messagetype = FGS_REGISTRATION_COMPLETE;
|
||||
length += 1;
|
||||
|
||||
if (sortransparentcontainer) {
|
||||
@@ -1426,7 +1426,7 @@ void *nas_nrue(void *args_p)
|
||||
|
||||
int msg_type = get_msg_type(pdu_buffer, pdu_length);
|
||||
|
||||
if (msg_type == REGISTRATION_ACCEPT) {
|
||||
if (msg_type == FGS_REGISTRATION_ACCEPT) {
|
||||
handle_registration_accept(nas, pdu_buffer, pdu_length);
|
||||
} else if (msg_type == FGS_PDU_SESSION_ESTABLISHMENT_ACC) {
|
||||
capture_pdu_session_establishment_accept_msg(pdu_buffer, pdu_length);
|
||||
@@ -1494,7 +1494,7 @@ void *nas_nrue(void *args_p)
|
||||
/* special cases accepted without protection */
|
||||
if (security_state == NAS_SECURITY_UNPROTECTED) {
|
||||
int msg_type = get_msg_type(pdu_buffer, pdu_length);
|
||||
/* for the moment, only FGS_DEREGISTRATION_ACCEPT is accepted */
|
||||
/* for the moment, only FGS_DEREGISTRATION_ACCEPT_UE_ORIGINATING is accepted */
|
||||
if (msg_type == FGS_DEREGISTRATION_ACCEPT_UE_ORIGINATING)
|
||||
security_state = NAS_SECURITY_INTEGRITY_PASSED;
|
||||
}
|
||||
@@ -1519,7 +1519,7 @@ void *nas_nrue(void *args_p)
|
||||
case FGS_DOWNLINK_NAS_TRANSPORT:
|
||||
handleDownlinkNASTransport(pdu_buffer, pdu_length);
|
||||
break;
|
||||
case REGISTRATION_ACCEPT:
|
||||
case FGS_REGISTRATION_ACCEPT:
|
||||
handle_registration_accept(nas, pdu_buffer, pdu_length);
|
||||
break;
|
||||
case FGS_DEREGISTRATION_ACCEPT_UE_ORIGINATING:
|
||||
@@ -1531,7 +1531,7 @@ void *nas_nrue(void *args_p)
|
||||
case FGS_PDU_SESSION_ESTABLISHMENT_REJ:
|
||||
LOG_E(NAS, "Received PDU Session Establishment reject\n");
|
||||
break;
|
||||
case REGISTRATION_REJECT:
|
||||
case FGS_REGISTRATION_REJECT:
|
||||
LOG_E(NAS, "Received Registration reject cause: %s\n", cause_text_info[pdu_buffer[17]].text);
|
||||
exit(1);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user