refine code

This commit is contained in:
Sukchan Lee 2018-01-29 22:38:53 +09:00
parent 795ecc8cf8
commit b77c9b8ff6
1 changed files with 37 additions and 74 deletions

View File

@ -363,7 +363,6 @@ void s1ap_handle_initial_context_setup_failure(
enb_ue = enb_ue_find_by_enb_ue_s1ap_id(enb, ies->eNB_UE_S1AP_ID);
d_assert(enb_ue, return, "No UE Context[%d]", ies->eNB_UE_S1AP_ID);
mme_ue = enb_ue->mme_ue;
d_assert(mme_ue, return,);
d_trace(3, "[MME] Initial context setup failure\n");
d_trace(5, " IP[%s] ENB_ID[%d]\n",
@ -373,7 +372,7 @@ void s1ap_handle_initial_context_setup_failure(
d_trace(5, " Cause[Group:%d Cause:%d]\n",
ies->cause.present, ies->cause.choice.radioNetwork);
if (FSM_CHECK(&mme_ue->sm, emm_state_registered))
if (mme_ue && FSM_CHECK(&mme_ue->sm, emm_state_registered))
{
d_trace(5, " Registered State\n");
@ -423,7 +422,7 @@ void s1ap_handle_initial_context_setup_failure(
}
else
{
d_trace(5, " NOT Registered State\n");
d_trace(5, " NOT Registered State[MME_UE:%p]\n", mme_ue);
if (MME_HAVE_SGW_S11_PATH(mme_ue))
{
d_trace(5, " WITH Delete Sesson\n");
@ -522,6 +521,8 @@ void s1ap_handle_ue_context_release_request(
char buf[CORE_ADDRSTRLEN];
enb_ue_t *enb_ue = NULL;
mme_ue_t *mme_ue = NULL;
S1ap_UEContextReleaseRequest_IEs_t *ies = NULL;
ies = &message->s1ap_UEContextReleaseRequest_IEs;
@ -532,7 +533,8 @@ void s1ap_handle_ue_context_release_request(
CORE_ADDR(enb->addr, buf), enb->enb_id);
enb_ue = enb_ue_find_by_mme_ue_s1ap_id(ies->mme_ue_s1ap_id);
d_assert(enb_ue, return, "No UE Context[%d]", ies->mme_ue_s1ap_id);
d_assert(enb_ue, return, "No ENB UE Context[%d]", ies->mme_ue_s1ap_id);
mme_ue = enb_ue->mme_ue;
d_trace(5, " ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d]\n",
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id);
@ -543,13 +545,9 @@ void s1ap_handle_ue_context_release_request(
{
case S1ap_Cause_PR_radioNetwork:
{
mme_ue_t *mme_ue = enb_ue->mme_ue;
if (ies->cause.choice.radioNetwork
== S1ap_CauseRadioNetwork_user_inactivity)
{
d_assert(mme_ue, return,);
if (MME_HAVE_SGW_S11_PATH(mme_ue))
{
rv = mme_gtp_send_release_access_bearers_request(mme_ue);
@ -562,86 +560,51 @@ void s1ap_handle_ue_context_release_request(
S1AP_UE_CTX_REL_NO_ACTION, 0);
d_assert(rv == CORE_OK, return, "s1ap send error");
}
}
else
{
if (FSM_CHECK(&mme_ue->sm, emm_state_registered))
{
d_trace(5, " Registered State\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_NO_ACTION, 0);
d_assert(rv == CORE_OK, return, "s1ap send error");
}
else
{
d_trace(5, " NOT Registered State\n");
if (MME_HAVE_SGW_S11_PATH(mme_ue))
{
d_trace(5, " WITH Delete Sesson\n");
rv = mme_gtp_send_delete_all_sessions(mme_ue);
d_assert(rv == CORE_OK,,
"mme_gtp_send_delete_all_sessions failed");
}
else
{
d_trace(5, " WITHOUT Delete Sesson\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT, 0);
d_assert(rv == CORE_OK,, "s1ap send error");
}
}
return;
}
break;
}
case S1ap_Cause_PR_transport:
{
mme_ue_t *mme_ue = enb_ue->mme_ue;
if (FSM_CHECK(&mme_ue->sm, emm_state_registered))
{
d_trace(5, " Registered State\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_NO_ACTION, 0);
d_assert(rv == CORE_OK,, "s1ap send error");
}
else
{
d_trace(5, " NOT Registered State\n");
if (MME_HAVE_SGW_S11_PATH(mme_ue))
{
d_trace(5, " WITH Delete Sesson\n");
rv = mme_gtp_send_delete_all_sessions(mme_ue);
d_assert(rv == CORE_OK,,
"mme_gtp_send_delete_all_sessions failed");
}
else
{
d_trace(5, " WITHOUT Delete Sesson\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT, 0);
d_assert(rv == CORE_OK,, "s1ap send error");
}
}
break;
}
case S1ap_Cause_PR_nas:
d_warn("Not implmented (nas cause : %d)", ies->cause.choice.nas);
d_warn("NAS-Cause[%d]", ies->cause.choice.nas);
break;
case S1ap_Cause_PR_protocol:
d_warn("Not implmented (protocol cause : %d)",
ies->cause.choice.protocol);
break;
case S1ap_Cause_PR_misc:
d_warn("Not implmented (misc cause : %d)", ies->cause.choice.misc);
break;
default:
d_warn("Invalid cause type : %d", ies->cause.present);
d_warn("Invalid cause group[%d]", ies->cause.present);
break;
}
if (mme_ue && FSM_CHECK(&mme_ue->sm, emm_state_registered))
{
d_trace(5, " Registered State\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_NO_ACTION, 0);
d_assert(rv == CORE_OK, return, "s1ap send error");
}
else
{
d_trace(5, " NOT Registered State[MME_UE:%p]\n", mme_ue);
if (MME_HAVE_SGW_S11_PATH(mme_ue))
{
d_trace(5, " WITH Delete Sesson\n");
rv = mme_gtp_send_delete_all_sessions(mme_ue);
d_assert(rv == CORE_OK,,
"mme_gtp_send_delete_all_sessions failed");
}
else
{
d_trace(5, " WITHOUT Delete Sesson\n");
rv = s1ap_send_ue_context_release_command(enb_ue,
S1ap_Cause_PR_nas, S1ap_CauseNas_normal_release,
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT, 0);
d_assert(rv == CORE_OK,, "s1ap send error");
}
}
}
void s1ap_handle_ue_context_release_complete(