forked from acouzens/open5gs
[AMF] Support REREGISTRATION_REQUIRED in dereg notify
This commit is contained in:
parent
ead6f8e973
commit
b9f6432e54
|
@ -276,7 +276,8 @@ ogs_pkbuf_t *gmm_build_de_registration_accept(amf_ue_t *amf_ue)
|
|||
return nas_5gs_security_encode(amf_ue, &message);
|
||||
}
|
||||
|
||||
ogs_pkbuf_t *gmm_build_de_registration_request(amf_ue_t *amf_ue)
|
||||
ogs_pkbuf_t *gmm_build_de_registration_request(amf_ue_t *amf_ue,
|
||||
OpenAPI_deregistration_reason_e dereg_reason)
|
||||
{
|
||||
ogs_nas_5gs_message_t message;
|
||||
ogs_nas_5gs_deregistration_request_to_ue_t *dereg_req =
|
||||
|
@ -295,12 +296,16 @@ ogs_pkbuf_t *gmm_build_de_registration_request(amf_ue_t *amf_ue)
|
|||
message.gmm.h.message_type = OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE;
|
||||
|
||||
dereg_req->de_registration_type.switch_off = 1;
|
||||
dereg_req->de_registration_type.re_registration_required = 0;
|
||||
dereg_req->de_registration_type.re_registration_required =
|
||||
dereg_reason == OpenAPI_deregistration_reason_REREGISTRATION_REQUIRED;
|
||||
dereg_req->de_registration_type.access_type = OGS_ACCESS_TYPE_3GPP;
|
||||
|
||||
dereg_req->presencemask |=
|
||||
OGS_NAS_5GS_DEREGISTRATION_REQUEST_TO_UE_5GMM_CAUSE_PRESENT;
|
||||
dereg_req->gmm_cause = OGS_5GMM_CAUSE_5GS_SERVICES_NOT_ALLOWED;
|
||||
dereg_req->gmm_cause =
|
||||
(dereg_reason == OpenAPI_deregistration_reason_REREGISTRATION_REQUIRED
|
||||
? OGS_5GMM_CAUSE_IMPLICITLY_DE_REGISTERED
|
||||
: OGS_5GMM_CAUSE_5GS_SERVICES_NOT_ALLOWED);
|
||||
|
||||
return nas_5gs_security_encode(amf_ue, &message);
|
||||
}
|
||||
|
|
|
@ -34,7 +34,8 @@ ogs_pkbuf_t *gmm_build_service_reject(
|
|||
amf_ue_t *amf_ue, ogs_nas_5gmm_cause_t gmm_cause);
|
||||
|
||||
ogs_pkbuf_t *gmm_build_de_registration_accept(amf_ue_t *amf_ue);
|
||||
ogs_pkbuf_t *gmm_build_de_registration_request(amf_ue_t *amf_ue);
|
||||
ogs_pkbuf_t *gmm_build_de_registration_request(amf_ue_t *amf_ue,
|
||||
OpenAPI_deregistration_reason_e dereg_reason);
|
||||
|
||||
ogs_pkbuf_t *gmm_build_identity_request(amf_ue_t *amf_ue);
|
||||
ogs_pkbuf_t *gmm_build_security_mode_command(amf_ue_t *amf_ue);
|
||||
|
|
|
@ -454,7 +454,8 @@ static void common_register_state(ogs_fsm_t *s, amf_event_t *e)
|
|||
} else {
|
||||
amf_ue->t3522.retry_count++;
|
||||
ogs_assert(OGS_OK ==
|
||||
nas_5gs_send_de_registration_request(amf_ue));
|
||||
nas_5gs_send_de_registration_request(amf_ue,
|
||||
OpenAPI_deregistration_reason_NULL));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -571,7 +571,8 @@ int amf_namf_callback_handle_dereg_notify(
|
|||
amf_ue->network_initiated_de_reg = true;
|
||||
|
||||
ogs_assert(OGS_OK ==
|
||||
nas_5gs_send_de_registration_request(amf_ue));
|
||||
nas_5gs_send_de_registration_request(amf_ue,
|
||||
DeregistrationData->dereg_reason));
|
||||
|
||||
amf_sbi_send_release_all_sessions(
|
||||
amf_ue, AMF_RELEASE_SM_CONTEXT_NO_STATE);
|
||||
|
|
|
@ -285,7 +285,8 @@ int nas_5gs_send_de_registration_accept(amf_ue_t *amf_ue)
|
|||
return rv;
|
||||
}
|
||||
|
||||
int nas_5gs_send_de_registration_request(amf_ue_t *amf_ue)
|
||||
int nas_5gs_send_de_registration_request(amf_ue_t *amf_ue,
|
||||
OpenAPI_deregistration_reason_e dereg_reason)
|
||||
{
|
||||
int rv;
|
||||
|
||||
|
@ -302,7 +303,7 @@ int nas_5gs_send_de_registration_request(amf_ue_t *amf_ue)
|
|||
gmmbuf = amf_ue->t3522.pkbuf;
|
||||
ogs_expect_or_return_val(gmmbuf, OGS_ERROR);
|
||||
} else {
|
||||
gmmbuf = gmm_build_de_registration_request(amf_ue);
|
||||
gmmbuf = gmm_build_de_registration_request(amf_ue, dereg_reason);
|
||||
ogs_expect_or_return_val(gmmbuf, OGS_ERROR);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,8 @@ int nas_5gs_send_service_reject(
|
|||
amf_ue_t *amf_ue, ogs_nas_5gmm_cause_t gmm_cause);
|
||||
|
||||
int nas_5gs_send_de_registration_accept(amf_ue_t *amf_ue);
|
||||
int nas_5gs_send_de_registration_request(amf_ue_t *amf_ue);
|
||||
int nas_5gs_send_de_registration_request(amf_ue_t *amf_ue,
|
||||
OpenAPI_deregistration_reason_e dereg_reason);
|
||||
|
||||
int nas_5gs_send_identity_request(amf_ue_t *amf_ue);
|
||||
|
||||
|
|
Loading…
Reference in New Issue