mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-02 04:53:37 +00:00
MME_UE Context is not deleted even thought Detach Request(switch-off case)
This commit is contained in:
@@ -28,6 +28,8 @@ extern "C" {
|
||||
memcpy((__dST)->buffer, (__sRC)->buffer, (__dST)->length); \
|
||||
} while(0)
|
||||
|
||||
#define NAS_KSI_NO_KEY_IS_AVAILABLE 0x7
|
||||
|
||||
/* 9.9.2.0 Additional information
|
||||
* O TLV 3-n */
|
||||
#define NAX_MAX_ADDITIONAL_INFORMATION_LEN 255
|
||||
|
||||
@@ -309,8 +309,6 @@ status_t emm_build_tau_accept(pkbuf_t **emmbuf, mme_ue_t *mme_ue)
|
||||
/* Set T3412 */
|
||||
tau_accept->presencemask |=
|
||||
NAS_TRACKING_AREA_UPDATE_ACCEPT_T3412_VALUE_PRESENT ;
|
||||
|
||||
/* FIXME: Use the value from configuration */
|
||||
tau_accept->t3412_value.unit = NAS_GRPS_TIMER_UNIT_MULTIPLES_OF_DECI_HH;
|
||||
tau_accept->t3412_value.value = 9;
|
||||
|
||||
@@ -329,7 +327,6 @@ status_t emm_build_tau_accept(pkbuf_t **emmbuf, mme_ue_t *mme_ue)
|
||||
/* Set EPS bearer context status */
|
||||
tau_accept->presencemask |=
|
||||
NAS_TRACKING_AREA_UPDATE_ACCEPT_EPS_BEARER_CONTEXT_STATUS_PRESENT;
|
||||
|
||||
tau_accept->eps_bearer_context_status.length = 2;
|
||||
tau_accept->eps_bearer_context_status.ebi5 =
|
||||
(mme_bearer_find_by_ue_ebi(mme_ue, 5) ? 1 : 0);
|
||||
@@ -342,26 +339,19 @@ status_t emm_build_tau_accept(pkbuf_t **emmbuf, mme_ue_t *mme_ue)
|
||||
/* Set T3402 */
|
||||
tau_accept->presencemask |=
|
||||
NAS_TRACKING_AREA_UPDATE_ACCEPT_T3402_VALUE_PRESENT;
|
||||
|
||||
/* FIXME: Use the value from configuration */
|
||||
tau_accept->t3402_value.unit = NAS_GRPS_TIMER_UNIT_MULTIPLES_OF_1_MM;
|
||||
tau_accept->t3402_value.value = 12;
|
||||
|
||||
/* Set T3423 */
|
||||
tau_accept->presencemask |=
|
||||
NAS_TRACKING_AREA_UPDATE_ACCEPT_T3423_VALUE_PRESENT;
|
||||
|
||||
/* FIXME: Use the value from configuration */
|
||||
tau_accept->t3423_value.unit = NAS_GRPS_TIMER_UNIT_MULTIPLES_OF_DECI_HH;
|
||||
tau_accept->t3423_value.value = 9;
|
||||
|
||||
/* Set EPS network feature support */
|
||||
tau_accept->presencemask |=
|
||||
NAS_TRACKING_AREA_UPDATE_ACCEPT_EPS_NETWORK_FEATURE_SUPPORT_PRESENT;
|
||||
|
||||
tau_accept->eps_network_feature_support.length = 1;
|
||||
tau_accept->eps_network_feature_support.esr_ps = 1;
|
||||
tau_accept->eps_network_feature_support.epc_lcs = 1;
|
||||
tau_accept->eps_network_feature_support.ims_vops = 1;
|
||||
|
||||
d_assert(nas_security_encode(emmbuf, mme_ue, &message) == CORE_OK &&
|
||||
|
||||
@@ -38,6 +38,9 @@ status_t emm_handle_attach_request(
|
||||
d_assert(esm_message_container, return CORE_ERROR, "Null param");
|
||||
d_assert(esm_message_container->length, return CORE_ERROR, "Null param");
|
||||
|
||||
d_trace(5, " KSI[%d]\n", eps_attach_type->nas_key_set_identifier);
|
||||
if (eps_attach_type->nas_key_set_identifier == NAS_KSI_NO_KEY_IS_AVAILABLE)
|
||||
CLEAR_SECURITY_CONTEXT(mme_ue);
|
||||
/*
|
||||
* ATTACH_REQUEST
|
||||
* Clear EBI generator
|
||||
@@ -60,12 +63,6 @@ status_t emm_handle_attach_request(
|
||||
mme_ue->nhcc = 1;
|
||||
}
|
||||
|
||||
d_trace(5, " KSI[%d]\n", eps_attach_type->nas_key_set_identifier);
|
||||
if (eps_attach_type->nas_key_set_identifier == 7)
|
||||
{
|
||||
CLEAR_SECURITY_CONTEXT(mme_ue);
|
||||
}
|
||||
|
||||
/* Set EPS Attach Type */
|
||||
memcpy(&mme_ue->nas_eps.attach, eps_attach_type,
|
||||
sizeof(nas_eps_attach_type_t));
|
||||
|
||||
@@ -194,7 +194,6 @@ status_t nas_send_detach_accept(mme_ue_t *mme_ue)
|
||||
status_t rv;
|
||||
enb_ue_t *enb_ue = NULL;
|
||||
pkbuf_t *emmbuf = NULL;
|
||||
c_uint8_t ue_ctx_rel_action = S1AP_UE_CTX_REL_NO_ACTION;
|
||||
|
||||
d_assert(mme_ue, return CORE_ERROR, "Null param");
|
||||
enb_ue = mme_ue->enb_ue;
|
||||
@@ -210,13 +209,10 @@ status_t nas_send_detach_accept(mme_ue_t *mme_ue)
|
||||
rv = nas_send_to_downlink_nas_transport(mme_ue, emmbuf);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "nas send failed");
|
||||
}
|
||||
else
|
||||
{
|
||||
ue_ctx_rel_action = S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT;
|
||||
}
|
||||
|
||||
rv = s1ap_send_ue_context_release_command(enb_ue,
|
||||
S1ap_Cause_PR_nas, S1ap_CauseNas_detach, ue_ctx_rel_action, 0);
|
||||
S1ap_Cause_PR_nas, S1ap_CauseNas_detach,
|
||||
S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "s1ap send error");
|
||||
|
||||
return CORE_OK;
|
||||
|
||||
@@ -346,11 +346,13 @@ void s1ap_handle_initial_context_setup_failure(
|
||||
mme_ue = enb_ue->mme_ue;
|
||||
d_assert(mme_ue, return,);
|
||||
|
||||
d_error("[MME] Initial context setup failure : "
|
||||
"ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d] ENB[%s:%d]\n",
|
||||
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id,
|
||||
d_warn("[MME] Initial context setup failure");
|
||||
d_warn(" IP[%s] ENB_ID[%d]",
|
||||
CORE_ADDR(enb->addr, buf), enb->enb_id);
|
||||
|
||||
d_warn(" ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d]",
|
||||
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id);
|
||||
d_warn(" Cause[Group:%d Cause:%d]",
|
||||
ies->cause.present, ies->cause.choice.radioNetwork);
|
||||
if (MME_HAVE_SGW_S11_PATH(mme_ue))
|
||||
{
|
||||
rv = mme_gtp_send_delete_all_sessions(mme_ue);
|
||||
@@ -489,12 +491,13 @@ void s1ap_handle_ue_context_release_request(
|
||||
}
|
||||
else
|
||||
{
|
||||
d_error("[MME] UE Context release request : "
|
||||
"RadioNetwork Cause[%d] "
|
||||
"ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d] ENB[%s:%d]\n",
|
||||
ies->cause.choice.radioNetwork,
|
||||
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id,
|
||||
d_warn("[MME] UE Context release request");
|
||||
d_warn(" IP[%s] ENB_ID[%d]",
|
||||
CORE_ADDR(enb->addr, buf), enb->enb_id);
|
||||
d_warn(" ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d]",
|
||||
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id);
|
||||
d_warn(" Cause[RADIO_NETWORK Cause:%d]",
|
||||
ies->cause.choice.radioNetwork);
|
||||
if (MME_HAVE_SGW_S11_PATH(mme_ue))
|
||||
{
|
||||
rv = mme_gtp_send_delete_all_sessions(mme_ue);
|
||||
@@ -515,12 +518,13 @@ void s1ap_handle_ue_context_release_request(
|
||||
{
|
||||
mme_ue_t *mme_ue = enb_ue->mme_ue;
|
||||
|
||||
d_error("[MME] UE Context release request : "
|
||||
"Transport Cause[%d] "
|
||||
"ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d] ENB[%s:%d]\n",
|
||||
ies->cause.choice.radioNetwork,
|
||||
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id,
|
||||
d_warn("[MME] UE Context release request");
|
||||
d_warn(" IP[%s] ENB_ID[%d]",
|
||||
CORE_ADDR(enb->addr, buf), enb->enb_id);
|
||||
d_warn(" ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d]",
|
||||
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id);
|
||||
d_warn(" Cause[TRANSPORT Cause:%d]",
|
||||
ies->cause.choice.radioNetwork);
|
||||
if (MME_HAVE_SGW_S11_PATH(mme_ue))
|
||||
{
|
||||
rv = mme_gtp_send_delete_all_sessions(mme_ue);
|
||||
|
||||
Reference in New Issue
Block a user