S1AP STORE/CLEAR DATA is added

This commit is contained in:
Sukchan Lee 2017-09-13 11:57:17 +09:00
parent 0bc90a7829
commit ee72b5e938
7 changed files with 44 additions and 10 deletions

View File

@ -8,6 +8,28 @@
extern "C" {
#endif /* __cplusplus */
/* Octets */
#define S1AP_CLEAR_DATA(__dATA) \
do { \
d_assert((__dATA), , "Null param"); \
if ((__dATA)->buf) \
{ \
core_free((__dATA)->buf); \
(__dATA)->buf = NULL; \
(__dATA)->size = 0; \
} \
} while(0)
#define S1AP_STORE_DATA(__dST, __sRC) \
do { \
d_assert((__sRC),, "Null param") \
d_assert((__sRC)->buf,, "Null param") \
d_assert((__dST),, "Null param") \
S1AP_CLEAR_DATA(__dST); \
(__dST)->size = (__sRC)->size; \
(__dST)->buf = core_calloc(1, sizeof((__dST)->size)); \
memcpy((__dST)->buf, (__sRC)->buf, (__dST)->size); \
} while(0)
CORE_DECLARE(int) s1ap_decode_pdu(s1ap_message_t *message, pkbuf_t *pkbuf);
CORE_DECLARE(int) s1ap_encode_pdu(pkbuf_t **pkbuf, s1ap_message_t *message);
CORE_DECLARE(int) s1ap_free_pdu(s1ap_message_t *message);

View File

@ -1181,6 +1181,9 @@ status_t mme_ue_remove(mme_ue_t *mme_ue)
core_free(mme_ue->radio_capa);
}
/* Clear Transparent Container */
S1AP_CLEAR_DATA(&mme_ue->container);
mme_sess_remove_all(mme_ue);
mme_pdn_remove_all(mme_ue);

View File

@ -9,6 +9,7 @@
#include "core_hash.h"
#include "types.h"
#include "s1ap_message.h"
#include "nas_message.h"
#include "gtp_xact.h"
#include "s6a_message.h"
@ -268,6 +269,9 @@ struct _mme_ue_t {
/* Detach Request */
nas_detach_type_t detach_type;
/* S1AP Transparent Container */
OCTET_STRING_t container;
/* GTP Request/Response Counter */
#define GTP_COUNTER_INCREMENT(__mME, __tYPE) \
do { \

View File

@ -185,6 +185,8 @@ status_t mme_gtp_send_delete_session_request(mme_sess_t *sess)
rv = gtp_xact_commit(xact);
d_assert(rv == CORE_OK, return CORE_ERROR, "xact_commit error");
GTP_COUNTER_INCREMENT(mme_ue, GTP_COUNTER_DELETE_SESSION);
return CORE_OK;
}

View File

@ -150,32 +150,32 @@ void mme_s11_handle_delete_session_response(
if (FSM_CHECK(&mme_ue->sm, emm_state_authentication))
{
mme_sess_remove(sess);
if (mme_sess_first(mme_ue) == NULL)
{
GTP_COUNTER_CHECK(mme_ue, GTP_COUNTER_DELETE_SESSION,
CLEAR_SGW_S11_PATH(mme_ue);
mme_s6a_send_air(mme_ue);
}
);
mme_sess_remove(sess);
}
else if (FSM_CHECK(&mme_ue->sm, emm_state_detached))
{
mme_sess_remove(sess);
if (mme_sess_first(mme_ue) == NULL)
{
GTP_COUNTER_CHECK(mme_ue, GTP_COUNTER_DELETE_SESSION,
CLEAR_SGW_S11_PATH(mme_ue);
rv = nas_send_detach_accept(mme_ue);
d_assert(rv == CORE_OK, return, "nas_send_detach_accept failed");
);
}
mme_sess_remove(sess);
}
else if (FSM_CHECK(&mme_ue->sm, emm_state_attached))
{
mme_bearer_t *bearer = mme_default_bearer_in_sess(sess);
d_assert(bearer, return, "Null param");
GTP_COUNTER_CHECK(mme_ue, GTP_COUNTER_DELETE_SESSION,);
if (FSM_CHECK(&bearer->sm, esm_state_disconnect))
{
rv = nas_send_deactivate_bearer_context_request(bearer);
d_assert(rv == CORE_OK, return,
"nas_send_deactivate_bearer_context_request failed");

View File

@ -769,6 +769,9 @@ void s1ap_handle_handover_request_ack(mme_enb_t *enb, s1ap_message_t *message)
#endif
}
S1AP_STORE_DATA(
&mme_ue->container, &ies->target_ToSource_TransparentContainer);
#if 0
rv = s1ap_send_handover_request(mme_ue, ies);
d_assert(rv == CORE_OK,, "s1ap send error");

View File

@ -601,7 +601,7 @@ abts_suite *test_handover(abts_suite *suite)
{
suite = ADD_SUITE(suite)
#if 1
#if 0
abts_run_test(suite, handover_test1, NULL);
#else
abts_run_test(suite, handover_test2, NULL);