forked from acouzens/open5gs
Check Requested NSSAI during registration [#554]
This commit is contained in:
parent
9eea6fe583
commit
ef3b84f3f6
|
@ -197,6 +197,7 @@ int gmm_handle_registration_update(amf_ue_t *amf_ue,
|
|||
{
|
||||
amf_sess_t *sess = NULL;
|
||||
uint16_t psimask;
|
||||
int i = 0;
|
||||
|
||||
ogs_nas_5gs_tracking_area_identity_t *last_visited_registered_tai = NULL;
|
||||
ogs_nas_uplink_data_status_t *uplink_data_status = NULL;
|
||||
|
@ -225,6 +226,25 @@ int gmm_handle_registration_update(amf_ue_t *amf_ue,
|
|||
|
||||
amf_ue->num_of_requested_nssai = ogs_nas_parse_nssai(
|
||||
amf_ue->requested_nssai, ®istration_request->requested_nssai);
|
||||
|
||||
for (i = 0; i < amf_ue->num_of_requested_nssai; i++) {
|
||||
if (amf_find_s_nssai(
|
||||
&amf_ue->tai.plmn_id, &amf_ue->requested_nssai[i]))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == amf_ue->num_of_requested_nssai) {
|
||||
ogs_error("CHECK CONFIGURATION: Cannot find Requested NSSAI");
|
||||
for (i = 0; i < amf_ue->num_of_requested_nssai; i++) {
|
||||
ogs_error(" PLMN_ID[MCC:%d MNC:%d]",
|
||||
ogs_plmn_id_mcc(&amf_ue->tai.plmn_id),
|
||||
ogs_plmn_id_mnc(&amf_ue->tai.plmn_id));
|
||||
ogs_error(" S_NSSAI[SST:%d SD:0x%x]",
|
||||
amf_ue->requested_nssai[i].sst,
|
||||
amf_ue->requested_nssai[i].sd.v);
|
||||
}
|
||||
return OGS_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (registration_request->presencemask &
|
||||
|
@ -243,7 +263,8 @@ int gmm_handle_registration_update(amf_ue_t *amf_ue,
|
|||
}
|
||||
|
||||
if ((registration_request->presencemask &
|
||||
OGS_NAS_5GS_REGISTRATION_REQUEST_ALLOWED_PDU_SESSION_STATUS_PRESENT) == 0) {
|
||||
OGS_NAS_5GS_REGISTRATION_REQUEST_ALLOWED_PDU_SESSION_STATUS_PRESENT)
|
||||
== 0) {
|
||||
amf_ue->nas.present.allowed_pdu_session_status = 0;
|
||||
} else {
|
||||
amf_ue->nas.present.allowed_pdu_session_status = 1;
|
||||
|
@ -251,7 +272,7 @@ int gmm_handle_registration_update(amf_ue_t *amf_ue,
|
|||
}
|
||||
|
||||
if ((registration_request->presencemask &
|
||||
OGS_NAS_5GS_REGISTRATION_REQUEST_UPLINK_DATA_STATUS_PRESENT) == 0) {
|
||||
OGS_NAS_5GS_REGISTRATION_REQUEST_UPLINK_DATA_STATUS_PRESENT) == 0) {
|
||||
amf_ue->nas.present.uplink_data_status = 0;
|
||||
} else {
|
||||
amf_ue->nas.present.uplink_data_status = 1;
|
||||
|
|
|
@ -659,8 +659,15 @@ void gmm_state_security_mode(ogs_fsm_t *s, amf_event_t *e)
|
|||
break;
|
||||
}
|
||||
|
||||
gmm_handle_security_mode_complete(
|
||||
rv = gmm_handle_security_mode_complete(
|
||||
amf_ue, &nas_message->gmm.security_mode_complete);
|
||||
if (rv != OGS_OK) {
|
||||
ogs_error("[%s] Cannot handle NAS message", amf_ue->suci);
|
||||
nas_5gs_send_gmm_reject(amf_ue,
|
||||
OGS_5GMM_CAUSE_5GS_SERVICES_NOT_ALLOWED);
|
||||
OGS_FSM_TRAN(s, gmm_state_exception);
|
||||
break;
|
||||
}
|
||||
|
||||
ogs_kdf_kgnb_and_kn3iwf(
|
||||
amf_ue->kamf, amf_ue->ul_count.i32,
|
||||
|
|
|
@ -235,7 +235,7 @@ int amf_nsmf_pdu_session_handle_update_sm_context(
|
|||
ogs_error("[%s:%d] No N1 SM Content [%s]",
|
||||
amf_ue->supi, sess->psi, n1SmMsg->content_id);
|
||||
nas_5gs_send_back_5gsm_message(sess,
|
||||
OGS_5GSM_CAUSE_SEMANTICALLY_INCORRECT_MESSAGE);
|
||||
OGS_5GMM_CAUSE_SEMANTICALLY_INCORRECT_MESSAGE);
|
||||
return OGS_ERROR;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue