update it
This commit is contained in:
parent
17b464b4c6
commit
cfffd28893
|
@ -619,17 +619,14 @@ void emm_handle_s11_delete_session_request(mme_ue_t *mme_ue)
|
|||
sess = mme_sess_first(mme_ue);
|
||||
while (sess != NULL)
|
||||
{
|
||||
mme_bearer_t *bearer = mme_default_bearer_in_sess(sess);
|
||||
if (bearer != NULL)
|
||||
{
|
||||
rv = mme_s11_build_delete_session_request(&s11buf, sess);
|
||||
d_assert(rv == CORE_OK, return, "S11 build error");
|
||||
rv = mme_s11_build_delete_session_request(&s11buf, sess);
|
||||
d_assert(rv == CORE_OK, return, "S11 build error");
|
||||
|
||||
rv = mme_s11_send_to_sgw(sess->sgw,
|
||||
GTP_DELETE_SESSION_REQUEST_TYPE, sess->sgw_s11_teid,
|
||||
s11buf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
|
||||
rv = mme_s11_send_to_sgw(bearer->sgw,
|
||||
GTP_DELETE_SESSION_REQUEST_TYPE, sess->sgw_s11_teid,
|
||||
s11buf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
}
|
||||
sess = mme_sess_next(sess);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,7 +122,7 @@ void emm_state_operational(fsm_t *s, event_t *e)
|
|||
}
|
||||
else
|
||||
{
|
||||
mme_s11_handle_create_session_request(bearer);
|
||||
mme_s11_handle_create_session_request(sess);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -274,7 +274,7 @@ void emm_state_operational(fsm_t *s, event_t *e)
|
|||
}
|
||||
else
|
||||
{
|
||||
mme_s11_handle_create_session_request(bearer);
|
||||
mme_s11_handle_create_session_request(sess);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -52,12 +52,15 @@ void esm_handle_information_response(mme_bearer_t *bearer,
|
|||
nas_esm_information_response_t *esm_information_response)
|
||||
{
|
||||
mme_ue_t *mme_ue = NULL;
|
||||
mme_sess_t *sess = NULL;
|
||||
pkbuf_t *pkbuf = NULL;
|
||||
status_t rv;
|
||||
|
||||
d_assert(bearer, return, "Null param");
|
||||
mme_ue = bearer->mme_ue;
|
||||
d_assert(mme_ue, return, "Null param");
|
||||
sess = bearer->sess;
|
||||
d_assert(sess, return, "Null param");
|
||||
|
||||
if (esm_information_response->presencemask &
|
||||
NAS_ESM_INFORMATION_RESPONSE_ACCESS_POINT_NAME_PRESENT)
|
||||
|
@ -80,10 +83,10 @@ void esm_handle_information_response(mme_bearer_t *bearer,
|
|||
bearer->ue_pco_len);
|
||||
}
|
||||
|
||||
rv = mme_s11_build_create_session_request(&pkbuf, bearer);
|
||||
rv = mme_s11_build_create_session_request(&pkbuf, sess);
|
||||
d_assert(rv == CORE_OK, return, "S11 build error");
|
||||
|
||||
rv = mme_s11_send_to_sgw(bearer->sgw,
|
||||
rv = mme_s11_send_to_sgw(sess->sgw,
|
||||
GTP_CREATE_SESSION_REQUEST_TYPE, 0, pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ void esm_state_operational(fsm_t *s, event_t *e)
|
|||
}
|
||||
else
|
||||
{
|
||||
mme_s11_handle_create_session_request(bearer);
|
||||
mme_s11_handle_create_session_request(sess);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -116,7 +116,7 @@ void esm_state_operational(fsm_t *s, event_t *e)
|
|||
case NAS_ESM_INFORMATION_RESPONSE:
|
||||
{
|
||||
/* FIXME : SGW Selection */
|
||||
bearer->sgw = mme_sgw_first();
|
||||
sess->sgw = mme_sgw_first();
|
||||
|
||||
d_trace(3, "[NAS] ESM information response : "
|
||||
"UE[%s] --> ESM[%d]\n",
|
||||
|
|
|
@ -269,6 +269,7 @@ typedef struct _mme_sess_t {
|
|||
list_t bearer_list;
|
||||
|
||||
/* Related Context */
|
||||
mme_sgw_t *sgw;
|
||||
mme_ue_t *mme_ue;
|
||||
} mme_sess_t;
|
||||
|
||||
|
@ -292,7 +293,6 @@ typedef struct _mme_bearer_t {
|
|||
int pgw_pco_len;
|
||||
|
||||
/* Related Context */
|
||||
mme_sgw_t *sgw;
|
||||
pdn_t *pdn;
|
||||
|
||||
mme_ue_t *mme_ue;
|
||||
|
|
|
@ -8,14 +8,13 @@
|
|||
#include "types.h"
|
||||
#include "mme_context.h"
|
||||
|
||||
status_t mme_s11_build_create_session_request(
|
||||
pkbuf_t **pkbuf, mme_bearer_t *bearer)
|
||||
status_t mme_s11_build_create_session_request(pkbuf_t **pkbuf, mme_sess_t *sess)
|
||||
{
|
||||
status_t rv;
|
||||
pdn_t *pdn = NULL;
|
||||
mme_sgw_t *sgw = NULL;
|
||||
mme_ue_t *mme_ue = NULL;
|
||||
mme_sess_t *sess = NULL;
|
||||
mme_bearer_t *bearer = NULL;
|
||||
gtp_message_t gtp_message;
|
||||
gtp_create_session_request_t *req = >p_message.create_session_request;
|
||||
|
||||
|
@ -27,13 +26,13 @@ status_t mme_s11_build_create_session_request(
|
|||
char bearer_qos_buf[GTP_BEARER_QOS_LEN];
|
||||
gtp_ue_timezone_t ue_timezone;
|
||||
|
||||
d_assert(sess, return CORE_ERROR, "Null param");
|
||||
sgw = sess->sgw;
|
||||
d_assert(sgw, return CORE_ERROR, "Null param");
|
||||
bearer = mme_default_bearer_in_sess(sess);
|
||||
d_assert(bearer, return CORE_ERROR, "Null param");
|
||||
pdn = bearer->pdn;
|
||||
d_assert(pdn, return CORE_ERROR, "Null param");
|
||||
sgw = bearer->sgw;
|
||||
d_assert(sgw, return CORE_ERROR, "Null param");
|
||||
sess = bearer->sess;
|
||||
d_assert(sess, return CORE_ERROR, "Null param");
|
||||
mme_ue = sess->mme_ue;
|
||||
d_assert(mme_ue, return CORE_ERROR, "Null param");
|
||||
d_assert(mme_ue->enb_ue, return CORE_ERROR, "Null param");
|
||||
|
|
|
@ -8,7 +8,7 @@ extern "C" {
|
|||
#endif /* __cplusplus */
|
||||
|
||||
CORE_DECLARE(status_t) mme_s11_build_create_session_request(
|
||||
pkbuf_t **pkbuf, mme_bearer_t *bearer);
|
||||
pkbuf_t **pkbuf, mme_sess_t *sess);
|
||||
CORE_DECLARE(status_t) mme_s11_build_modify_bearer_request(
|
||||
pkbuf_t **pkbuf, mme_bearer_t *bearer);
|
||||
CORE_DECLARE(status_t) mme_s11_build_delete_session_request(
|
||||
|
|
|
@ -13,16 +13,16 @@
|
|||
#include "mme_s11_handler.h"
|
||||
#include "mme_s11_path.h"
|
||||
|
||||
void mme_s11_handle_create_session_request(mme_bearer_t *bearer)
|
||||
void mme_s11_handle_create_session_request(mme_sess_t *sess)
|
||||
{
|
||||
status_t rv;
|
||||
pkbuf_t *pkbuf = NULL;
|
||||
|
||||
rv = mme_s11_build_create_session_request(&pkbuf, bearer);
|
||||
rv = mme_s11_build_create_session_request(&pkbuf, sess);
|
||||
d_assert(rv == CORE_OK, return,
|
||||
"S11 build error");
|
||||
|
||||
rv = mme_s11_send_to_sgw(bearer->sgw,
|
||||
rv = mme_s11_send_to_sgw(sess->sgw,
|
||||
GTP_CREATE_SESSION_REQUEST_TYPE, 0, pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
}
|
||||
|
|
|
@ -9,7 +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_request(mme_sess_t *sess);
|
||||
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(
|
||||
|
|
|
@ -420,7 +420,7 @@ void s1ap_handle_initial_context_setup_response(
|
|||
rv = mme_s11_build_modify_bearer_request(&pkbuf, bearer);
|
||||
d_assert(rv == CORE_OK, return, "S11 build error");
|
||||
|
||||
rv = mme_s11_send_to_sgw(bearer->sgw,
|
||||
rv = mme_s11_send_to_sgw(sess->sgw,
|
||||
GTP_MODIFY_BEARER_REQUEST_TYPE, sess->sgw_s11_teid, pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
}
|
||||
|
@ -453,35 +453,28 @@ void s1ap_handle_ue_context_release_request(
|
|||
cause = ies->cause.choice.radioNetwork;
|
||||
if (cause == S1ap_CauseRadioNetwork_user_inactivity)
|
||||
{
|
||||
int release_access_bearer_needed = 0;
|
||||
pkbuf_t *pkbuf = NULL;
|
||||
mme_ue_t *mme_ue = enb_ue->mme_ue;
|
||||
status_t rv;
|
||||
|
||||
if (mme_ue)
|
||||
if (MME_UE_HAVE_SESSION(mme_ue))
|
||||
{
|
||||
mme_sess_t *sess = mme_sess_first(mme_ue);
|
||||
while (sess != NULL)
|
||||
{
|
||||
mme_bearer_t *bearer = mme_default_bearer_in_sess(sess);
|
||||
if (bearer != NULL)
|
||||
{
|
||||
rv = mme_s11_build_release_access_bearers_request(
|
||||
&pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 build error");
|
||||
rv = mme_s11_build_release_access_bearers_request(
|
||||
&pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 build error");
|
||||
|
||||
rv = mme_s11_send_to_sgw(bearer->sgw,
|
||||
GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE,
|
||||
sess->sgw_s11_teid, pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
rv = mme_s11_send_to_sgw(sess->sgw,
|
||||
GTP_RELEASE_ACCESS_BEARERS_REQUEST_TYPE,
|
||||
sess->sgw_s11_teid, pkbuf);
|
||||
d_assert(rv == CORE_OK, return, "S11 send error");
|
||||
|
||||
release_access_bearer_needed = 1;
|
||||
}
|
||||
sess = mme_sess_next(sess);
|
||||
}
|
||||
}
|
||||
|
||||
if (!release_access_bearer_needed)
|
||||
else
|
||||
{
|
||||
s1ap_handle_release_access_bearers_response(enb_ue);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue