forked from acouzens/open5gs
S1AP STORE/CLEAR DATA is added
This commit is contained in:
parent
0bc90a7829
commit
ee72b5e938
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 { \
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue