under re-archi

This commit is contained in:
Sukchan Lee 2017-08-10 17:02:07 +09:00
parent 1de4e8d446
commit 97f629da14
6 changed files with 65 additions and 89 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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