mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-02 13:03:31 +00:00
clarify attach/tau/service reject interface
This commit is contained in:
@@ -80,7 +80,7 @@ status_t emm_handle_attach_request(
|
||||
EMM_CAUSE_TRACKING_AREA_NOT_ALLOWED,
|
||||
ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED,
|
||||
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT);
|
||||
return CORE_ERROR;
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
/* Store UE specific information */
|
||||
@@ -313,9 +313,8 @@ status_t emm_handle_identity_response(
|
||||
{
|
||||
/* Send TAU reject */
|
||||
nas_send_tau_reject(mme_ue,
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK);
|
||||
|
||||
return CORE_ERROR;
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK,
|
||||
S1AP_UE_CTX_REL_NO_ACTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -335,9 +334,8 @@ status_t emm_handle_identity_response(
|
||||
else
|
||||
{
|
||||
nas_send_service_reject(mme_ue,
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK);
|
||||
|
||||
return CORE_ERROR;
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK,
|
||||
S1AP_UE_CTX_REL_NO_ACTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -444,9 +442,8 @@ status_t emm_handle_service_request(
|
||||
else
|
||||
{
|
||||
nas_send_service_reject(mme_ue,
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK);
|
||||
|
||||
return CORE_ERROR;
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK,
|
||||
S1AP_UE_CTX_REL_NO_ACTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -509,8 +506,10 @@ status_t emm_handle_tau_request(
|
||||
if (served_tai_index < 0)
|
||||
{
|
||||
/* Send TAU reject */
|
||||
nas_send_tau_reject(mme_ue, EMM_CAUSE_TRACKING_AREA_NOT_ALLOWED);
|
||||
return CORE_ERROR;
|
||||
nas_send_tau_reject(mme_ue,
|
||||
EMM_CAUSE_TRACKING_AREA_NOT_ALLOWED,
|
||||
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT);
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
/* Store UE specific information */
|
||||
@@ -599,9 +598,8 @@ status_t emm_handle_tau_request(
|
||||
{
|
||||
/* Send TAU reject */
|
||||
nas_send_tau_reject(mme_ue,
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK);
|
||||
|
||||
return CORE_ERROR;
|
||||
EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK,
|
||||
S1AP_UE_CTX_REL_NO_ACTION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ void emm_state_detached(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.service_request);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_service_request() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -106,6 +107,7 @@ void emm_state_detached(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.attach_request);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_attach_request() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -134,6 +136,7 @@ void emm_state_detached(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.tracking_area_update_request);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_tau_request() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -225,6 +228,7 @@ void emm_state_identity(fsm_t *s, event_t *e)
|
||||
&message->emm.identity_response);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_identity_response failed()");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -497,6 +501,7 @@ void emm_state_default_esm(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.attach_complete);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_attach_complete() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -578,6 +583,7 @@ void emm_state_attached(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.service_request);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_service_request() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -615,6 +621,7 @@ void emm_state_attached(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.attach_request);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_attach_request() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
@@ -655,6 +662,7 @@ void emm_state_attached(fsm_t *s, event_t *e)
|
||||
mme_ue, &message->emm.tracking_area_update_request);
|
||||
if (rv != CORE_OK)
|
||||
{
|
||||
d_error("emm_handle_tau_request() failed");
|
||||
FSM_TRAN(s, emm_state_exception);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -381,7 +381,8 @@ status_t nas_send_tau_accept(mme_ue_t *mme_ue)
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
status_t nas_send_tau_reject(mme_ue_t *mme_ue, nas_emm_cause_t emm_cause)
|
||||
status_t nas_send_tau_reject(mme_ue_t *mme_ue,
|
||||
nas_emm_cause_t emm_cause, c_uint8_t ue_ctx_rel_action)
|
||||
{
|
||||
status_t rv;
|
||||
enb_ue_t *enb_ue = NULL;
|
||||
@@ -404,19 +405,19 @@ status_t nas_send_tau_reject(mme_ue_t *mme_ue, nas_emm_cause_t emm_cause)
|
||||
rv = nas_send_to_downlink_nas_transport(mme_ue, emmbuf);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "nas dl send error");
|
||||
|
||||
|
||||
/* FIXME : delay required before sending UE context release to make sure
|
||||
* that UE receive DL NAS ? */
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
enb_ue, &cause, ue_ctx_rel_action, 0);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "s1ap send error");
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
status_t nas_send_service_reject(mme_ue_t *mme_ue, nas_emm_cause_t emm_cause)
|
||||
status_t nas_send_service_reject(mme_ue_t *mme_ue,
|
||||
nas_emm_cause_t emm_cause, c_uint8_t ue_ctx_rel_action)
|
||||
{
|
||||
status_t rv;
|
||||
enb_ue_t *enb_ue = NULL;
|
||||
|
||||
@@ -38,10 +38,10 @@ CORE_DECLARE(status_t) nas_send_deactivate_bearer_context_request(
|
||||
|
||||
CORE_DECLARE(status_t) nas_send_tau_accept(mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(status_t) nas_send_tau_reject(mme_ue_t *mme_ue,
|
||||
nas_esm_cause_t emm_cause);
|
||||
nas_esm_cause_t emm_cause, c_uint8_t ue_ctx_rel_action);
|
||||
|
||||
CORE_DECLARE(status_t) nas_send_service_reject(mme_ue_t *mme_ue,
|
||||
nas_emm_cause_t emm_cause);
|
||||
nas_emm_cause_t emm_cause, c_uint8_t ue_ctx_rel_action);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user