Introduce platform type plmn_id_t for consistency across the stack
* F1AP, NGAP can now use the same struct type * this improves maintainability
This commit is contained in:
@@ -158,8 +158,8 @@ void ngap_gNB_handle_register_gNB(instance_t instance, ngap_register_gnb_req_t *
|
||||
DevCheck(new_instance->tac == ngap_register_gNB->tac, new_instance->tac, ngap_register_gNB->tac, 0);
|
||||
|
||||
for (int i = 0; i < new_instance->num_plmn; i++) {
|
||||
ngap_plmn_t *exist_plmn = &new_instance->plmn[i];
|
||||
ngap_plmn_t *new_plmn = &ngap_register_gNB->plmn[i];
|
||||
plmn_id_t *exist_plmn = &new_instance->plmn[i].plmn;
|
||||
plmn_id_t *new_plmn = &ngap_register_gNB->plmn[i].plmn;
|
||||
DevCheck(exist_plmn->mcc == new_plmn->mcc, exist_plmn->mcc, new_plmn->mcc, 0);
|
||||
DevCheck(exist_plmn->mnc == new_plmn->mnc, exist_plmn->mnc, new_plmn->mnc, 0);
|
||||
DevCheck(exist_plmn->mnc_digit_length == new_plmn->mnc_digit_length,
|
||||
@@ -185,9 +185,9 @@ void ngap_gNB_handle_register_gNB(instance_t instance, ngap_register_gnb_req_t *
|
||||
sizeof(ngap_register_gNB->gnb_ip_address));
|
||||
|
||||
for (int i = 0; i < ngap_register_gNB->num_plmn; i++) {
|
||||
new_instance->plmn[i].mcc = ngap_register_gNB->plmn[i].mcc;
|
||||
new_instance->plmn[i].mnc = ngap_register_gNB->plmn[i].mnc;
|
||||
new_instance->plmn[i].mnc_digit_length = ngap_register_gNB->plmn[i].mnc_digit_length;
|
||||
new_instance->plmn[i].plmn.mcc = ngap_register_gNB->plmn[i].plmn.mcc;
|
||||
new_instance->plmn[i].plmn.mnc = ngap_register_gNB->plmn[i].plmn.mnc;
|
||||
new_instance->plmn[i].plmn.mnc_digit_length = ngap_register_gNB->plmn[i].plmn.mnc_digit_length;
|
||||
|
||||
new_instance->plmn[i].num_nssai = ngap_register_gNB->plmn[i].num_nssai;
|
||||
memcpy(&new_instance->plmn[i].s_nssai, &ngap_register_gNB->plmn[i].s_nssai, sizeof(ngap_register_gNB->plmn[i].s_nssai));
|
||||
@@ -421,9 +421,10 @@ static int ngap_gNB_generate_ng_setup_request(
|
||||
ie->value.present = NGAP_NGSetupRequestIEs__value_PR_GlobalRANNodeID;
|
||||
ie->value.choice.GlobalRANNodeID.present = NGAP_GlobalRANNodeID_PR_globalGNB_ID;
|
||||
ie->value.choice.GlobalRANNodeID.choice.globalGNB_ID = CALLOC(1, sizeof(struct NGAP_GlobalGNB_ID));
|
||||
MCC_MNC_TO_PLMNID(instance_p->plmn[ngap_amf_data_p->broadcast_plmn_index[0]].mcc,
|
||||
instance_p->plmn[ngap_amf_data_p->broadcast_plmn_index[0]].mnc,
|
||||
instance_p->plmn[ngap_amf_data_p->broadcast_plmn_index[0]].mnc_digit_length,
|
||||
plmn_id_t *plmn_id = &instance_p->plmn[ngap_amf_data_p->broadcast_plmn_index[0]].plmn;
|
||||
MCC_MNC_TO_PLMNID(plmn_id->mcc,
|
||||
plmn_id->mnc,
|
||||
plmn_id->mnc_digit_length,
|
||||
&(ie->value.choice.GlobalRANNodeID.choice.globalGNB_ID->pLMNIdentity));
|
||||
ie->value.choice.GlobalRANNodeID.choice.globalGNB_ID->gNB_ID.present = NGAP_GNB_ID_PR_gNB_ID;
|
||||
MACRO_GNB_ID_TO_BIT_STRING(instance_p->gNB_id,
|
||||
@@ -458,7 +459,8 @@ static int ngap_gNB_generate_ng_setup_request(
|
||||
for (int i = 0; i < ngap_amf_data_p->broadcast_plmn_num; ++i) {
|
||||
plmn = (NGAP_BroadcastPLMNItem_t *)calloc(1, sizeof(NGAP_BroadcastPLMNItem_t));
|
||||
ngap_plmn_t *plmn_req = &instance_p->plmn[ngap_amf_data_p->broadcast_plmn_index[i]];
|
||||
MCC_MNC_TO_TBCD(plmn_req->mcc, plmn_req->mnc, plmn_req->mnc_digit_length, &plmn->pLMNIdentity);
|
||||
plmn_id_t *plmn_id = &instance_p->plmn[ngap_amf_data_p->broadcast_plmn_index[i]].plmn;
|
||||
MCC_MNC_TO_TBCD(plmn_id->mcc, plmn_id->mnc, plmn_id->mnc_digit_length, &plmn->pLMNIdentity);
|
||||
|
||||
for (int si = 0; si < plmn_req->num_nssai; si++) {
|
||||
ssi = (NGAP_SliceSupportItem_t *)calloc(1, sizeof(NGAP_SliceSupportItem_t));
|
||||
|
||||
@@ -123,15 +123,14 @@ int ngap_gNB_handle_nas_first_req(instance_t instance, ngap_nas_first_req_t *UEf
|
||||
amf_desc_p = ngap_gNB_nnsf_select_amf_by_amf_setid(instance_p, UEfirstReq->establishment_cause, UEfirstReq->selected_plmn_identity, UEfirstReq->ue_identity.s_tmsi.amf_set_id);
|
||||
|
||||
if (amf_desc_p) {
|
||||
NGAP_INFO(
|
||||
"UE %d: Chose AMF '%s' (assoc_id %d) through S-TMSI AMFSI %d and selected PLMN Identity index %d MCC %d MNC %d\n",
|
||||
UEfirstReq->gNB_ue_ngap_id,
|
||||
amf_desc_p->amf_name,
|
||||
amf_desc_p->assoc_id,
|
||||
UEfirstReq->ue_identity.s_tmsi.amf_set_id,
|
||||
UEfirstReq->selected_plmn_identity,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].mcc,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].mnc);
|
||||
NGAP_INFO("UE %d: Chose AMF '%s' (assoc_id %d) through S-TMSI AMFSI %d and selected PLMN Identity index %d MCC %d MNC %d\n",
|
||||
UEfirstReq->gNB_ue_ngap_id,
|
||||
amf_desc_p->amf_name,
|
||||
amf_desc_p->assoc_id,
|
||||
UEfirstReq->ue_identity.s_tmsi.amf_set_id,
|
||||
UEfirstReq->selected_plmn_identity,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].plmn.mcc,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].plmn.mnc);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -148,8 +147,8 @@ int ngap_gNB_handle_nas_first_req(instance_t instance, ngap_nas_first_req_t *UEf
|
||||
amf_desc_p->amf_name,
|
||||
amf_desc_p->assoc_id,
|
||||
UEfirstReq->selected_plmn_identity,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].mcc,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].mnc);
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].plmn.mcc,
|
||||
instance_p->plmn[UEfirstReq->selected_plmn_identity].plmn.mnc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,16 +221,16 @@ int ngap_gNB_handle_nas_first_req(instance_t instance, ngap_nas_first_req_t *UEf
|
||||
MACRO_GNB_ID_TO_CELL_IDENTITY(instance_p->gNB_id,
|
||||
0, // Cell ID
|
||||
&userinfo_nr_p->nR_CGI.nRCellIdentity);
|
||||
MCC_MNC_TO_TBCD(instance_p->plmn[ue_desc_p->selected_plmn_identity].mcc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].mnc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].mnc_digit_length,
|
||||
MCC_MNC_TO_TBCD(instance_p->plmn[ue_desc_p->selected_plmn_identity].plmn.mcc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].plmn.mnc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].plmn.mnc_digit_length,
|
||||
&userinfo_nr_p->nR_CGI.pLMNIdentity);
|
||||
|
||||
/* Set TAI */
|
||||
INT24_TO_OCTET_STRING(instance_p->tac, &userinfo_nr_p->tAI.tAC);
|
||||
MCC_MNC_TO_PLMNID(instance_p->plmn[ue_desc_p->selected_plmn_identity].mcc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].mnc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].mnc_digit_length,
|
||||
MCC_MNC_TO_PLMNID(instance_p->plmn[ue_desc_p->selected_plmn_identity].plmn.mcc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].plmn.mnc,
|
||||
instance_p->plmn[ue_desc_p->selected_plmn_identity].plmn.mnc_digit_length,
|
||||
&userinfo_nr_p->tAI.pLMNIdentity);
|
||||
}
|
||||
|
||||
@@ -454,16 +453,16 @@ int ngap_gNB_nas_uplink(instance_t instance, ngap_uplink_nas_t *ngap_uplink_nas_
|
||||
MACRO_GNB_ID_TO_CELL_IDENTITY(ngap_gNB_instance_p->gNB_id,
|
||||
0, // Cell ID
|
||||
&userinfo_nr_p->nR_CGI.nRCellIdentity);
|
||||
MCC_MNC_TO_TBCD(ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].mcc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].mnc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].mnc_digit_length,
|
||||
MCC_MNC_TO_TBCD(ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].plmn.mcc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].plmn.mnc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].plmn.mnc_digit_length,
|
||||
&userinfo_nr_p->nR_CGI.pLMNIdentity);
|
||||
|
||||
/* Set TAI */
|
||||
INT24_TO_OCTET_STRING(ngap_gNB_instance_p->tac, &userinfo_nr_p->tAI.tAC);
|
||||
MCC_MNC_TO_PLMNID(ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].mcc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].mnc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].mnc_digit_length,
|
||||
MCC_MNC_TO_PLMNID(ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].plmn.mcc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].plmn.mnc,
|
||||
ngap_gNB_instance_p->plmn[ue_context_p->selected_plmn_identity].plmn.mnc_digit_length,
|
||||
&userinfo_nr_p->tAI.pLMNIdentity);
|
||||
}
|
||||
if (ngap_gNB_encode_pdu(&pdu, &buffer, &length) < 0) {
|
||||
|
||||
@@ -135,8 +135,8 @@ ngap_gNB_nnsf_select_amf_by_plmn_id(ngap_gNB_instance_t *instance_p,
|
||||
/* Looking for served GUAMI PLMN Identity selected matching the one provided by the UE */
|
||||
STAILQ_FOREACH(guami_p, &amf_data_p->served_guami, next) {
|
||||
STAILQ_FOREACH(served_plmn_p, &guami_p->served_plmns, next) {
|
||||
if ((served_plmn_p->mcc == instance_p->plmn[selected_plmn_identity].mcc)
|
||||
&& (served_plmn_p->mnc == instance_p->plmn[selected_plmn_identity].mnc)) {
|
||||
if ((served_plmn_p->mcc == instance_p->plmn[selected_plmn_identity].plmn.mcc)
|
||||
&& (served_plmn_p->mnc == instance_p->plmn[selected_plmn_identity].plmn.mnc)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -207,8 +207,8 @@ ngap_gNB_nnsf_select_amf_by_amf_setid(ngap_gNB_instance_t *instance_p,
|
||||
struct plmn_identity_s *served_plmn_p = NULL;
|
||||
|
||||
STAILQ_FOREACH(served_plmn_p, &guami_p->served_plmns, next) {
|
||||
if ((served_plmn_p->mcc == instance_p->plmn[selected_plmn_identity].mcc)
|
||||
&& (served_plmn_p->mnc == instance_p->plmn[selected_plmn_identity].mnc)) {
|
||||
if ((served_plmn_p->mcc == instance_p->plmn[selected_plmn_identity].plmn.mcc)
|
||||
&& (served_plmn_p->mnc == instance_p->plmn[selected_plmn_identity].plmn.mnc)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user