update it
This commit is contained in:
parent
b0be746292
commit
08e459a632
|
@ -13,8 +13,8 @@
|
|||
#include "emm_handler.h"
|
||||
#include "emm_build.h"
|
||||
#include "esm_handler.h"
|
||||
#include "mme_s11_handler.h"
|
||||
#include "nas_path.h"
|
||||
#include "mme_gtp_path.h"
|
||||
|
||||
static void emm_state_attach_request(fsm_t *s, event_t *e,
|
||||
mme_ue_t *mme_ue, nas_message_t *message);
|
||||
|
@ -82,6 +82,7 @@ void emm_state_detached(fsm_t *s, event_t *e)
|
|||
|
||||
void emm_state_identity(fsm_t *s, event_t *e)
|
||||
{
|
||||
status_t rv;
|
||||
mme_ue_t *mme_ue = NULL;
|
||||
|
||||
d_assert(s, return, "Null param");
|
||||
|
@ -96,7 +97,6 @@ void emm_state_identity(fsm_t *s, event_t *e)
|
|||
{
|
||||
case FSM_ENTRY_SIG:
|
||||
{
|
||||
status_t rv;
|
||||
pkbuf_t *emmbuf = NULL;
|
||||
|
||||
rv = emm_build_identity_request(&emmbuf, mme_ue);
|
||||
|
@ -139,7 +139,9 @@ void emm_state_identity(fsm_t *s, event_t *e)
|
|||
{
|
||||
if (MME_HAVE_SGW_S11_PATH(mme_ue))
|
||||
{
|
||||
mme_s11_handle_delete_all_sessions_in_ue(mme_ue);
|
||||
rv = mme_gtp_send_delete_all_sessions(mme_ue);
|
||||
d_assert(rv == CORE_OK, break,
|
||||
"mme_gtp_send_delete_all_sessions failed");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -431,7 +433,10 @@ void emm_state_attached(fsm_t *s, event_t *e)
|
|||
|
||||
if (MME_HAVE_SGW_S11_PATH(mme_ue))
|
||||
{
|
||||
mme_s11_handle_delete_all_sessions_in_ue(mme_ue);
|
||||
status_t rv;
|
||||
rv = mme_gtp_send_delete_all_sessions(mme_ue);
|
||||
d_assert(rv == CORE_OK, break,
|
||||
"mme_gtp_send_delete_all_sessions failed");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -526,6 +531,8 @@ void emm_state_exception(fsm_t *s, event_t *e)
|
|||
static void emm_state_attach_request(fsm_t *s, event_t *e,
|
||||
mme_ue_t *mme_ue, nas_message_t *message)
|
||||
{
|
||||
status_t rv;
|
||||
|
||||
d_assert(s, return, "Null param");
|
||||
d_assert(e, return, "Null param");
|
||||
d_assert(mme_ue, return, "Null param");
|
||||
|
@ -550,7 +557,6 @@ static void emm_state_attach_request(fsm_t *s, event_t *e,
|
|||
{
|
||||
if (SECURITY_CONTEXT_IS_VALID(mme_ue))
|
||||
{
|
||||
status_t rv;
|
||||
rv = nas_send_emm_to_esm(mme_ue, &mme_ue->pdn_connectivity_request);
|
||||
d_assert(rv == CORE_OK,, "nas_send_emm_to_esm failed");
|
||||
FSM_TRAN(s, &emm_state_default_esm);
|
||||
|
@ -559,7 +565,9 @@ static void emm_state_attach_request(fsm_t *s, event_t *e,
|
|||
{
|
||||
if (MME_HAVE_SGW_S11_PATH(mme_ue))
|
||||
{
|
||||
mme_s11_handle_delete_all_sessions_in_ue(mme_ue);
|
||||
rv = mme_gtp_send_delete_all_sessions(mme_ue);
|
||||
d_assert(rv == CORE_OK, return,
|
||||
"mme_gtp_send_delete_all_sessions failed");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -154,6 +154,34 @@ status_t mme_gtp_send_delete_session_request(mme_sess_t *sess)
|
|||
return CORE_OK;
|
||||
}
|
||||
|
||||
status_t mme_gtp_send_delete_all_sessions(mme_ue_t *mme_ue)
|
||||
{
|
||||
status_t rv;
|
||||
mme_sess_t *sess = NULL, *next_sess = NULL;
|
||||
|
||||
d_assert(mme_ue, return CORE_ERROR, "Null param");
|
||||
sess = mme_sess_first(mme_ue);
|
||||
while (sess != NULL)
|
||||
{
|
||||
next_sess = mme_sess_next(sess);
|
||||
|
||||
if (MME_HAVE_SGW_S1U_PATH(sess))
|
||||
{
|
||||
rv = mme_gtp_send_delete_session_request(sess);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR,
|
||||
"mme_gtp_send_delete_session_request error");
|
||||
}
|
||||
else
|
||||
{
|
||||
mme_sess_remove(sess);
|
||||
}
|
||||
|
||||
sess = next_sess;
|
||||
}
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
|
||||
status_t mme_gtp_send_create_bearer_response(mme_bearer_t *bearer)
|
||||
{
|
||||
status_t rv;
|
||||
|
|
|
@ -16,6 +16,8 @@ CORE_DECLARE(status_t) mme_gtp_send_modify_bearer_request(
|
|||
mme_bearer_t *bearer);
|
||||
CORE_DECLARE(status_t) mme_gtp_send_delete_session_request(
|
||||
mme_sess_t *sess);
|
||||
CORE_DECLARE(status_t) mme_gtp_send_delete_all_sessions(
|
||||
mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(status_t) mme_gtp_send_create_bearer_response(
|
||||
mme_bearer_t *bearer);
|
||||
CORE_DECLARE(status_t) mme_gtp_send_release_access_bearers_response(
|
||||
|
|
|
@ -124,59 +124,6 @@ void mme_s11_handle_modify_bearer_response(
|
|||
d_assert(rv == CORE_OK, return, "xact_commit error");
|
||||
}
|
||||
|
||||
void mme_s11_handle_delete_all_sessions_in_ue(mme_ue_t *mme_ue)
|
||||
{
|
||||
status_t rv;
|
||||
mme_sess_t *sess = NULL, *next_sess = NULL;
|
||||
|
||||
d_assert(mme_ue, return, "Null param");
|
||||
sess = mme_sess_first(mme_ue);
|
||||
while (sess != NULL)
|
||||
{
|
||||
next_sess = mme_sess_next(sess);
|
||||
|
||||
if (MME_HAVE_SGW_S1U_PATH(sess))
|
||||
{
|
||||
rv = mme_gtp_send_delete_session_request(sess);
|
||||
d_assert(rv == CORE_OK, return,
|
||||
"mme_gtp_send_delete_session_request error");
|
||||
}
|
||||
else
|
||||
{
|
||||
mme_sess_remove(sess);
|
||||
}
|
||||
|
||||
sess = next_sess;
|
||||
}
|
||||
}
|
||||
|
||||
void mme_s11_handle_delete_session_response(
|
||||
gtp_xact_t *xact, mme_ue_t *mme_ue, gtp_delete_session_response_t *rsp)
|
||||
{
|
||||
status_t rv;
|
||||
mme_sess_t *sess = NULL;
|
||||
|
||||
d_assert(xact, return, "Null param");
|
||||
d_assert(mme_ue, return, "Null param");
|
||||
d_assert(rsp, return, "Null param");
|
||||
sess = GTP_XACT_RETRIEVE_SESSION(xact);
|
||||
d_assert(sess, return, "Null param");
|
||||
|
||||
if (rsp->cause.presence == 0)
|
||||
{
|
||||
d_error("No Cause");
|
||||
return;
|
||||
}
|
||||
|
||||
d_trace(3, "[GTP] Delete Session Response : "
|
||||
"MME[%d] <-- SGW[%d]\n", mme_ue->mme_s11_teid, mme_ue->sgw_s11_teid);
|
||||
|
||||
mme_sess_remove(sess);
|
||||
|
||||
rv = gtp_xact_commit(xact);
|
||||
d_assert(rv == CORE_OK, return, "xact_commit error");
|
||||
}
|
||||
|
||||
void mme_s11_handle_create_bearer_request(
|
||||
gtp_xact_t *xact, mme_ue_t *mme_ue, gtp_create_bearer_request_t *req)
|
||||
{
|
||||
|
|
|
@ -15,7 +15,6 @@ CORE_DECLARE(void) mme_s11_handle_create_session_response(
|
|||
gtp_create_session_response_t *rsp);
|
||||
CORE_DECLARE(void) mme_s11_handle_modify_bearer_response(
|
||||
gtp_xact_t *xact, mme_ue_t *mme_ue, gtp_modify_bearer_response_t *rsp);
|
||||
CORE_DECLARE(void) mme_s11_handle_delete_all_sessions_in_ue(mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(void) mme_s11_handle_delete_session_response(
|
||||
gtp_xact_t *xact, mme_ue_t *mme_ue, gtp_delete_session_response_t *rsp);
|
||||
CORE_DECLARE(void) mme_s11_handle_create_bearer_request(
|
||||
|
|
|
@ -536,28 +536,7 @@ status_t s1ap_build_ue_context_release_commmand(
|
|||
ies->uE_S1AP_IDs.choice.mME_UE_S1AP_ID = enb_ue->mme_ue_s1ap_id;
|
||||
}
|
||||
|
||||
ies->cause.present = cause->present;
|
||||
switch(ies->cause.present)
|
||||
{
|
||||
case S1ap_Cause_PR_radioNetwork:
|
||||
ies->cause.choice.radioNetwork = cause->choice.radioNetwork;
|
||||
break;
|
||||
case S1ap_Cause_PR_transport:
|
||||
ies->cause.choice.transport = cause->choice.transport;
|
||||
break;
|
||||
case S1ap_Cause_PR_nas:
|
||||
ies->cause.choice.nas = cause->choice.nas;
|
||||
break;
|
||||
case S1ap_Cause_PR_protocol:
|
||||
ies->cause.choice.protocol = cause->choice.protocol;
|
||||
break;
|
||||
case S1ap_Cause_PR_misc:
|
||||
ies->cause.choice.misc = cause->choice.misc;
|
||||
break;
|
||||
default:
|
||||
d_error("Invalid cause type : %d", ies->cause.present);
|
||||
break;
|
||||
}
|
||||
s1ap_build_cause(&ies->cause, cause);
|
||||
|
||||
message.procedureCode = S1ap_ProcedureCode_id_UEContextRelease;
|
||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||
|
|
Loading…
Reference in New Issue