From 97f629da142bf88f1e4c673b0ebb79ea2bc73b31 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Thu, 10 Aug 2017 17:02:07 +0900 Subject: [PATCH] under re-archi --- src/mme/emm_sm.c | 64 ++++++++++++--------------------------- src/mme/esm_handler.c | 8 ++--- src/mme/esm_handler.h | 2 +- src/mme/esm_sm.c | 64 +++++++++++++++------------------------ src/mme/mme_s11_handler.c | 15 +++++++++ src/mme/mme_s11_handler.h | 1 + 6 files changed, 65 insertions(+), 89 deletions(-) diff --git a/src/mme/emm_sm.c b/src/mme/emm_sm.c index b4f684d487..b386777e19 100644 --- a/src/mme/emm_sm.c +++ b/src/mme/emm_sm.c @@ -12,8 +12,7 @@ #include "emm_handler.h" #include "emm_build.h" #include "esm_handler.h" -#include "mme_s11_build.h" -#include "mme_s11_path.h" +#include "mme_s11_handler.h" void emm_state_initial(fsm_t *s, event_t *e) { @@ -107,24 +106,13 @@ void emm_state_operational(fsm_t *s, event_t *e) } else { - status_t rv; - pkbuf_t *pkbuf = NULL; - - rv = mme_s11_build_create_session_request( - &pkbuf, bearer); - d_assert(rv == CORE_OK, return, - "S11 build error"); - - rv = mme_s11_send_to_sgw(bearer->sgw, - GTP_CREATE_SESSION_REQUEST_TYPE, - 0, pkbuf); - d_assert(rv == CORE_OK, return, - "S11 send error"); + mme_s11_handle_create_session_request( + bearer); } } else { - esm_handle_information_request(mme_ue); + esm_handle_information_request(sess); } break; @@ -198,20 +186,8 @@ void emm_state_operational(fsm_t *s, event_t *e) if (SECURITY_CONTEXT_IS_VALID(mme_ue)) { - emm_handle_attach_accept(mme_ue); - } - else - { - if (MME_SESSION_IS_CREATED(mme_ue)) - { - emm_handle_s11_delete_session_request(mme_ue); - } - else - { - mme_s6a_send_air(mme_ue); - } -#if 0 nas_message_t *message = NULL; + message = &mme_ue->last_esm_message; d_assert(message, return, "Null param"); @@ -237,24 +213,13 @@ void emm_state_operational(fsm_t *s, event_t *e) } else { - status_t rv; - pkbuf_t *pkbuf = NULL; - - rv = mme_s11_build_create_session_request( - &pkbuf, bearer); - d_assert(rv == CORE_OK, return, - "S11 build error"); - - rv = mme_s11_send_to_sgw(bearer->sgw, - GTP_CREATE_SESSION_REQUEST_TYPE, - 0, pkbuf); - d_assert(rv == CORE_OK, return, - "S11 send error"); + mme_s11_handle_create_session_request( + bearer); } } else { - esm_handle_information_request(mme_ue); + esm_handle_information_request(sess); } break; @@ -264,8 +229,17 @@ void emm_state_operational(fsm_t *s, event_t *e) break; } } -#endif - + } + else + { + if (MME_SESSION_IS_CREATED(mme_ue)) + { + emm_handle_s11_delete_session_request(mme_ue); + } + else + { + mme_s6a_send_air(mme_ue); + } } break; diff --git a/src/mme/esm_handler.c b/src/mme/esm_handler.c index 4eff72e73c..649b12971d 100644 --- a/src/mme/esm_handler.c +++ b/src/mme/esm_handler.c @@ -29,16 +29,16 @@ void esm_handle_pdn_connectivity_request(mme_bearer_t *bearer, } } -void esm_handle_information_request(mme_ue_t *mme_ue) +void esm_handle_information_request(mme_sess_t *sess) { status_t rv; pkbuf_t *esmbuf = NULL; - mme_sess_t *sess = NULL; + mme_ue_t *mme_ue = NULL; mme_bearer_t *bearer = NULL; - d_assert(mme_ue, return, "Null param"); - sess = mme_sess_first(mme_ue); d_assert(sess, return, "Null param"); + mme_ue = sess->mme_ue; + d_assert(mme_ue, return, "Null param"); bearer = mme_default_bearer_in_sess(sess); d_assert(bearer, return, "Null param"); diff --git a/src/mme/esm_handler.h b/src/mme/esm_handler.h index f3444d6203..2c8618dc73 100644 --- a/src/mme/esm_handler.h +++ b/src/mme/esm_handler.h @@ -11,7 +11,7 @@ extern "C" { CORE_DECLARE(void) esm_handle_pdn_connectivity_request(mme_bearer_t *bearer, nas_pdn_connectivity_request_t *pdn_connectivity_request); -CORE_DECLARE(void) esm_handle_information_request(mme_ue_t *mme_ue); +CORE_DECLARE(void) esm_handle_information_request(mme_sess_t *sess); CORE_DECLARE(void) esm_handle_information_response(mme_bearer_t *bearer, nas_esm_information_response_t *bearer_information_response); diff --git a/src/mme/esm_sm.c b/src/mme/esm_sm.c index 1d16910975..bcb0e7be2d 100644 --- a/src/mme/esm_sm.c +++ b/src/mme/esm_sm.c @@ -9,8 +9,7 @@ #include "emm_handler.h" #include "esm_build.h" #include "esm_handler.h" -#include "mme_s11_build.h" -#include "mme_s11_path.h" +#include "mme_s11_handler.h" void esm_state_initial(fsm_t *s, event_t *e) { @@ -73,57 +72,44 @@ void esm_state_operational(fsm_t *s, event_t *e) "UE[%s] --> ESM[%d]\n", mme_ue->imsi_bcd, bearer->pti); - if (MME_UE_HAVE_IMSI(mme_ue)) + if (!MME_UE_HAVE_IMSI(mme_ue)) { - /* Known GUTI */ - if (SECURITY_CONTEXT_IS_VALID(mme_ue)) + /* Continue with Identity Response */ + break; + } + + /* Known GUTI */ + if (SECURITY_CONTEXT_IS_VALID(mme_ue)) + { + mme_sess_t *sess = bearer->sess; + d_assert(sess, return, "Null param"); + + if (MME_SESSION_HAVE_APN(sess)) { - mme_sess_t *sess = bearer->sess; - d_assert(sess, return, "Null param"); - - if (MME_SESSION_HAVE_APN(sess)) + if (MME_SESSION_IS_CREATED(mme_ue)) { - status_t rv; - pkbuf_t *pkbuf = NULL; - - if (MME_SESSION_IS_CREATED(mme_ue)) - { - emm_handle_attach_accept(mme_ue); - } - else - { - rv = mme_s11_build_create_session_request( - &pkbuf, bearer); - d_assert(rv == CORE_OK, return, - "S11 build error"); - - rv = mme_s11_send_to_sgw(bearer->sgw, - GTP_CREATE_SESSION_REQUEST_TYPE, - 0, pkbuf); - d_assert(rv == CORE_OK, return, - "S11 send error"); - } + emm_handle_attach_accept(mme_ue); } else { - esm_handle_information_request(mme_ue); + mme_s11_handle_create_session_request(bearer); } } else { - if (MME_SESSION_IS_CREATED(mme_ue)) - { - emm_handle_s11_delete_session_request(mme_ue); - } - else - { - mme_s6a_send_air(mme_ue); - } + esm_handle_information_request(sess); } } else { - /* Continue with Identity Response */ + if (MME_SESSION_IS_CREATED(mme_ue)) + { + emm_handle_s11_delete_session_request(mme_ue); + } + else + { + mme_s6a_send_air(mme_ue); + } } break; } diff --git a/src/mme/mme_s11_handler.c b/src/mme/mme_s11_handler.c index 2941c0c643..64fc76d234 100644 --- a/src/mme/mme_s11_handler.c +++ b/src/mme/mme_s11_handler.c @@ -11,6 +11,21 @@ #include "s1ap_path.h" #include "mme_s11_build.h" #include "mme_s11_handler.h" +#include "mme_s11_path.h" + +void mme_s11_handle_create_session_request(mme_bearer_t *bearer) +{ + status_t rv; + pkbuf_t *pkbuf = NULL; + + rv = mme_s11_build_create_session_request(&pkbuf, bearer); + d_assert(rv == CORE_OK, return, + "S11 build error"); + + rv = mme_s11_send_to_sgw(bearer->sgw, + GTP_CREATE_SESSION_REQUEST_TYPE, 0, pkbuf); + d_assert(rv == CORE_OK, return, "S11 send error"); +} void mme_s11_handle_create_session_response( mme_sess_t *sess, gtp_create_session_response_t *rsp) diff --git a/src/mme/mme_s11_handler.h b/src/mme/mme_s11_handler.h index e7c6469b7e..60af02073b 100644 --- a/src/mme/mme_s11_handler.h +++ b/src/mme/mme_s11_handler.h @@ -9,6 +9,7 @@ extern "C" { #endif /* __cplusplus */ +CORE_DECLARE(void) mme_s11_handle_create_session_request(mme_bearer_t *bearer); CORE_DECLARE(void) mme_s11_handle_create_session_response( mme_sess_t *sess, gtp_create_session_response_t *rsp); CORE_DECLARE(void) mme_s11_handle_modify_bearer_response(