change UE context release command/complete interface.
- Before : Based on EMM state, we decided call mme_ue_remove() or not - After : Explictly, user should set about calling the mme_ue_remove().
This commit is contained in:
parent
1498f6c015
commit
47dc5eec38
|
@ -78,7 +78,8 @@ status_t emm_handle_attach_request(
|
|||
nas_send_attach_reject(mme_ue,
|
||||
S1ap_CauseNas_unspecified,
|
||||
EMM_CAUSE_TRACKING_AREA_NOT_ALLOWED,
|
||||
ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED);
|
||||
ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED,
|
||||
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT);
|
||||
return CORE_ERROR;
|
||||
}
|
||||
|
||||
|
|
|
@ -515,7 +515,7 @@ void emm_state_default_esm(fsm_t *s, event_t *e)
|
|||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, 0);
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||
FSM_TRAN(s, &emm_state_attached);
|
||||
break;
|
||||
|
|
|
@ -159,10 +159,18 @@ struct _enb_ue_t {
|
|||
*
|
||||
* Save TAI and ECGI. And then, this will copy 'mme_ue_t' context later */
|
||||
struct {
|
||||
tai_t tai;
|
||||
e_cgi_t e_cgi;
|
||||
tai_t tai;
|
||||
e_cgi_t e_cgi;
|
||||
} nas;
|
||||
|
||||
/* Store by UE Context Release Command
|
||||
* Retrieve by UE Context Release Complete */
|
||||
#define S1AP_UE_CTX_REL_INVALID_ACTION 0
|
||||
#define S1AP_UE_CTX_REL_NO_ACTION 1
|
||||
#define S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT 2
|
||||
#define S1AP_UE_CTX_REL_DELETE_INDIRECT_TUNNEL 3
|
||||
c_uint8_t ue_ctx_rel_action;
|
||||
|
||||
/* Related Context */
|
||||
mme_enb_t *enb;
|
||||
mme_ue_t *mme_ue;
|
||||
|
|
|
@ -139,7 +139,8 @@ void mme_s11_handle_modify_bearer_response(
|
|||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
|
||||
rv = s1ap_send_ue_context_release_commmand(source_ue, &cause, 300);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
source_ue, &cause, S1AP_UE_CTX_REL_DELETE_INDIRECT_TUNNEL, 300);
|
||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||
);
|
||||
}
|
||||
|
@ -319,7 +320,8 @@ void mme_s11_handle_release_access_bearers_response(
|
|||
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(enb_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK,, "s1ap send error");
|
||||
}
|
||||
|
||||
|
|
|
@ -336,7 +336,8 @@ void mme_state_operational(fsm_t *s, event_t *e)
|
|||
rv = nas_send_attach_reject(mme_ue,
|
||||
S1ap_CauseNas_authentication_failure,
|
||||
EMM_CAUSE_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED,
|
||||
ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED);
|
||||
ESM_CAUSE_PROTOCOL_ERROR_UNSPECIFIED,
|
||||
S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT);
|
||||
d_assert(rv == CORE_OK,,
|
||||
"nas_send_attach_reject failed");
|
||||
|
||||
|
|
|
@ -101,7 +101,8 @@ status_t nas_send_attach_accept(mme_ue_t *mme_ue)
|
|||
|
||||
status_t nas_send_attach_reject(mme_ue_t *mme_ue,
|
||||
e_S1ap_CauseNas s1ap_cause_nas,
|
||||
nas_emm_cause_t emm_cause, nas_esm_cause_t esm_cause)
|
||||
nas_emm_cause_t emm_cause, nas_esm_cause_t esm_cause,
|
||||
c_uint8_t ue_ctx_rel_action)
|
||||
{
|
||||
status_t rv;
|
||||
mme_enb_t *enb = NULL;
|
||||
|
@ -134,7 +135,8 @@ status_t nas_send_attach_reject(mme_ue_t *mme_ue,
|
|||
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = s1ap_cause_nas;;
|
||||
rv = s1ap_send_ue_context_release_commmand(enb_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, ue_ctx_rel_action, 0);
|
||||
d_assert(rv == CORE_OK,, "s1ap send error");
|
||||
|
||||
return rv;
|
||||
|
@ -201,7 +203,8 @@ status_t nas_send_detach_accept(mme_ue_t *mme_ue)
|
|||
/* FIXME : delay is needed */
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_detach;
|
||||
rv = s1ap_send_ue_context_release_commmand(enb_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "s1ap send error");
|
||||
|
||||
return CORE_OK;
|
||||
|
@ -358,7 +361,8 @@ status_t nas_send_tau_accept(mme_ue_t *mme_ue)
|
|||
* that UE receive DL NAS ? */
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(enb_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "s1ap send error");
|
||||
}
|
||||
else
|
||||
|
@ -405,7 +409,8 @@ status_t nas_send_tau_reject(mme_ue_t *mme_ue, nas_emm_cause_t emm_cause)
|
|||
* that UE receive DL NAS ? */
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(enb_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "s1ap send error");
|
||||
|
||||
return CORE_OK;
|
||||
|
@ -438,7 +443,8 @@ status_t nas_send_service_reject(mme_ue_t *mme_ue, nas_emm_cause_t emm_cause)
|
|||
* that UE receive DL NAS ? */
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(enb_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return CORE_ERROR, "s1ap send error");
|
||||
|
||||
return CORE_OK;
|
||||
|
|
|
@ -18,7 +18,7 @@ CORE_DECLARE(status_t) nas_send_to_downlink_nas_transport(
|
|||
CORE_DECLARE(status_t) nas_send_attach_accept(mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(status_t) nas_send_attach_reject(mme_ue_t *mme_ue,
|
||||
e_S1ap_CauseNas s1ap_cause_nas, nas_emm_cause_t emm_cause,
|
||||
nas_esm_cause_t esm_cause);
|
||||
nas_esm_cause_t esm_cause, c_uint8_t ue_ctx_rel_action);
|
||||
|
||||
CORE_DECLARE(status_t) nas_send_authentication_request(
|
||||
mme_ue_t *mme_ue, e_utran_vector_t *e_utran_vector);
|
||||
|
|
|
@ -519,8 +519,9 @@ status_t s1ap_build_ue_context_release_commmand(
|
|||
|
||||
d_assert(s1apbuf && encoded >= 0, return CORE_ERROR,);
|
||||
|
||||
d_trace(3, "[S1AP] UE Context Release Command : "
|
||||
d_trace(3, "[S1AP] UE Context Release Command[%d:%d] : "
|
||||
"UE[mME-UE-S1AP-ID(%d)] <-- eNB[%s:%d]\n",
|
||||
ies->cause.present, ies->cause.choice.radioNetwork,
|
||||
enb_ue->mme_ue_s1ap_id,
|
||||
CORE_ADDR(enb_ue->enb->addr, buf), enb_ue->enb->enb_id);
|
||||
|
||||
|
|
|
@ -417,8 +417,9 @@ void s1ap_handle_ue_context_release_request(
|
|||
enb_ue = enb_ue_find_by_mme_ue_s1ap_id(ies->mme_ue_s1ap_id);
|
||||
d_assert(enb_ue, return, "No UE Context[%d]", ies->mme_ue_s1ap_id);
|
||||
|
||||
d_trace(3, "[S1AP] UE Context Release Request : "
|
||||
d_trace(3, "[S1AP] UE Context Release Request[%d:%d] : "
|
||||
"UE[mME-UE-S1AP-ID(%d)] --> eNB[%s:%d]\n",
|
||||
ies->cause.present, ies->cause.choice.radioNetwork,
|
||||
enb_ue->mme_ue_s1ap_id,
|
||||
CORE_ADDR(enb->addr, buf), enb->enb_id);
|
||||
|
||||
|
@ -444,7 +445,7 @@ void s1ap_handle_ue_context_release_request(
|
|||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, 0);
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||
}
|
||||
}
|
||||
|
@ -458,27 +459,16 @@ void s1ap_handle_ue_context_release_request(
|
|||
case S1ap_Cause_PR_transport:
|
||||
{
|
||||
S1ap_Cause_t cause;
|
||||
const char *cause_string = NULL;
|
||||
|
||||
if (ies->cause.choice.transport ==
|
||||
S1ap_CauseTransport_transport_resource_unavailable)
|
||||
cause_string = "Transport Resource Unavailable";
|
||||
else if (ies->cause.choice.transport ==
|
||||
S1ap_CauseTransport_unspecified)
|
||||
cause_string = "Unspecified";
|
||||
else
|
||||
cause_string = "Unknown";
|
||||
|
||||
|
||||
d_warn("[S1AP] UE Context Release Request(Transport Cause: %s[%d])",
|
||||
cause_string, ies->cause.choice.transport,
|
||||
d_warn("[S1AP] UE Context Release Request[Transport Cause: %d]",
|
||||
ies->cause.choice.transport,
|
||||
enb_ue->enb_ue_s1ap_id,
|
||||
CORE_ADDR(enb->addr, buf), enb->enb_id);
|
||||
|
||||
cause.present = S1ap_Cause_PR_nas;
|
||||
cause.choice.nas = S1ap_CauseNas_normal_release;
|
||||
rv = s1ap_send_ue_context_release_commmand(
|
||||
enb_ue, &cause, 0);
|
||||
enb_ue, &cause, S1AP_UE_CTX_REL_NO_ACTION, 0);
|
||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||
|
||||
break;
|
||||
|
@ -505,11 +495,9 @@ void s1ap_handle_ue_context_release_complete(
|
|||
status_t rv;
|
||||
char buf[CORE_ADDRSTRLEN];
|
||||
|
||||
c_uint8_t ue_ctx_rel_action = 0;
|
||||
enb_ue_t *enb_ue = NULL;
|
||||
mme_ue_t *mme_ue = NULL;
|
||||
mme_sess_t *sess = NULL;
|
||||
mme_bearer_t *bearer = NULL;
|
||||
int need_to_delete_indirect_tunnel = 0;
|
||||
S1ap_UEContextReleaseComplete_IEs_t *ies = NULL;
|
||||
|
||||
ies = &message->s1ap_UEContextReleaseComplete_IEs;
|
||||
|
@ -523,40 +511,36 @@ void s1ap_handle_ue_context_release_complete(
|
|||
enb_ue->mme_ue_s1ap_id,
|
||||
CORE_ADDR(enb->addr, buf), enb->enb_id);
|
||||
|
||||
ue_ctx_rel_action = enb_ue->ue_ctx_rel_action;
|
||||
enb_ue->ue_ctx_rel_action = S1AP_UE_CTX_REL_INVALID_ACTION;
|
||||
mme_ue = enb_ue->mme_ue;
|
||||
|
||||
enb_ue_remove(enb_ue);
|
||||
|
||||
mme_ue = enb_ue->mme_ue;
|
||||
if (mme_ue)
|
||||
{
|
||||
sess = mme_sess_first(mme_ue);
|
||||
while(sess)
|
||||
switch (ue_ctx_rel_action)
|
||||
{
|
||||
bearer = mme_bearer_first(sess);
|
||||
while(bearer)
|
||||
case S1AP_UE_CTX_REL_NO_ACTION:
|
||||
{
|
||||
if (MME_HAVE_SGW_DL_INDIRECT_TUNNEL(bearer) ||
|
||||
MME_HAVE_SGW_UL_INDIRECT_TUNNEL(bearer))
|
||||
{
|
||||
need_to_delete_indirect_tunnel = 1;
|
||||
}
|
||||
|
||||
bearer = mme_bearer_next(bearer);
|
||||
break;
|
||||
}
|
||||
sess = mme_sess_next(sess);
|
||||
}
|
||||
|
||||
if (need_to_delete_indirect_tunnel)
|
||||
{
|
||||
rv = mme_gtp_send_delete_indirect_data_forwarding_tunnel_request(
|
||||
mme_ue);
|
||||
d_assert(rv == CORE_OK, return, "gtp send error");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!FSM_CHECK(&mme_ue->sm, emm_state_detached) &&
|
||||
!FSM_CHECK(&mme_ue->sm, emm_state_attached))
|
||||
case S1AP_UE_CTX_REL_REMOVE_MME_UE_CONTEXT:
|
||||
{
|
||||
mme_ue_remove(mme_ue);
|
||||
break;
|
||||
}
|
||||
case S1AP_UE_CTX_REL_DELETE_INDIRECT_TUNNEL:
|
||||
{
|
||||
rv = mme_gtp_send_delete_indirect_data_forwarding_tunnel_request(
|
||||
mme_ue);
|
||||
d_assert(rv == CORE_OK, return, "gtp send error");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
d_assert(0, return, "Invalid action(%d)", ue_ctx_rel_action);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -914,7 +898,8 @@ void s1ap_handle_handover_failure(mme_enb_t *enb, s1ap_message_t *message)
|
|||
cause.present = S1ap_Cause_PR_radioNetwork;
|
||||
cause.choice.nas = S1ap_CauseRadioNetwork_ho_failure_in_target_EPC_eNB_or_target_system;
|
||||
|
||||
rv = s1ap_send_ue_context_release_commmand(target_ue, &cause, 0);
|
||||
rv = s1ap_send_ue_context_release_commmand(target_ue, &cause,
|
||||
S1AP_UE_CTX_REL_DELETE_INDIRECT_TUNNEL, 0);
|
||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||
|
||||
d_trace(3, "[S1AP] Handover Failure : "
|
||||
|
@ -957,7 +942,8 @@ void s1ap_handle_handover_cancel(mme_enb_t *enb, s1ap_message_t *message)
|
|||
cause.present = S1ap_Cause_PR_radioNetwork;
|
||||
cause.choice.nas = S1ap_CauseRadioNetwork_handover_cancelled;
|
||||
|
||||
rv = s1ap_send_ue_context_release_commmand(target_ue, &cause, 300);
|
||||
rv = s1ap_send_ue_context_release_commmand(target_ue, &cause,
|
||||
S1AP_UE_CTX_REL_DELETE_INDIRECT_TUNNEL, 300);
|
||||
d_assert(rv == CORE_OK, return, "s1ap send error");
|
||||
|
||||
d_trace(3, "[S1AP] Handover Cancel : "
|
||||
|
|
|
@ -235,13 +235,17 @@ status_t s1ap_send_initial_context_setup_request(mme_ue_t *mme_ue)
|
|||
}
|
||||
|
||||
status_t s1ap_send_ue_context_release_commmand(
|
||||
enb_ue_t *enb_ue, S1ap_Cause_t *cause, c_uint32_t delay)
|
||||
enb_ue_t *enb_ue, S1ap_Cause_t *cause, c_uint8_t action, c_uint32_t delay)
|
||||
{
|
||||
status_t rv;
|
||||
mme_enb_t *enb = NULL;
|
||||
pkbuf_t *s1apbuf = NULL;
|
||||
|
||||
d_assert(action != S1AP_UE_CTX_REL_INVALID_ACTION, return CORE_ERROR,
|
||||
"Should give valid action for UE Context Release Command");
|
||||
|
||||
d_assert(enb_ue, return CORE_ERROR, "Null param");
|
||||
enb_ue->ue_ctx_rel_action = action;
|
||||
d_assert(cause, return CORE_ERROR, "Null param");
|
||||
enb = enb_ue->enb;
|
||||
d_assert(enb, return CORE_ERROR, "Null param");
|
||||
|
|
|
@ -35,7 +35,7 @@ CORE_DECLARE(status_t) s1ap_send_to_esm(mme_ue_t *mme_ue, pkbuf_t *esmbuf);
|
|||
CORE_DECLARE(status_t) s1ap_send_initial_context_setup_request(
|
||||
mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(status_t) s1ap_send_ue_context_release_commmand(
|
||||
enb_ue_t *enb_ue, S1ap_Cause_t *cause, c_uint32_t delay);
|
||||
enb_ue_t *enb_ue, S1ap_Cause_t *cause, c_uint8_t action, c_uint32_t delay);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_send_path_switch_ack(mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(status_t) s1ap_send_path_switch_failure(mme_enb_t *enb,
|
||||
|
|
|
@ -393,6 +393,8 @@ static void attach_test1(abts_case *tc, void *data)
|
|||
rv = tests1ap_enb_send(sock, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
|
||||
core_sleep(time_from_msec(300));
|
||||
|
||||
/* eNB disonncect from MME */
|
||||
rv = tests1ap_enb_close(sock);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
|
|
|
@ -169,7 +169,7 @@ status_t tests1ap_build_initial_ue_msg(pkbuf_t **pkbuf, int i)
|
|||
"004300060000f110 3039006440080055 f5010019d0100086 400130",
|
||||
|
||||
"000c40809c00"
|
||||
"0005000800030001 00001a007372178c 3e3cff070741020b f600f11000020100"
|
||||
"0005000800030003 00001a007372178c 3e3cff070741020b f600f11000020100"
|
||||
"00000905e060c040 0100210204d011d1 271a808021100100 0010810600000000"
|
||||
"830600000000000d 00000a005255f501 10225c0a003103e5 c03e1355f501aaaa"
|
||||
"11035758a6200b60 1404ef65233b8878 d290400804026004 00021f025d0107e0"
|
||||
|
@ -254,7 +254,7 @@ status_t tests1ap_build_identity_response(pkbuf_t **pkbuf, int i)
|
|||
"",
|
||||
"",
|
||||
"000d"
|
||||
"403f000005000000 05c00100009f0008 0003000100001a00 121117d7e3248b57"
|
||||
"403f000005000000 05c00100009f0008 0003000300001a00 121117d7e3248b57"
|
||||
"0756080910101032 5486510064400800 00f11054f6401000 4340060000f1105b"
|
||||
"a0",
|
||||
|
||||
|
@ -480,7 +480,7 @@ status_t tests1ap_build_esm_information_response(pkbuf_t **pkbuf, int i)
|
|||
"9a2626c09a2626c0 9a2626c223150200 0015103d3dda5c72 4cc497354ae64653"
|
||||
"45a8088021100100 0010810600000000 830600000000000d 00000a0000644008"
|
||||
"0000f1101079baf0 004340060000f110 5ba0",
|
||||
"000d40808d000005 00000005c0010000 9d00080002000100 1a00616027c963b5"
|
||||
"000d40808d000005 00000005c0010000 9e00080002000200 1a00616027c963b5"
|
||||
"1b010221da280908 696e7465726e6574 274a80c223150100 001510c09a2626c0"
|
||||
"9a2626c09a2626c0 9a2626c223150200 0015103d3dda5c72 4cc497354ae64653"
|
||||
"45a8088021100100 0010810600000000 830600000000000d 00000a0000644008"
|
||||
|
@ -768,7 +768,7 @@ status_t tests1ap_build_emm_status(pkbuf_t **pkbuf, int i)
|
|||
status_t tests1ap_build_detach_request(pkbuf_t **pkbuf, int i)
|
||||
{
|
||||
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
||||
"000c404900000600 080003000100001a 001615172ba435db 040745090bf600f1"
|
||||
"000c404900000600 080003000200001a 001615172ba435db 040745090bf600f1"
|
||||
"10000201020003e6 004300060000f110 2b67006440080000 f1109d67aa500086"
|
||||
"4001300060000600 40020003e6",
|
||||
|
||||
|
@ -855,12 +855,12 @@ status_t tests1ap_build_ue_context_release_request(pkbuf_t **pkbuf, int i)
|
|||
status_t tests1ap_build_ue_context_release_complete(pkbuf_t **pkbuf, int i)
|
||||
{
|
||||
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
||||
"2017001300000200 004005c00100009d 00084003400527",
|
||||
"2017001300000200 004005c00100009e 00084003400002",
|
||||
|
||||
"",
|
||||
|
||||
"2017"
|
||||
"0012000002000040 05c00100009f0008 40020001",
|
||||
"0012000002000040 05c00100009f0008 40020003",
|
||||
|
||||
"",
|
||||
"",
|
||||
|
|
|
@ -169,7 +169,7 @@ status_t tests1ap_build_initial_ue_msg(pkbuf_t **pkbuf, int i)
|
|||
"004300060000f110 3039006440080055 f5010019d0100086 400130",
|
||||
|
||||
"000c40809c00"
|
||||
"0005000800030001 00001a007372178c 3e3cff070741020b f600f11000020100"
|
||||
"0005000800030003 00001a007372178c 3e3cff070741020b f600f11000020100"
|
||||
"00000905e060c040 0100210204d011d1 271a808021100100 0010810600000000"
|
||||
"830600000000000d 00000a005255f501 10225c0a003103e5 c03e1355f501aaaa"
|
||||
"11035758a6200b60 1404ef65233b8878 d290400804026004 00021f025d0107e0"
|
||||
|
@ -254,7 +254,7 @@ status_t tests1ap_build_identity_response(pkbuf_t **pkbuf, int i)
|
|||
"",
|
||||
"",
|
||||
"000d"
|
||||
"403f000005000000 05c00100009f0008 0003000100001a00 121117d7e3248b57"
|
||||
"403f000005000000 05c00100009f0008 0003000300001a00 121117d7e3248b57"
|
||||
"0756080910101032 5486510064400800 00f11054f6401000 4340060000f1105b"
|
||||
"a0",
|
||||
|
||||
|
@ -480,7 +480,7 @@ status_t tests1ap_build_esm_information_response(pkbuf_t **pkbuf, int i)
|
|||
"9a2626c09a2626c0 9a2626c223150200 0015103d3dda5c72 4cc497354ae64653"
|
||||
"45a8088021100100 0010810600000000 830600000000000d 00000a0000644008"
|
||||
"0000f1101079baf0 004340060000f110 5ba0",
|
||||
"000d40808d000005 00000005c0010000 9d00080002000100 1a00616027c963b5"
|
||||
"000d40808d000005 00000005c0010000 9e00080002000200 1a00616027c963b5"
|
||||
"1b010221da280908 696e7465726e6574 274a80c223150100 001510c09a2626c0"
|
||||
"9a2626c09a2626c0 9a2626c223150200 0015103d3dda5c72 4cc497354ae64653"
|
||||
"45a8088021100100 0010810600000000 830600000000000d 00000a0000644008"
|
||||
|
@ -768,7 +768,7 @@ status_t tests1ap_build_emm_status(pkbuf_t **pkbuf, int i)
|
|||
status_t tests1ap_build_detach_request(pkbuf_t **pkbuf, int i)
|
||||
{
|
||||
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
||||
"000c404900000600 080003000100001a 001615172ba435db 040745090bf600f1"
|
||||
"000c404900000600 080003000200001a 001615172ba435db 040745090bf600f1"
|
||||
"10000201020003e6 004300060000f110 2b67006440080000 f1109d67aa500086"
|
||||
"4001300060000600 40020003e6",
|
||||
|
||||
|
@ -855,12 +855,12 @@ status_t tests1ap_build_ue_context_release_request(pkbuf_t **pkbuf, int i)
|
|||
status_t tests1ap_build_ue_context_release_complete(pkbuf_t **pkbuf, int i)
|
||||
{
|
||||
char *payload[TESTS1AP_MAX_MESSAGE] = {
|
||||
"2017001300000200 004005c00100009d 00084003400527",
|
||||
"2017001300000200 004005c00100009e 00084003400002",
|
||||
|
||||
"",
|
||||
|
||||
"2017"
|
||||
"0012000002000040 05c00100009f0008 40020001",
|
||||
"0012000002000040 05c00100009f0008 40020003",
|
||||
|
||||
"",
|
||||
"",
|
||||
|
|
Loading…
Reference in New Issue