Adopt plmn_id_t in nr_guami_t

This commit is contained in:
Guido Casati
2025-10-22 14:48:34 +02:00
parent 7ec646a8d2
commit 32eae0a0a8
6 changed files with 19 additions and 27 deletions
+1 -3
View File
@@ -37,9 +37,7 @@ typedef struct nssai_s {
// Globally Unique AMF Identifier // Globally Unique AMF Identifier
typedef struct nr_guami_s { typedef struct nr_guami_s {
uint16_t mcc; plmn_id_t plmn;
uint16_t mnc;
uint8_t mnc_len;
uint8_t amf_region_id; uint8_t amf_region_id;
uint16_t amf_set_id; uint16_t amf_set_id;
uint8_t amf_pointer; uint8_t amf_pointer;
@@ -38,13 +38,11 @@ ue_id_e2sm_t fill_e2sm_gnb_ue_id_data(const gNB_RRC_UE_t *rrc_ue_context, __attr
ue_id.gnb.amf_ue_ngap_id = auni < (1LL << 40) ? auni : 0; ue_id.gnb.amf_ue_ngap_id = auni < (1LL << 40) ? auni : 0;
// Mandatory // Mandatory
//GUAMI 6.2.3.17 //GUAMI 6.2.3.17
ue_id.gnb.guami.plmn_id = (e2sm_plmn_t) { ue_id.gnb.guami.plmn_id = (e2sm_plmn_t){.mcc = rrc_ue_context->ue_guami.plmn.mcc,
.mcc = rrc_ue_context->ue_guami.mcc, .mnc = rrc_ue_context->ue_guami.plmn.mnc,
.mnc = rrc_ue_context->ue_guami.mnc, .mnc_digit_len = rrc_ue_context->ue_guami.plmn.mnc_digit_length};
.mnc_digit_len = rrc_ue_context->ue_guami.mnc_len
};
ue_id.gnb.guami.amf_region_id = rrc_ue_context->ue_guami.amf_region_id; ue_id.gnb.guami.amf_region_id = rrc_ue_context->ue_guami.amf_region_id;
ue_id.gnb.guami.amf_set_id = rrc_ue_context->ue_guami.amf_set_id; ue_id.gnb.guami.amf_set_id = rrc_ue_context->ue_guami.amf_set_id;
ue_id.gnb.guami.amf_ptr = rrc_ue_context->ue_guami.amf_pointer; ue_id.gnb.guami.amf_ptr = rrc_ue_context->ue_guami.amf_pointer;
+1 -3
View File
@@ -165,9 +165,7 @@ static nr_guami_t get_guami(const uint32_t amf_Id, const plmn_id_t plmn)
guami.amf_region_id = (amf_Id >> 16) & 0xff; guami.amf_region_id = (amf_Id >> 16) & 0xff;
guami.amf_set_id = (amf_Id >> 6) & 0x3ff; guami.amf_set_id = (amf_Id >> 6) & 0x3ff;
guami.amf_pointer = amf_Id & 0x3f; guami.amf_pointer = amf_Id & 0x3f;
guami.mcc = plmn.mcc; guami.plmn = plmn;
guami.mnc = plmn.mnc;
guami.mnc_len = plmn.mnc_digit_length;
return guami; return guami;
} }
+1 -1
View File
@@ -106,7 +106,7 @@ ngap_cause_t decode_ngap_cause(const NGAP_Cause_t *in)
nr_guami_t decode_ngap_guami(const NGAP_GUAMI_t *in) nr_guami_t decode_ngap_guami(const NGAP_GUAMI_t *in)
{ {
nr_guami_t out = {0}; nr_guami_t out = {0};
TBCD_TO_MCC_MNC(&in->pLMNIdentity, out.mcc, out.mnc, out.mnc_len); TBCD_TO_MCC_MNC(&in->pLMNIdentity, out.plmn.mcc, out.plmn.mnc, out.plmn.mnc_digit_length);
OCTET_STRING_TO_INT8(&in->aMFRegionID, out.amf_region_id); OCTET_STRING_TO_INT8(&in->aMFRegionID, out.amf_region_id);
OCTET_STRING_TO_INT16(&in->aMFSetID, out.amf_set_id); OCTET_STRING_TO_INT16(&in->aMFSetID, out.amf_set_id);
OCTET_STRING_TO_INT8(&in->aMFPointer, out.amf_pointer); OCTET_STRING_TO_INT8(&in->aMFPointer, out.amf_pointer);
+6 -6
View File
@@ -76,9 +76,9 @@ static ngap_gNB_amf_data_t *select_amf(ngap_gNB_instance_t *instance_p, const ng
const nr_guami_t *guami = &msg->ue_identity.guami; const nr_guami_t *guami = &msg->ue_identity.guami;
LOG_D(NGAP, LOG_D(NGAP,
"GUAMI is present: MCC=%03d MNC=%0*d RegionID=%d SetID=%d Pointer=%d\n", "GUAMI is present: MCC=%03d MNC=%0*d RegionID=%d SetID=%d Pointer=%d\n",
guami->mcc, guami->plmn.mcc,
guami->mnc_len, guami->plmn.mnc_digit_length,
guami->mnc, guami->plmn.mnc,
guami->amf_region_id, guami->amf_region_id,
guami->amf_set_id, guami->amf_set_id,
guami->amf_pointer); guami->amf_pointer);
@@ -89,9 +89,9 @@ static ngap_gNB_amf_data_t *select_amf(ngap_gNB_instance_t *instance_p, const ng
msg->gNB_ue_ngap_id, msg->gNB_ue_ngap_id,
amf->amf_name, amf->amf_name,
amf->assoc_id, amf->assoc_id,
guami->mcc, guami->plmn.mcc,
guami->mnc_len, guami->plmn.mnc_digit_length,
guami->mnc, guami->plmn.mnc,
guami->amf_region_id, guami->amf_region_id,
guami->amf_set_id, guami->amf_set_id,
guami->amf_pointer); guami->amf_pointer);
+5 -7
View File
@@ -286,8 +286,7 @@ ngap_gNB_amf_data_t *ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *inst
struct plmn_identity_s *served_plmn_p = NULL; struct plmn_identity_s *served_plmn_p = NULL;
STAILQ_FOREACH(served_plmn_p, &guami_p->served_plmns, next) { STAILQ_FOREACH(served_plmn_p, &guami_p->served_plmns, next) {
if ((served_plmn_p->mcc == guami.mcc) && if ((served_plmn_p->mcc == guami.plmn.mcc) && (served_plmn_p->mnc == guami.plmn.mnc)) {
(served_plmn_p->mnc == guami.mnc)) {
break; break;
} }
} }
@@ -322,9 +321,9 @@ ngap_gNB_amf_data_t *ngap_gNB_nnsf_select_amf_by_guami(ngap_gNB_instance_t *inst
} }
NGAP_WARN("No matching AMF found for GUAMI (MCC=%03d MNC=%0*d RegionID=%d SetID=%d Pointer=%d)\n", NGAP_WARN("No matching AMF found for GUAMI (MCC=%03d MNC=%0*d RegionID=%d SetID=%d Pointer=%d)\n",
guami.mcc, guami.plmn.mcc,
guami.mnc_len, guami.plmn.mnc_digit_length,
guami.mnc, guami.plmn.mnc,
guami.amf_region_id, guami.amf_region_id,
guami.amf_set_id, guami.amf_set_id,
guami.amf_pointer); guami.amf_pointer);
@@ -373,8 +372,7 @@ ngap_gNB_amf_data_t *ngap_gNB_nnsf_select_amf_by_guami_no_cause(ngap_gNB_instanc
struct plmn_identity_s *served_plmn_p = NULL; struct plmn_identity_s *served_plmn_p = NULL;
STAILQ_FOREACH(served_plmn_p, &guami_p->served_plmns, next) { STAILQ_FOREACH(served_plmn_p, &guami_p->served_plmns, next) {
if ((served_plmn_p->mcc == guami.mcc) && if ((served_plmn_p->mcc == guami.plmn.mcc) && (served_plmn_p->mnc == guami.plmn.mnc)) {
(served_plmn_p->mnc == guami.mnc)) {
break; break;
} }
} }