From 03a4d8efb8939de4e6736e36c8a64a91f6bd8c13 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Thu, 30 Jan 2025 14:26:57 +0100 Subject: [PATCH] Refactor NAS 5GS (5GMM & 5GSM) structs definitions and their use Every NAS 5GS message can have 3 different headers: (1) security protected (2) 5GMM plain (3) 5GS plain; According to 3GPP TS 24.501: > 4.2 Coordination between the protocols for 5GS mobility management and 5GS session management > A 5GS session management (5GSM) message is piggybacked in specific 5GS mobility management (5GMM) transport > messages. To this purpose, the 5GSM messages can be transmitted in an information element in the 5GMM transport > messages. A PDU Session Establishment accept is a 5GSM message and as such it is contained in a 5GMM transport message. The code in capture_pdu_session_establishment_accept_msg is reflecting this. The message is thus expected to have: (1) Security protected 5GMM header (2) Plain 5GMM message (3) 5GSM Payload Container (4) Plain 5GSM message. 5.4.5 of 3GPP TS 24.501: also says: > The type of the payload is identified by the Payload container type IE and includes one of the following: a) a single 5GSM message; Thus, a 5GSM is not the only possible payload of a NAS transport message. This commit is focusing on the refactoring of the structs definitions and adaptation of the CMakeLists. Based on the above: * Move NR_NAS_defs.h to 5GS subfolder in NR_UE * Move NAS FGS structs and definitions to NR_NAS_defs.h * Rename mm_msg_header_t to fgmm_msg_header_t * Remove duplicated NAS struct definitions (1) kept fgs_nas_message_security_header_t over security_protected_nas_5gs_msg_t (2) Kept fgsm_msg_header_t over fgs_sm_nas_msg_header_t * Remove unused definitions, structs, functions in the process --- openair3/NAS/COMMON/nr_common.c | 2 +- .../NAS/NR_UE/5GS/5GMM/MSG/CMakeLists.txt | 2 +- .../NAS/NR_UE/5GS/5GSM/MSG/CMakeLists.txt | 2 +- .../5GSM/MSG/PduSessionEstablishmentAccept.c | 38 ++-- .../5GSM/MSG/PduSessionEstablishmentAccept.h | 20 +- .../NAS/{COMMON => NR_UE/5GS}/NR_NAS_defs.h | 208 ++++-------------- openair3/NAS/NR_UE/CMakeLists.txt | 1 + openair3/NAS/NR_UE/nr_nas_msg.c | 16 +- openair3/NAS/NR_UE/nr_nas_msg.h | 33 +-- 9 files changed, 81 insertions(+), 241 deletions(-) rename openair3/NAS/{COMMON => NR_UE/5GS}/NR_NAS_defs.h (67%) diff --git a/openair3/NAS/COMMON/nr_common.c b/openair3/NAS/COMMON/nr_common.c index 6c935df4f1..5f0beb3a66 100644 --- a/openair3/NAS/COMMON/nr_common.c +++ b/openair3/NAS/COMMON/nr_common.c @@ -22,7 +22,7 @@ */ #include -#include +#include "openair3/NAS/NR_UE/5GS/NR_NAS_defs.h" #include #include diff --git a/openair3/NAS/NR_UE/5GS/5GMM/MSG/CMakeLists.txt b/openair3/NAS/NR_UE/5GS/5GMM/MSG/CMakeLists.txt index fab8d6b6ff..766106ee77 100644 --- a/openair3/NAS/NR_UE/5GS/5GMM/MSG/CMakeLists.txt +++ b/openair3/NAS/NR_UE/5GS/5GMM/MSG/CMakeLists.txt @@ -10,4 +10,4 @@ add_library(fgs_5gmm_lib OBJECT FGSDeregistrationRequestUEOriginating.c ) -target_include_directories(fgs_5gmm_lib PUBLIC . ../IES) +target_include_directories(fgs_5gmm_lib PUBLIC . ../IES ../../) diff --git a/openair3/NAS/NR_UE/5GS/5GSM/MSG/CMakeLists.txt b/openair3/NAS/NR_UE/5GS/5GSM/MSG/CMakeLists.txt index cea7b5c552..41498581c9 100644 --- a/openair3/NAS/NR_UE/5GS/5GSM/MSG/CMakeLists.txt +++ b/openair3/NAS/NR_UE/5GS/5GSM/MSG/CMakeLists.txt @@ -1,3 +1,3 @@ add_library(fgs_5gsm_lib OBJECT PduSessionEstablishRequest.c PduSessionEstablishmentAccept.c) -target_include_directories(fgs_5gsm_lib PUBLIC .) +target_include_directories(fgs_5gsm_lib PUBLIC . ../../) diff --git a/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c b/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c index 77c2a1d921..e00b7209af 100644 --- a/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c +++ b/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.c @@ -61,28 +61,32 @@ static int capture_ipv6_addr(const uint8_t *addr, char *ip, size_t len) */ void capture_pdu_session_establishment_accept_msg(uint8_t *buffer, uint32_t msg_length) { - security_protected_nas_5gs_msg_t sec_nas_hdr; - security_protected_plain_nas_5gs_msg_t sec_nas_msg; + fgs_nas_message_security_header_t sec_nas_hdr; pdu_session_establishment_accept_msg_t psea_msg; uint8_t *curPtr = buffer; - sec_nas_hdr.epd = *curPtr++; - sec_nas_hdr.sht = *curPtr++; + // Security protected NAS header (7 bytes) + sec_nas_hdr.protocol_discriminator = *curPtr++; + sec_nas_hdr.security_header_type = *curPtr++; uint32_t tmp; memcpy(&tmp, buffer, sizeof(tmp)); - sec_nas_hdr.mac = htonl(tmp); - curPtr += sizeof(sec_nas_hdr.mac); - sec_nas_hdr.sqn = *curPtr++; - sec_nas_msg.epd = *curPtr++; - sec_nas_msg.sht = *curPtr++; - sec_nas_msg.msg_type = *curPtr++; - sec_nas_msg.payload_type = *curPtr++; - sec_nas_msg.payload_len = getShort(curPtr); - curPtr += sizeof(sec_nas_msg.payload_len); + sec_nas_hdr.message_authentication_code = htonl(tmp); + curPtr += sizeof(sec_nas_hdr.message_authentication_code); + sec_nas_hdr.sequence_number = *curPtr++; + // Security protected plain NAS message + fgmm_msg_header_t header; + header.ex_protocol_discriminator = *curPtr++; + header.security_header_type = *curPtr++; + header.message_type = *curPtr++; + // Payload container type and spare (1 octet) + curPtr++; + // Payload container length + curPtr += sizeof(getShort(curPtr)); /* Mandatory Presence IEs */ - psea_msg.epd = *curPtr++; - psea_msg.pdu_id = *curPtr++; - psea_msg.pti = *curPtr++; - psea_msg.msg_type = *curPtr++; + fgsm_msg_header_t *sm_header = &psea_msg.header; + sm_header->ex_protocol_discriminator = *curPtr++; + sm_header->pdu_session_id = *curPtr++; + sm_header->pti = *curPtr++; + sm_header->message_type = *curPtr++; psea_msg.pdu_type = *curPtr & 0x0f; psea_msg.ssc_mode = (*curPtr++ & 0xf0) >> 4; psea_msg.qos_rules.length = getShort(curPtr); diff --git a/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.h b/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.h index a85d5c4aec..37dea829b0 100644 --- a/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.h +++ b/openair3/NAS/NR_UE/5GS/5GSM/MSG/PduSessionEstablishmentAccept.h @@ -147,10 +147,7 @@ typedef struct qos_fd_s { typedef struct pdu_session_establishment_accept_msg_s { /* Mandatory presence */ - uint8_t epd; /* Extended Protocol Discriminator */ - uint8_t pdu_id; /* PDU Session ID */ - uint8_t pti; /* Procedure Transaction Identity */ - uint8_t msg_type; /* Message Type */ + fgsm_msg_header_t header; uint8_t pdu_type; /* PDU Session Type */ uint8_t ssc_mode; /* SSC mode */ auth_qos_rule_t qos_rules; /* Authorized QoS rules */ @@ -163,21 +160,6 @@ typedef struct pdu_session_establishment_accept_msg_s { qos_fd_t qos_fd_ie; /* QoS flow descriptions */ } pdu_session_establishment_accept_msg_t; /* 24.501 Table 8.3.2.1.1 */ -typedef struct security_protected_plain_nas_5gs_msg_s { - uint8_t epd; /* Extended Protocol Discriminator */ - uint8_t sht; /* Security Header Type */ - uint8_t msg_type; /* Message Type */ - uint8_t payload_type; /* Payload Container Type */ - uint16_t payload_len; /* Payload Container Length */ -} security_protected_plain_nas_5gs_msg_t; - -typedef struct security_protected_nas_5gs_msg_s { - uint8_t epd; /* Extended Protocol Discriminator */ - uint8_t sht; /* Security Header Type */ - uint32_t mac; /* Message Authentication Code */ - uint8_t sqn; /* Sequence Number */ -} security_protected_nas_5gs_msg_t; /* 24.501 Figure 9.1.1.2 */ - void capture_pdu_session_establishment_accept_msg(uint8_t *buffer, uint32_t msg_length); #endif diff --git a/openair3/NAS/COMMON/NR_NAS_defs.h b/openair3/NAS/NR_UE/5GS/NR_NAS_defs.h similarity index 67% rename from openair3/NAS/COMMON/NR_NAS_defs.h rename to openair3/NAS/NR_UE/5GS/NR_NAS_defs.h index f5510e5392..4451bfe615 100644 --- a/openair3/NAS/COMMON/NR_NAS_defs.h +++ b/openair3/NAS/NR_UE/5GS/NR_NAS_defs.h @@ -9,8 +9,6 @@ * * http://www.openairinterface.org/?page_id=698 * - * Author and copyright: Laurent Thomas, open-cells.com - * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,23 +18,12 @@ * For more information about the OpenAirInterface (OAI) Software Alliance: * contact@openairinterface.org */ + #ifndef NR_NAS_DEFS_H #define NR_NAS_DEFS_H -#include -#include - -/* TS 24.007 possible L3 formats: - TableĀ 11.1: Formats of information elements - Format Meaning IEI present LI present Value part present - T Type only yes no no - V Value only no no yes - TV Type and Value yes no yes - LV Length and Value no yes yes - TLV Type, Length and Value yes yes yes - LV-E Length and Value no yes yes - TLV-E Type, Length and Value yes yes yes -*/ +#include +#include "openair3/UICC/usim_interface.h" /* Map task id to printable name. */ typedef struct { @@ -44,24 +31,9 @@ typedef struct { char text[256]; } text_info_t; -static inline const char * idToText(const text_info_t* table, int size, int id) { - for(int i=0; i TS 24.007 -typedef enum { - SGSsessionmanagementmessages=0x2e, //LTEbox: 0xC0 ??? - SGSmobilitymanagementmessages=0x7e, -} Extendedprotocoldiscriminator_t; - #define FOREACH_TYPE(TYPE_DEF) \ TYPE_DEF(REGISTRATION_REQUEST, 0x41) \ TYPE_DEF(REGISTRATION_ACCEPT, 0x42) \ @@ -130,17 +102,6 @@ typedef enum { INTEGRITY_PROTECTED_AND_CIPHERED_WITH_NEW_SECU_CTX = 4, } Security_header_t; -typedef enum { - SUCI=1, - SGGUTI, - IMEI, - SGSTMSI, - IMEISV, - MACaddress, - EUI64, -} identitytype_t; - - // table 9.11.3.2.1 #define FOREACH_CAUSE(CAUSE_DEF) \ CAUSE_DEF(Illegal_UE,0x3 )\ @@ -187,7 +148,6 @@ typedef enum { CAUSE_DEF(Protocol_error_unspecified,0x67 ) /* Map task id to printable name. */ - #define CAUSE_TEXT(LabEl, nUmID) {nUmID, #LabEl}, static const text_info_t cause_text_info[] = { @@ -249,138 +209,58 @@ typedef enum { static const text_info_t cause_secu_text_info[] = { FOREACH_CAUSE_SECU(TO_TEXT) }; - + //! Tasks id of each task typedef enum { FOREACH_CAUSE_SECU(TO_ENUM) } cause_secu_id_t; -// IEI (information element identifier) are spread in each message definition +// IEIs (Information Element Identifier) #define IEI_NULL 0x00 -#define IEI_RAND 0x21 -#define IEI_AUTN 0x20 -#define IEI_EAP 0x78 -#define IEI_AuthenticationResponse 0x2d - -//TS 24.501 sub layer states for UE -// for network side, only 5GMMderegistered, 5GMMderegistered_initiated, 5GMMregistered, 5GMMservice_request_initiated are valid -typedef enum { - SGMMnull, - SGMMderegistered, - SGMMderegistered_initiated, - SGMMregistered, - SGMMregistered_initiated, - SGMMservice_request_initiated, -} SGMM_UE_states; +/** + * Security protected 5GS NAS message header (9.1.1 of 3GPP TS 24.501) + * either 5GMM or 5GSM + * Standard L3 message header (11.2.3.1 of 3GPP TS 24.007) + */ typedef struct { - Extendedprotocoldiscriminator_t epd:8; - Security_header_t sh:8; - SGSmobilitymanagementmessages_t mt:8; -} SGScommonHeader_t; + // Extended Protocol Discriminator + uint8_t protocol_discriminator; + // Security Header Type + uint8_t security_header_type; + // Message Authentication Code + uint32_t message_authentication_code; + // Sequence Number + uint8_t sequence_number; +} __attribute__((packed)) fgs_nas_message_security_header_t; +/// 5GMM - 5GS mobility management + +/** + * Header of a plain 5GMM NAS message (5GS) + * Standard L3 message header (11.2.3.1 of 3GPP TS 24.007) + */ typedef struct { - Extendedprotocoldiscriminator_t epd:8; - Security_header_t sh:8; - SGSmobilitymanagementmessages_t mt:8; - identitytype_t it:8; -} Identityrequest_t; + uint8_t ex_protocol_discriminator; + uint8_t security_header_type; + uint8_t message_type; +} fgmm_msg_header_t; -// the message continues with the identity value, depending on identity type, see TS 14.501, 9.11.3.4 -typedef struct __attribute__((packed)) { - Extendedprotocoldiscriminator_t epd:8; - Security_header_t sh:8; - SGSmobilitymanagementmessages_t mt:8; - uint16_t len; -} -Identityresponse_t; - -typedef struct __attribute__((packed)) { - Identityresponse_t common; - identitytype_t mi:8; - unsigned int supiFormat:4; - unsigned int identityType:4; - unsigned int mcc1:4; - unsigned int mcc2:4; - unsigned int mcc3:4; - unsigned int mnc3:4; - unsigned int mnc1:4; - unsigned int mnc2:4; - unsigned int routing1:4; - unsigned int routing2:4; - unsigned int routing3:4; - unsigned int routing4:4; - unsigned int protectScheme:4; - unsigned int spare:4; - uint8_t hplmnId; -} -IdentityresponseIMSI_t; - -typedef struct __attribute__((packed)) { - Extendedprotocoldiscriminator_t epd:8; - Security_header_t sh:8; - SGSmobilitymanagementmessages_t mt:8; - unsigned int ngKSI:4; - unsigned int spare:4; - unsigned int ABBALen:8; - unsigned int ABBA:16; - uint8_t ieiRAND; - uint8_t RAND[16]; - uint8_t ieiAUTN; - uint8_t AUTNlen; - uint8_t AUTN[16]; -} -authenticationrequestHeader_t; - -typedef struct __attribute__((packed)) { - Extendedprotocoldiscriminator_t epd:8; - Security_header_t sh:8; - SGSmobilitymanagementmessages_t mt:8; - uint8_t iei; - uint8_t RESlen; - uint8_t RES[16]; -} authenticationresponse_t; - -//AUTHENTICATION RESULT - -typedef struct __attribute__((packed)) { - Extendedprotocoldiscriminator_t epd:8; - Security_header_t sh:8; - SGSmobilitymanagementmessages_t mt:8; - - unsigned int selectedNASsecurityalgorithms; - unsigned int ngKSI:4; //ngKSI NAS key set identifier 9.11.3.32 - unsigned int spare:4; - // LV 3-9 bytes Replayed UE security capabilities UE security capability 9.11.3.54 - - /* optional - TV (E-, 1 byte) Oprional IMEISV request IMEISV request 9.11.3.28 - TV (57, 2 bytes ) Selected EPS NAS security algorithms EPS NAS security algorithms 9.11.3.25 - TLV (36, 3 bytes) Additional 5G security information Additional 5G security information 9.11.3.12 - TLV-E (78,, 7-1503 bytes) EAP message EAP message 9.11.2.2 - TLV (38, 4-n)ABBA ABBA 9.11.3.10 - TLV (19, 4-7) Replayed S1 UE security capabilities S1 UE security capability 9.11.3.48A - */ - -} securityModeCommand_t; - -typedef struct __attribute__((packed)) { - Extendedprotocoldiscriminator_t epd: 8; - Security_header_t sh: 8; - SGSmobilitymanagementmessages_t mt: 8; -} deregistrationRequestUEOriginating_t; +/// 5GSM - 5GS session management +/** + * Header of a plain 5GSM NAS message (5GS) + * Standard L3 message header (11.2.3.1 of 3GPP TS 24.007) + */ typedef struct { - uicc_t *uicc; -} nr_user_nas_t; + // Extended protocol discriminator + uint8_t ex_protocol_discriminator; + // PDU session identity + uint8_t pdu_session_id; + // Procedure transaction identity + uint8_t pti; + // Message type + uint8_t message_type; +} fgsm_msg_header_t; -#define STATIC_ASSERT(test_for_true) _Static_assert((test_for_true), "(" #test_for_true ") failed") -#define myCalloc(var, type) type * var=(type*)calloc(sizeof(type),1); -#define arrayCpy(tO, FroM) STATIC_ASSERT(sizeof(tO) == sizeof(FroM)) ; memcpy(tO, FroM, sizeof(tO)) -int resToresStar(uint8_t *msg, const uicc_t* uicc); - -int identityResponse(void **msg, nr_user_nas_t *UE); -int authenticationResponse(void **msg, nr_user_nas_t *UE); -void servingNetworkName(uint8_t *msg, char * imsiStr, int nmc_size); - -#endif +#endif // NR_NAS_DEFS_H diff --git a/openair3/NAS/NR_UE/CMakeLists.txt b/openair3/NAS/NR_UE/CMakeLists.txt index 90502078ac..83d5a2191a 100644 --- a/openair3/NAS/NR_UE/CMakeLists.txt +++ b/openair3/NAS/NR_UE/CMakeLists.txt @@ -16,4 +16,5 @@ target_link_libraries(nr_nas PUBLIC target_include_directories(nr_nas PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/5GS ) diff --git a/openair3/NAS/NR_UE/nr_nas_msg.c b/openair3/NAS/NR_UE/nr_nas_msg.c index d944589f22..a8aecf8912 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg.c +++ b/openair3/NAS/NR_UE/nr_nas_msg.c @@ -150,12 +150,12 @@ static int nas_protected_security_header_encode(char *buffer, const fgs_nas_mess LOG_FUNC_RETURN(size); } -static int _nas_mm_msg_encode_header(const mm_msg_header_t *header, uint8_t *buffer, uint32_t len) +static int _nas_mm_msg_encode_header(const fgmm_msg_header_t *header, uint8_t *buffer, uint32_t len) { int size = 0; /* Check the buffer length */ - if (len < sizeof(mm_msg_header_t)) { + if (len < sizeof(fgmm_msg_header_t)) { return (TLV_ENCODE_BUFFER_TOO_SHORT); } @@ -510,7 +510,7 @@ nr_ue_nas_t *get_ue_nas_info(module_id_t module_id) void generateRegistrationRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas) { - int size = sizeof(mm_msg_header_t); + int size = sizeof(fgmm_msg_header_t); fgs_nas_message_t nas_msg = {0}; MM_msg *mm_msg; @@ -590,7 +590,7 @@ void generateServiceRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas) mm_msg->header.ex_protocol_discriminator = FGS_MOBILITY_MANAGEMENT_MESSAGE; mm_msg->header.security_header_type = PLAIN_5GS_MSG; mm_msg->header.message_type = FGS_SERVICE_REQUEST; - size += sizeof(mm_msg_header_t); + size += sizeof(mm_msg->header); // Fill Service Request // Service Type @@ -645,7 +645,7 @@ void generateServiceRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas) void generateIdentityResponse(as_nas_info_t *initialNasMsg, uint8_t identitytype, uicc_t *uicc) { - int size = sizeof(mm_msg_header_t); + int size = sizeof(fgmm_msg_header_t); fgs_nas_message_t nas_msg; memset(&nas_msg, 0, sizeof(fgs_nas_message_t)); MM_msg *mm_msg; @@ -681,7 +681,7 @@ static void generateAuthenticationResp(nr_ue_nas_t *nas, as_nas_info_t *initialN res.value = calloc(1, 16); memcpy(res.value, nas->security.res, 16); - int size = sizeof(mm_msg_header_t); + int size = sizeof(fgmm_msg_header_t); fgs_nas_message_t nas_msg; memset(&nas_msg, 0, sizeof(fgs_nas_message_t)); MM_msg *mm_msg; @@ -721,7 +721,7 @@ int nas_itti_kgnb_refresh_req(instance_t instance, const uint8_t kgnb[32]) static void generateSecurityModeComplete(nr_ue_nas_t *nas, as_nas_info_t *initialNasMsg) { - int size = sizeof(mm_msg_header_t); + int size = sizeof(fgmm_msg_header_t); fgs_nas_message_t nas_msg; memset(&nas_msg, 0, sizeof(fgs_nas_message_t)); @@ -964,7 +964,7 @@ static void generateDeregistrationRequest(nr_ue_nas_t *nas, as_nas_info_t *initi sp_msg->header.security_header_type = INTEGRITY_PROTECTED_AND_CIPHERED; sp_msg->header.message_authentication_code = 0; sp_msg->header.sequence_number = nas->security.nas_count_ul & 0xff; - int size = sizeof(fgs_nas_message_security_header_t); + int size = sizeof(sp_msg->header); fgs_deregistration_request_ue_originating_msg *dereg_req = &sp_msg->plain.mm_msg.fgs_deregistration_request_ue_originating; dereg_req->protocoldiscriminator = FGS_MOBILITY_MANAGEMENT_MESSAGE; diff --git a/openair3/NAS/NR_UE/nr_nas_msg.h b/openair3/NAS/NR_UE/nr_nas_msg.h index 6ceb3edd23..263e30e7a1 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg.h +++ b/openair3/NAS/NR_UE/nr_nas_msg.h @@ -42,6 +42,7 @@ #include "FGSUplinkNasTransport.h" #include #include "secu_defs.h" +#include "NR_NAS_defs.h" #define INITIAL_REGISTRATION 0b001 @@ -94,22 +95,8 @@ typedef enum fgs_protocol_discriminator_e { FGS_SESSION_MANAGEMENT_MESSAGE = 0x2E, } fgs_protocol_discriminator_t; -typedef struct { - uint8_t ex_protocol_discriminator; - uint8_t security_header_type; - uint8_t message_type; -} mm_msg_header_t; - -/* Structure of security protected header */ -typedef struct { - uint8_t protocol_discriminator; - uint8_t security_header_type; - uint32_t message_authentication_code; - uint8_t sequence_number; -} fgs_nas_message_security_header_t; - typedef union { - mm_msg_header_t header; + fgmm_msg_header_t header; registration_request_msg registration_request; fgs_service_request_msg_t service_request; fgs_identiy_response_msg fgs_identity_response; @@ -137,7 +124,7 @@ typedef union { typedef struct { union { - mm_msg_header_t plain_nas_msg_header; + fgmm_msg_header_t plain_nas_msg_header; struct security_protected_nas_msg_header_s { uint8_t ex_protocol_discriminator; uint8_t security_header_type; @@ -148,20 +135,6 @@ typedef struct { } choice; } nas_msg_header_t; -typedef struct { - uint8_t ex_protocol_discriminator; - uint8_t pdu_session_id; - uint8_t PTI; - uint8_t message_type; -} fgs_sm_nas_msg_header_t; - -typedef struct { - mm_msg_header_t plain_nas_msg_header; - uint8_t payload_container_type; - uint16_t payload_container_length; - fgs_sm_nas_msg_header_t sm_nas_msg_header; -} dl_nas_transport_t; - nr_ue_nas_t *get_ue_nas_info(module_id_t module_id); void generateRegistrationRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas); void generateServiceRequest(as_nas_info_t *initialNasMsg, nr_ue_nas_t *nas);