diff --git a/common/5g_platform_types.h b/common/5g_platform_types.h index 6f055e9305..a5b7b7a1fc 100644 --- a/common/5g_platform_types.h +++ b/common/5g_platform_types.h @@ -35,6 +35,16 @@ typedef struct nssai_s { uint32_t sd; } nssai_t; +// Globally Unique AMF Identifier +typedef struct nr_guami_s { + uint16_t mcc; + uint16_t mnc; + uint8_t mnc_len; + uint8_t amf_region_id; + uint16_t amf_set_id; + uint8_t amf_pointer; +} nr_guami_t; + typedef enum { NON_DYNAMIC, DYNAMIC } fiveQI_t; #endif diff --git a/openair2/COMMON/ngap_messages_types.h b/openair2/COMMON/ngap_messages_types.h index 588d7c5cba..6d4998fede 100644 --- a/openair2/COMMON/ngap_messages_types.h +++ b/openair2/COMMON/ngap_messages_types.h @@ -199,15 +199,6 @@ typedef struct pdusession_level_qos_parameter_s { ngap_allocation_retention_priority_t allocation_retention_priority; } pdusession_level_qos_parameter_t; -typedef struct ngap_guami_s { - uint16_t mcc; - uint16_t mnc; - uint8_t mnc_len; - uint8_t amf_region_id; - uint16_t amf_set_id; - uint8_t amf_pointer; -} ngap_guami_t; - typedef struct fiveg_s_tmsi_s { uint16_t amf_set_id; uint8_t amf_pointer; @@ -233,7 +224,7 @@ typedef enum ngap_ue_identities_presenceMask_e { typedef struct ngap_ue_identity_s { ngap_ue_identities_presenceMask_t presenceMask; fiveg_s_tmsi_t s_tmsi; - ngap_guami_t guami; + nr_guami_t guami; } ngap_ue_identity_t; typedef struct ngap_nas_pdu_s { @@ -613,7 +604,7 @@ typedef struct ngap_initial_context_setup_req_s { ngap_ambr_t ue_ambr; /* guami */ - ngap_guami_t guami; + nr_guami_t guami; /* allowed nssai */ uint8_t nb_allowed_nssais; @@ -719,7 +710,7 @@ typedef struct ngap_path_switch_req_s { /* AMF UE id */ uint64_t amf_ue_ngap_id; - ngap_guami_t ue_guami; + nr_guami_t ue_guami; uint16_t ue_initial_id; /* Security algorithms */ diff --git a/openair2/RRC/NR/nr_rrc_defs.h b/openair2/RRC/NR/nr_rrc_defs.h index 79d102f9e3..32892d6e6f 100644 --- a/openair2/RRC/NR/nr_rrc_defs.h +++ b/openair2/RRC/NR/nr_rrc_defs.h @@ -86,15 +86,6 @@ typedef struct nr_e_rab_param_s { uint8_t xid; // transaction_id } __attribute__ ((__packed__)) nr_e_rab_param_t; -typedef struct nr_rrc_guami_s { - uint16_t mcc; - uint16_t mnc; - uint8_t mnc_len; - uint8_t amf_region_id; - uint16_t amf_set_id; - uint8_t amf_pointer; -} nr_rrc_guami_t; - typedef enum pdu_session_satus_e { PDU_SESSION_STATUS_NEW, PDU_SESSION_STATUS_DONE, @@ -217,7 +208,8 @@ typedef struct gNB_RRC_UE_s { uint64_t nr_cellid; uint32_t rrc_ue_id; uint64_t amf_ue_ngap_id; - nr_rrc_guami_t ue_guami; + // Globally Unique AMF Identifier + nr_guami_t ue_guami; ngap_security_capabilities_t security_capabilities; //NSA block diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.c b/openair2/RRC/NR/rrc_gNB_NGAP.c index fadbea4825..761db394ae 100644 --- a/openair2/RRC/NR/rrc_gNB_NGAP.c +++ b/openair2/RRC/NR/rrc_gNB_NGAP.c @@ -491,14 +491,8 @@ int rrc_gNB_process_NGAP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, instance_t UE->amf_ue_ngap_id = req->amf_ue_ngap_id; - /* store guami in gNB_RRC_UE_t context; - * we copy individual members because the guami types are different (nr_rrc_guami_t and ngap_guami_t) */ - UE->ue_guami.mcc = req->guami.mcc; - UE->ue_guami.mnc = req->guami.mnc; - UE->ue_guami.mnc_len = req->guami.mnc_len; - UE->ue_guami.amf_region_id = req->guami.amf_region_id; - UE->ue_guami.amf_set_id = req->guami.amf_set_id; - UE->ue_guami.amf_pointer = req->guami.amf_pointer; + // Directly copy the entire guami structure + UE->ue_guami = req->guami; /* NAS PDU */ // this is malloced pointers, we pass it for later free() diff --git a/openair3/NGAP/ngap_gNB_nnsf.c b/openair3/NGAP/ngap_gNB_nnsf.c index e9f23c6401..54c8a505bb 100644 --- a/openair3/NGAP/ngap_gNB_nnsf.c +++ b/openair3/NGAP/ngap_gNB_nnsf.c @@ -234,10 +234,9 @@ ngap_gNB_nnsf_select_amf_by_amf_setid(ngap_gNB_instance_t *instance_p, return NULL; } -struct ngap_gNB_amf_data_s * -ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *instance_p, - ngap_rrc_establishment_cause_t cause, - ngap_guami_t guami) +struct ngap_gNB_amf_data_s *ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *instance_p, + ngap_rrc_establishment_cause_t cause, + nr_guami_t guami) { struct ngap_gNB_amf_data_s *amf_data_p = NULL; @@ -327,10 +326,7 @@ ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *instance_p, return NULL; } - -struct ngap_gNB_amf_data_s * -ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instance_t *instance_p, - ngap_guami_t guami) +struct ngap_gNB_amf_data_s *ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instance_t *instance_p, nr_guami_t guami) { struct ngap_gNB_amf_data_s *amf_data_p = NULL; struct ngap_gNB_amf_data_s *amf_highest_capacity_p = NULL; diff --git a/openair3/NGAP/ngap_gNB_nnsf.h b/openair3/NGAP/ngap_gNB_nnsf.h index bf6c309af0..8b20b0cad4 100644 --- a/openair3/NGAP/ngap_gNB_nnsf.h +++ b/openair3/NGAP/ngap_gNB_nnsf.h @@ -49,13 +49,10 @@ ngap_gNB_nnsf_select_amf_by_amf_setid(ngap_gNB_instance_t *instance_p, int selected_plmn_identity, uint8_t amf_setid); -struct ngap_gNB_amf_data_s* -ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *instance_p, - ngap_rrc_establishment_cause_t cause, - ngap_guami_t guami); +struct ngap_gNB_amf_data_s *ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *instance_p, + ngap_rrc_establishment_cause_t cause, + nr_guami_t guami); -struct ngap_gNB_amf_data_s* -ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instance_t *instance_p, - ngap_guami_t guami); +struct ngap_gNB_amf_data_s *ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instance_t *instance_p, nr_guami_t guami); #endif /* NGAP_GNB_NNSF_H_ */