MME_UE Context is not deleted even thought Detach Request(switch-off case)

This commit is contained in:
Sukchan Lee
2018-01-28 13:50:21 +09:00
parent 28237ea6af
commit 7b2355a40f
5 changed files with 25 additions and 36 deletions

View File

@@ -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

View File

@@ -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 &&

View File

@@ -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));

View File

@@ -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;

View File

@@ -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);