Files
open5gs/tests/attach/issues-test.c
Sukchan Lee 70310979c5 [KSI] Update EPC KSI issuance to match 5G Core behavior
Previously, the EPC used the UE-provided KSI directly in the Authentication
Request (except for the special case where the UE sent
OGS_NAS_KSI_NO_KEY_IS_AVAILABLE, which was reset to 0).

This commit changes the EPC to follow the 5G Core approach
for issuing KSI in Attach-Request.

Now, when a Attach Request is received and a new Authentication Vector is
generated, the EPC performs the following steps:

- Extract the KSI value from the UE's request.
- Increment the extracted KSI by 1.
- Use the incremented KSI in the Authentication Request sent to the UE.

This detailed process ensures that the EPC issues the KSI consistently
with 5G Core standards, improving key management and interoperability.
2025-03-10 15:15:47 +09:00

2003 lines
87 KiB
C

/*
* Copyright (C) 2019 by Sukchan Lee <acetcom@gmail.com>
*
* This file is part of Open5GS.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "test-common.h"
static void issues_1431_func(abts_case *tc, void *data)
{
int rv;
ogs_socknode_t *s1ap;
ogs_socknode_t *gtpu;
ogs_pkbuf_t *emmbuf;
ogs_pkbuf_t *esmbuf;
ogs_pkbuf_t *sendbuf;
ogs_pkbuf_t *recvbuf;
ogs_s1ap_message_t message;
ogs_nas_5gs_mobile_identity_suci_t mobile_identity_suci;
test_ue_t *test_ue = NULL;
test_sess_t *sess = NULL;
test_bearer_t *bearer = NULL;
uint32_t old_enb_ue_s1ap_id;
uint64_t old_mme_ue_s1ap_id;
uint32_t new_enb_ue_s1ap_id;
uint64_t new_mme_ue_s1ap_id;
bson_t *doc = NULL;
/* Setup Test UE & Session Context */
memset(&mobile_identity_suci, 0, sizeof(mobile_identity_suci));
mobile_identity_suci.h.supi_format = OGS_NAS_5GS_SUPI_FORMAT_IMSI;
mobile_identity_suci.h.type = OGS_NAS_5GS_MOBILE_IDENTITY_SUCI;
mobile_identity_suci.routing_indicator1 = 0;
mobile_identity_suci.routing_indicator2 = 0xf;
mobile_identity_suci.routing_indicator3 = 0xf;
mobile_identity_suci.routing_indicator4 = 0xf;
mobile_identity_suci.protection_scheme_id = OGS_PROTECTION_SCHEME_NULL;
mobile_identity_suci.home_network_pki_value = 0;
test_ue = test_ue_add_by_suci(&mobile_identity_suci, "3746000006");
ogs_assert(test_ue);
test_ue->e_cgi.cell_id = 0x00003c01;
test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue->nas.value = OGS_NAS_ATTACH_TYPE_EPS_ATTACH;
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
/* eNB connects to MME */
s1ap = tests1ap_client(AF_INET);
ABTS_PTR_NOTNULL(tc, s1ap);
/* eNB connects to SGW */
gtpu = test_gtpu_server(1, AF_INET);
ABTS_PTR_NOTNULL(tc, gtpu);
/* Send S1-Setup Reqeust */
sendbuf = test_s1ap_build_s1_setup_request(
S1AP_ENB_ID_PR_macroENB_ID, 0x54f64);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive S1-Setup Response */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(NULL, recvbuf);
/********** Insert Subscriber in Database */
doc = test_db_new_simple(test_ue);
ABTS_PTR_NOTNULL(tc, doc);
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc));
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue->attach_request_param,
0, sizeof(test_ue->attach_request_param));
test_ue->attach_request_param.ue_usage_setting = 1;
test_ue->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue, esmbuf, false, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue->initial_ue_param, 0, sizeof(test_ue->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue, emmbuf, S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/*** Store eNB-UE-S1AP-ID */
old_enb_ue_s1ap_id = test_ue->enb_ue_s1ap_id;
/* Receive Authentication Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/*** Store MME-UE-S1AP-ID */
old_mme_ue_s1ap_id = test_ue->mme_ue_s1ap_id;
/* Send Authentication response */
emmbuf = testemm_build_authentication_response(test_ue);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Security mode Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send Security mode complete */
test_ue->mobile_identity_imeisv_presence = true;
emmbuf = testemm_build_security_mode_complete(test_ue);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send ESM Information Response */
sess->esm_information_param.pco = 1;
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send UE Capability Info Indication */
sendbuf = tests1ap_build_ue_radio_capability_info_indication(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue, 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Wait for Modify Bearer Request/Response */
ogs_msleep(100);
/* Send PDN Connectivity Request */
sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 2;
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.apn = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, true, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive E-RABSetupRequest +
* Activate default EPS bearer context request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
ABTS_INT_EQUAL(tc,
S1AP_ProcedureCode_id_downlinkNASTransport,
test_ue->s1ap_procedure_code);
/* Just Delay */
ogs_msleep(100);
/* Send Attach Request - Integrity */
sess = test_sess_find_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 3;
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue->attach_request_param,
0, sizeof(test_ue->attach_request_param));
test_ue->attach_request_param.guti = 1;
test_ue->attach_request_param.last_visited_registered_tai = 1;
test_ue->attach_request_param.ue_usage_setting = 1;
test_ue->attach_request_param.old_guti_type = 1;
test_ue->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue, esmbuf, true, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_initial_ue_message(
test_ue, emmbuf, S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/*** Store eNB-UE-S1AP-ID */
new_enb_ue_s1ap_id = test_ue->enb_ue_s1ap_id;
/* Receive OLD UE Context Release Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/*** Store MME-UE-S1AP-ID */
new_mme_ue_s1ap_id = test_ue->mme_ue_s1ap_id;
/* Send OLD UE Context Release Complete */
test_ue->enb_ue_s1ap_id = old_enb_ue_s1ap_id;
test_ue->mme_ue_s1ap_id = old_mme_ue_s1ap_id;
sendbuf = test_s1ap_build_ue_context_release_complete(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Just Delay */
ogs_msleep(100);
/* Send ESM Information Response */
test_ue->enb_ue_s1ap_id = new_enb_ue_s1ap_id;
test_ue->mme_ue_s1ap_id = new_mme_ue_s1ap_id;
sess->esm_information_param.pco = 0;
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue, 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue, esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue, emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send UE Context Release Request */
sendbuf = test_s1ap_build_ue_context_release_request(test_ue,
S1AP_Cause_PR_radioNetwork, S1AP_CauseRadioNetwork_user_inactivity);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive UE Context Release Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send UE Context Release Complete */
sendbuf = test_s1ap_build_ue_context_release_complete(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);
/********** Remove Subscriber in Database */
ABTS_INT_EQUAL(tc, OGS_OK, test_db_remove_ue(test_ue));
/* eNB disonncect from MME */
testenb_s1ap_close(s1ap);
/* eNB disonncect from SGW */
test_gtpu_close(gtpu);
test_ue_remove(test_ue);
}
/*
- v2.6.3 Analysis
05/03 13:01:08.318 1101136515 486875/209 12/322 Attach request
05/03 13:01:08.318 1101136515 486875/209 12/322 emm_state_initial_context_setup(): ENTRY
05/03 13:01:08.318 1101136515 486875/209 12/322 mme_bearer_find_or_add_by_message() [PTI:7, EBI:0]
05/03 13:01:08.318 1101136515 486875/209 12/322 esm_state_inactive(): ENTRY
05/03 13:01:08.318 1101136515 486875/209 12/322 PDN Connectivity request
05/03 13:01:08.318 1101136515 486875/209 12/322 ESM information request
05/03 13:01:08.331 1101133226 486874/881 582/1029 mme_bearer_find_or_add_by_message() [PTI:2, EBI:0]
05/03 13:01:08.331 1101133226 486874/881 582/1029 esm_state_inactive(): ENTRY
05/03 13:01:08.331 1101133226 486874/881 582/1029 PDN Connectivity request
05/03 13:01:08.331 1101133226 486874/881 582/1029 PDN connectivity reject(ims)
05/03 13:01:08.331 1101133226 486874/881 582/1029 esm_state_exception(): ENTRY
05/03 13:01:08.331 1101133226 486874/881 582/1029 [Removed] Number of MME-Sessions is now 28
05/03 13:01:08.335 1101136515 486875/209 12/322 mme_bearer_find_or_add_by_message() [PTI:7, EBI:0]
05/03 13:01:08.335 1101136515 486875/209 12/322 ESM information response
05/03 13:01:08.338 1101136515 486875/209 12/322 Attach accept
05/03 13:01:08.338 1101136515 486875/209 12/322 Activate default bearer context request
05/03 13:01:08.338 1101136515 486875/209 12/322 InitialContextSetupRequest
05/03 13:01:08.631 1101136515 486875/209 12/322 InitialContextSetupResponse
05/03 13:01:08.633 1101136515 486875/209 12/322 UECapabilityInfoIndication
05/03 13:01:08.636 1101136515 486875/209 12/322 emm_state_initial_context_setup(): MME_EVENT_EMM_MESSAGE
05/03 13:01:08.636 1101136515 486875/209 12/322 Attach complete
05/03 13:01:08.636 1101136515 486875/209 12/322 EMM information
05/03 13:01:08.636 1101136515 486875/209 12/322 mme_bearer_find_or_add_by_message() [PTI:0, EBI:5]
05/03 13:01:08.636 1101136515 486875/209 12/322 esm_state_inactive(): MME_EVENT_ESM_MESSAGE
05/03 13:01:08.636 1101136515 486875/209 12/322 Activate default EPS bearer context accept
05/03 13:01:08.636 1101136515 486875/209 12/322 esm_state_active(): ENTRY
05/03 13:01:08.671 1101136515 486875/209 12/322 mme_bearer_find_or_add_by_message() [PTI:8, EBI:0]
05/03 13:01:08.671 1101136515 486875/209 12/322 esm_state_inactive(): ENTRY
05/03 13:01:08.671 1101136515 486875/209 12/322 PDN Connectivity request
05/03 13:01:08.671 1101136515 486875/209 12/322 PDN connectivity reject(ims)
05/03 13:01:08.671 1101136515 486875/209 12/322 esm_state_exception(): ENTRY
05/03 13:01:08.671 1101136515 486875/209 12/322 [Removed] Number of MME-Sessions is now 28
05/03 13:02:09.026 1101136515 655305/195 798/839 Attach request
05/03 13:02:09.026 1101136515 655305/195 798/839 emm_state_initial_context_setup() : ENTRY
05/03 13:02:09.026 1101136515 655305/195 798/839 mme_bearer_find_or_add_by_message() [PTI:21, EBI:0]
05/03 13:02:09.026 1101136515 655305/195 798/839 esm_state_inactive(): ENTRY
05/03 13:02:09.026 1101136515 655305/195 798/839 PDN Connectivity request
05/03 13:02:09.026 1101136515 655305/195 798/839 ESM information request
05/03 13:02:09.042 1101136515 655305/195 798/839 ESM information response
05/03 13:02:09.046 1101136515 655305/195 798/839 Attach accept
05/03 13:02:09.046 1101136515 655305/195 798/839 Activate default bearer context request
05/03 13:02:09.046 1101136515 655305/195 798/839 InitialContextSetupRequest
05/03 13:02:09.289 1101136515 655305/195 798/839 Attach complete
05/03 13:02:09.290 1101136515 655305/195 798/839 mme_bearer_find_or_add_by_message() [PTI:0, EBI:5]
05/03 13:02:09.290 1101136515 655305/195 798/839 Activate default EPS bearer context accept
05/03 13:02:09.290 1101136515 655305/195 798/839 esm_state_active(): ENTRY
05/03 13:02:09.290 1101136515 655305/195 798/839 InitialContextSetupResponse
05/03 13:02:09.209 1101136515 655305/195 798/839 UECapabilityInfoIndication
05/03 13:02:17.442 1101136515 655305/195 798/839 Detach request
05/03 13:02:17.445 1101136515 655305/195 798/839 Detach accept
05/03 13:02:17.445 1101136515 655305/195 798/839 UEContextReleaseCommand
05/03 13:02:17.463 1101136515 655305/195 798/839 UEContextReleaseComplete
05/03 13:02:26.537 1101136519 486875/209 12/322 Detach request
05/03 13:02:26.540 1101136519 486875/209 12/322 Detach accept
05/03 13:02:26.540 1101136519 486875/209 12/322 UEContextReleaseCommand
05/03 13:02:26.542 1101136519 486875/209 12/322 UEContextReleaseComplete
05/03 13:02:27.706 1101136515 655308/176 798/17 Attach request
05/03 13:02:27.706 1101136515 655308/176 798/17 emm_state_initial_context_setup(): ENTRY
05/03 13:02:27.706 1101136515 655308/176 798/17 mme_bearer_find_or_add_by_message() [PTI:22, EBI:0]
05/03 13:02:27.706 1101136515 655308/176 798/17 esm_state_inactive(): ENTRY
05/03 13:02:27.706 1101136515 655308/176 798/17 PDN Connectivity request
05/03 13:02:27.706 1101136515 655308/176 798/17 ESM information request
05/03 13:02:27.918 1101136517 486880/200 995/841 UEContextReleaseRequest
05/03 13:02:27.918 1101136517 486880/200 995/841 UEContextReleaseCommand
05/03 13:02:27.921 1101136517 486880/200 995/841 UEContextReleaseComplete
05/03 13:02:27.936 1101122519 655307/192 314/424 UEContextReleaseRequest
05/03 13:02:27.936 1101122519 655307/192 314/424 UEContextReleaseCommand
05/03 13:02:29.249 1101122519 655307/192 314/424 Detach request
05/03 13:02:29.251 1101122519 655307/192 314/424 Detach accept
05/03 13:02:30.130 1101136512 486719/913 881/969 Implicit MME Detach
05/03 13:02:30.134 1101136512 486719/913 881/969 [MME] Purge-UE-Request
05/03 13:02:30.134 1101136512 486719/913 881/969 [MME] Purge-UE-Answer
05/03 13:02:30.740 1101226519 655307/192 314/424 UEContextReleaseComplete
05/03 13:02:30.756 1101136515 655308/176 798/17 mme_bearer_find_or_add_by_message() [PTI:22, EBI:0]
05/03 13:02:30.756 1101136515 655308/176 798/17 esm_state_inactive(): MME_EVENT_ESM_MESSAGE
05/03 13:02:30.756 1101136515 655308/176 798/17 ESM information response
05/03 13:02:30.756 1101136515 655308/176 798/0/0/47960/22915 Create Session Response
05/03 13:02:30.760 1101136515 655308/176 798/17 Attach accept
05/03 13:02:30.760 1101136515 655308/176 798/17 Activate default bearer context request
05/03 13:02:30.760 1101136515 655308/176 798/0/0/47960 InitialContextSetupRequest
05/03 13:02:32.118 1101136519 486882/214 12/656 InitialUEMessage(M_TMSI:0xc0000428)
05/03 13:02:32.118 1101136519 486882/214 12/656 Attach request
05/03 13:02:32.118 1101136519 486882/214 12/656 emm_state_initial_context_setup(): ENTRY
05/03 13:02:32.118 1101136519 486882/214 12/656 mme_bearer_find_or_add_by_message() [PTI:9, EBI:0]
05/03 13:02:32.118 1101136519 486882/214 12/656 esm_state_inactive(): ENTRY
05/03 13:02:32.118 1101136519 486882/214 12/656 PDN Connectivity request
05/03 13:02:32.118 1101136519 486882/214 12/656 ESM information request
05/03 13:02:32.135 1101136519 486882/214 12/656 mme_bearer_find_or_add_by_message() [PTI:9, EBI:0]
05/03 13:02:32.135 1101136519 486882/214 12/656 esm_state_inactive(): MME_EVENT_ESM_MESSAGE
05/03 13:02:32.135 1101136519 486882/214 12/656 ESM information response
05/03 13:02:32.135 1101136519 486882/214 12/0/0/26037/17607 Create Session Response
05/03 13:02:32.138 1101136519 486882/214 12/656 Attch accept
05/03 13:02:32.138 1101136519 486882/214 12/656 Activate default bearer context request
05/03 13:02:32.139 1101136519 486882/214 12/0/0/26037 InitialContextSetupRequest
05/03 13:02:32.433 1101136519 486882/214 12/656 InitialContextSetupResponse
05/03 13:02:32.434 1101136519 486882/214 12/656 UECapabilityInfoIndication
05/03 13:02:32.455 1101136519 486882/214 12/656 Attach complete
05/03 13:02:32.455 1101136519 486882/214 12/656 mme_bearer_find_or_add_by_message() [PTI:0, EBI:5]
05/03 13:02:32.455 1101136519 486882/214 12/656 esm_state_inactive(): MME_EVENT_ESM_MESSAGE
05/03 13:02:32.455 1101136519 486882/214 12/656/4154952/26037 Activate default EPS bearer context accept
05/03 13:02:32.455 1101136519 486882/214 12/656 esm_state_active(): ENTRY
05/03 13:02:32.511 1101136519 486882/214 12/656 mme_bearer_find_or_add_by_message() [PTI:10, EBI:0]
05/03 13:02:32.511 1101136519 486882/214 12/656 esm_state_inactive(): ENTRY
05/03 13:02:32.511 1101136519 486882/214 12/656 PDN Connectivity request
05/03 13:02:32.511 1101136519 486882/214 12/656 PDN Connectivity reject(ims)
05/03 13:02:32.511 1101136519 486882/214 12/656 esm_state_exception(): ENTRY
05/03 13:02:32.511 1101136519 486882/214 12/656 [Removed] Number of MME-Sessions is now 27
05/03 13:02:33.190 1101136515 655308/176 798/17/55919304/26037 InitialContextSetupResponse
05/03 13:02:33.191 1101136515 655308/176 798/17 UECapabilityInfoIndication
05/03 13:02:33.209 1101136515 655308/176 798/17 Attach complete
05/03 13:02:33.209 1101136515 655308/176 798/17 mme_bearer_find_or_add_by_message() [PTI:0, EBI:5]
05/03 13:02:33.209 1101136515 655308/176 798/17 esm_state_active(): MME_EVENT_ESM_MESSAGE
05/03 13:02:33.209 1101136515 655308/176 798/17 ERROR: Unknown message(type:194)
05/03 13:02:33.636 1101136519 486882/214 12/656 UECapabilityInfoIndication
05/03 13:02:33.713 1101136519 486882/214 12/656 E_RABModificationIndication
05/03 13:02:33.713 1101136519 486882/214 12/656 E-RABModificationConfirm
05/03 13:02:36.067 1101136515 655308/176 798/17 UECapabilityInfoIndication
05/03 13:02:36.067 1101136515 655308/176 798/17 Detach request
05/03 13:02:36.069 1101136519 486882/214 12/656 Detach accept
05/03 13:02:36.069 1101136519 486882/214 12/656 UEContextReleaseCommand
05/03 13:02:36.072 1101136519 486882/214 12/656 UEContextReleaseComplete
05/03 13:02:36.178 1101122519 655309/223 314/412 Attach request
05/03 13:02:36.178 1101122519 655309/223 314/412 emm_state_initial_context_setup(): ENTRY
05/03 13:02:36.178 1101122519 655309/223 314/412 mme_bearer_find_or_add_by_message() [PTI:15, EBI:0]
05/03 13:02:36.178 1101122519 655309/223 314/412 esm_state_inactive()
05/03 13:02:36.178 1101122519 655309/223 314/412 PDN Connectivity request
05/03 13:02:36.178 1101122519 655309/223 314/412 ESM information request
05/03 13:02:36.194 1101122519 655309/223 314/412 ESM information response
05/03 13:02:36.197 1101122519 655309/223 314/412 Attach accept
05/03 13:02:36.197 1101122519 655309/223 314/412 Activate default bearer context request
05/03 13:02:36.197 1101122519 655309/223 314/412 InitialContextSetupRequest
05/03 13:02:36.254 1101136515 655308/176 798/17 E_RABModificationIndication
05/03 13:02:36.254 1101136515 655308/176 798/17 ERROR: No Bearer [5]
05/03 13:02:36.408 1101136519 486883/907 Service request
05/03 13:02:36.408 1101136519 486883/907 ERROR: No Session Context
05/03 13:02:36.408 1101136519 486883/907 Service reject
05/03 13:02:36.408 1101136519 486883/907 UEContextReleaseCommand
05/03 13:02:36.410 1101136519 486883/907 UEContextReleaseComplete
05/03 13:02:36.410 1101122519 655309/223 314/412 [MME] Purge-UE-Request
05/03 13:02:36.413 1101122519 655309/223 314/412 [MME] Purge-UE-Answer
05/03 13:02:36.514 1101122519 655309/223 314/412 InitialContextSetupResponse
05/03 13:02:36.515 1101122519 655309/223 314/412 UECapabilityInfoIndication
05/03 13:02:36.545 1101122519 655309/223 314/412 Attach complete
05/03 13:02:36.545 1101122519 655309/223 314/412 mme_bearer_find_or_add_by_message() [PTI:0, EBI:5]
05/03 13:02:36.545 1101122519 655309/223 314/412 Activate default EPS bearer context accept
05/03 13:02:36.545 1101122519 655309/223 314/412 esm_state_active()
05/03 13:02:36.584 1101136519 486884/261 473/992 Attach request
05/03 13:02:36.587 1101136519 486884/261 473/992 Authentication request
05/03 13:02:36.639 1101136519 486884/261 473/992 Authentication response
05/03 13:02:36.639 1101136519 486884/261 473/992 Security mode command
05/03 13:02:36.656 1101136519 486884/261 473/992 Security mode complete
05/03 13:02:36.661 1101136519 486884/261 473/992 mme_bearer_find_or_add_by_message() [PTI:11, EBI:0]
05/03 13:02:36.661 1101136519 486884/261 473/992 esm_state_inactive()
05/03 13:02:36.661 1101136519 486884/261 473/992 PDN connection request
05/03 13:02:36.661 1101136519 486884/261 473/992 ESM information request
05/03 13:02:36.678 1101136519 486884/261 473/992 ESM information response
05/03 13:02:36.680 1101136519 486884/261 473/992 Attach accept
05/03 13:02:36.680 1101136519 486884/261 473/992 InitialContextSetupRequest
05/03 13:02:36.968 1101136519 486884/261 473/992 InitialContextSetupResponse
05/03 13:02:36.969 1101136519 486884/261 473/992 UECapabilityInfoIndication
05/03 13:02:36.991 1101136519 486884/261 473/992 Attach complete
05/03 13:02:36.991 1101136519 486884/261 473/992 Activate default EPS bearer context accept
05/03 13:02:36.991 1101136519 486884/261 473/992 esm_state_inactive()
05/03 13:02:37.253 1101136515 655308/176 798/17 UECapabilityInfoIndication
05/03 13:02:38.162 1101136519 486884/261 473/992 UECapabilityInfoIndication
05/03 13:02:38.232 1101136519 486884/261 473/992 E_RABModificationIndication
05/03 13:02:38.232 1101136519 486884/261 473/992 E-RABModificationConfirm
05/03 13:02:38.260 1101136515 655308/176 798/17 UEContextReleaseRequest
05/03 13:02:38.767 1101136514 486877/270 874/207 UEContextReleaseRequest
05/03 13:02:38.768 1101136514 486877/270 874/207 UEContextReleaseCommand
05/03 13:02:38.769 1101136514 486877/270 874/207 UEContextReleaseComplete
05/03 13:02:45.768 1101136515 655308/176 798/17 LOCAL No Response. Give up! for step 1 type 170 peer
05/03 13:02:45.768 1101136515 655308/176 798/17 UEContextReleaseCommand
05/03 13:02:45.768 1101136515 655308/176 798/17 GTP Timeout : IMSI[1101136515] Message-Type[170]
05/03 13:02:45.996 1101136515 655310/123 Attach Request
05/03 13:02:45.966 1101136515 655310/123 FATAL
*/
#define NUM_OF_TEST_UE 3
static void issues_2287_v263_func(abts_case *tc, void *data)
{
int rv, i;
ogs_socknode_t *s1ap;
ogs_socknode_t *gtpu;
ogs_pkbuf_t *emmbuf;
ogs_pkbuf_t *esmbuf;
ogs_pkbuf_t *sendbuf;
ogs_pkbuf_t *recvbuf;
ogs_s1ap_message_t message;
ogs_nas_5gs_mobile_identity_suci_t mobile_identity_suci;
test_ue_t *test_ue[NUM_OF_TEST_UE];
test_sess_t *sess = NULL;
test_bearer_t *bearer = NULL;
uint32_t enb_ue_s1ap_id;
uint64_t mme_ue_s1ap_id;
bson_t *doc = NULL;
/* eNB connects to MME */
s1ap = tests1ap_client(AF_INET);
ABTS_PTR_NOTNULL(tc, s1ap);
/* eNB connects to SGW */
gtpu = test_gtpu_server(1, AF_INET);
ABTS_PTR_NOTNULL(tc, gtpu);
/* Send S1-Setup Reqeust */
sendbuf = test_s1ap_build_s1_setup_request(
S1AP_ENB_ID_PR_macroENB_ID, 0x54f64);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive S1-Setup Response */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(NULL, recvbuf);
for (i = 0; i < NUM_OF_TEST_UE; i++) {
const char *scheme_output[] = {
"0000000001",
"0000000002",
"0000000003",
"0000000004",
"0000000005",
};
/* Setup Test UE & Session Context */
memset(&mobile_identity_suci, 0, sizeof(mobile_identity_suci));
mobile_identity_suci.h.supi_format = OGS_NAS_5GS_SUPI_FORMAT_IMSI;
mobile_identity_suci.h.type = OGS_NAS_5GS_MOBILE_IDENTITY_SUCI;
mobile_identity_suci.routing_indicator1 = 0;
mobile_identity_suci.routing_indicator2 = 0xf;
mobile_identity_suci.routing_indicator3 = 0xf;
mobile_identity_suci.routing_indicator4 = 0xf;
mobile_identity_suci.protection_scheme_id = OGS_PROTECTION_SCHEME_NULL;
mobile_identity_suci.home_network_pki_value = 0;
test_ue[i] = test_ue_add_by_suci(
&mobile_identity_suci, scheme_output[i]);
ogs_assert(test_ue[i]);
test_ue[i]->e_cgi.cell_id = 0x54f6401;
test_ue[i]->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue[i]->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
test_ue[i]->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue[i]->opc_string = "e8ed289deba952e4283b54e88e6183ca";
/********** Insert Subscriber in Database */
doc = test_db_new_simple(test_ue[i]);
ABTS_PTR_NOTNULL(tc, doc);
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue[i], doc));
}
/**********************************************************
* First UE - INITIAL
**********************************************************/
test_ue[0]->enb_ue_s1ap_id = 100;
sess = test_sess_add_by_apn(
test_ue[0], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 21;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[0]->attach_request_param,
0, sizeof(test_ue[0]->attach_request_param));
test_ue[0]->attach_request_param.drx_parameter = 1;
test_ue[0]->attach_request_param.ms_network_capability = 1;
test_ue[0]->attach_request_param.tmsi_status = 1;
test_ue[0]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[0]->attach_request_param.supported_codecs = 1;
test_ue[0]->attach_request_param.ue_usage_setting = 1;
test_ue[0]->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue[0], esmbuf, false, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[0]->initial_ue_param, 0,
sizeof(test_ue[0]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[0], emmbuf,
S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Authentication Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Authentication response */
emmbuf = testemm_build_authentication_response(test_ue[0]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Security mode Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Security mode complete */
test_ue[0]->mobile_identity_imeisv_presence = true;
emmbuf = testemm_build_security_mode_complete(test_ue[0]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send UE Capability Info Indication */
sendbuf = tests1ap_build_ue_radio_capability_info_indication(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[0]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[0], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[0], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Detach Request */
emmbuf = testemm_build_detach_request(test_ue[0], 1, true, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive UE Context Release Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send UE Context Release Complete */
sendbuf = test_s1ap_build_ue_context_release_complete(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/**********************************************************
* Second UE - INITIAL
**********************************************************/
test_ue[1]->enb_ue_s1ap_id = 200;
sess = test_sess_add_by_apn(
test_ue[1], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 8;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[1]->attach_request_param,
0, sizeof(test_ue[1]->attach_request_param));
test_ue[1]->attach_request_param.drx_parameter = 1;
test_ue[1]->attach_request_param.ms_network_capability = 1;
test_ue[1]->attach_request_param.tmsi_status = 1;
test_ue[1]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[1]->attach_request_param.supported_codecs = 1;
test_ue[1]->attach_request_param.ue_usage_setting = 1;
test_ue[1]->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue[1], esmbuf, false, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[1]->initial_ue_param, 0,
sizeof(test_ue[1]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[1], emmbuf,
S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Authentication Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Authentication response */
emmbuf = testemm_build_authentication_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Security mode Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Security mode complete */
test_ue[1]->mobile_identity_imeisv_presence = true;
emmbuf = testemm_build_security_mode_complete(test_ue[1]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send UE Capability Info Indication */
sendbuf =
tests1ap_build_ue_radio_capability_info_indication(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[1]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[1], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Detach Request */
emmbuf = testemm_build_detach_request(test_ue[1], 1, true, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive UE Context Release Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send UE Context Release Complete */
sendbuf = test_s1ap_build_ue_context_release_complete(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/**********************************************************
* First UE - GUTI
**********************************************************/
sess = test_sess_find_by_apn(
test_ue[0], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
test_sess_remove(sess);
sess = test_sess_add_by_apn(
test_ue[0], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 22;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.epco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[0]->attach_request_param,
0, sizeof(test_ue[0]->attach_request_param));
test_ue[0]->attach_request_param.guti = 1;
test_ue[0]->attach_request_param.last_visited_registered_tai = 1;
test_ue[0]->attach_request_param.drx_parameter = 1;
test_ue[0]->attach_request_param.ms_network_capability = 1;
test_ue[0]->attach_request_param.location_area_identication = 1;
test_ue[0]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[0]->attach_request_param.mobile_station_classmark_3 = 1;
test_ue[0]->attach_request_param.supported_codecs = 1;
test_ue[0]->attach_request_param.ue_usage_setting = 1;
test_ue[0]->attach_request_param.old_guti_type = 1;
emmbuf = testemm_build_attach_request(test_ue[0], esmbuf, true, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[0]->initial_ue_param, 0, sizeof(test_ue[0]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[0], emmbuf, S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/**********************************************************
* Second UE - GUTI
**********************************************************/
sess = test_sess_find_by_apn(
test_ue[1], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
test_sess_remove(sess);
sess = test_sess_add_by_apn(
test_ue[1], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 9;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.epco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[1]->attach_request_param,
0, sizeof(test_ue[1]->attach_request_param));
test_ue[1]->attach_request_param.guti = 1;
test_ue[1]->attach_request_param.last_visited_registered_tai = 1;
test_ue[1]->attach_request_param.drx_parameter = 1;
test_ue[1]->attach_request_param.ms_network_capability = 1;
test_ue[1]->attach_request_param.location_area_identication = 1;
test_ue[1]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[1]->attach_request_param.mobile_station_classmark_3 = 1;
test_ue[1]->attach_request_param.supported_codecs = 1;
test_ue[1]->attach_request_param.ue_usage_setting = 1;
test_ue[1]->attach_request_param.old_guti_type = 1;
emmbuf = testemm_build_attach_request(test_ue[1], esmbuf, true, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[1]->initial_ue_param, 0, sizeof(test_ue[1]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[1], emmbuf, S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send UE Capability Info Indication */
sendbuf =
tests1ap_build_ue_radio_capability_info_indication(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[1]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[1], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send PDN Connectivity Request */
sess = test_sess_add_by_apn(test_ue[1], "ims", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 10;
sess->pdn_connectivity_param.apn = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, true, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive PDN Connectivity reject */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
test_sess_remove(sess);
/**********************************************************
* First UE - GUTI Resume
**********************************************************/
sess = test_sess_add_by_apn(
test_ue[0], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send UE Capability Info Indication */
sendbuf = tests1ap_build_ue_radio_capability_info_indication(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[0]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[0], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[0], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
ogs_msleep(300);
for (i = 0; i < NUM_OF_TEST_UE; i++) {
/********** Remove Subscriber in Database */
ABTS_INT_EQUAL(tc, OGS_OK, test_db_remove_ue(test_ue[i]));
}
/* eNB disonncect from MME */
testenb_s1ap_close(s1ap);
/* eNB disonncect from SGW */
test_gtpu_close(gtpu);
test_ue_remove_all();
}
/*
- v2.6.4 Analysis
05/29 15:02:25.141 1101122519 490/222 267/300/-974782142/30908 E_RABModificationIndication
05/29 15:02:25.141 1101122519 490/222 267/300/-974782142/30908 E-RABModificationConfirm
05/29 15:02:28.090 1101135526 485/106 44/54/41120/45321 E_RABModificationIndication
05/29 15:02:28.090 1101135526 485/106 44/54/41120/45321 E-RABModificationConfirm
05/29 15:02:28.360 1101136515 488/377 692/574/-1025113818/17073 E_RABModificationIndication
05/29 15:02:28.361 1101136515 488/377 692/574/-1025113818/17073 E-RABModificationConfirm
05/29 15:02:30.444 1101135526 485/106 44/54/41120/45321 UEContextReleaseRequest
05/29 15:02:30.445 1101135526 485/106 44/54/41120/45321 UEContextReleaseCommand
05/29 15:02:30.445 1101135526 485/106 44/54/41120/45321 Downlink Data Notification
05/29 15:02:30.445 1101135526 485/106 44/54/41120/45321 [1101135526] Clear Paging Info
05/29 15:02:30.445 1101135526 485/106 44/54/41120/45321 Downlink Data Notification Ackknowledge
05/29 15:02:30.476 1101135526 485/106 44/54/41120/45321 UEContextReleaseComplete
05/29 15:02:31.791 1101135526 491/826 44/54/-1053359805/45321 InitialUEMessage
05/29 15:02:31.791 1101135526 491/826 44/54/-1053359805/45321 Tracking area update request
05/29 15:02:31.792 1101135526 491/826 44/54/-1053359805/45321 Tracking area update accept
05/29 15:02:31.792 1101135526 491/826 44/54/-1053359805/45321 UEContextReleaseCommand
05/29 15:02:31.793 1101135526 491/826 44/54/-1053359805/45321 UEContextReleaseComplete
05/29 15:02:32.129 1101135526 492/65 44/54/41672/45321 InitialUEMessage
05/29 15:02:32.129 1101135526 492/65 44/54/41672/45321 Service request
05/29 15:02:32.129 1101135526 492/65 44/54/41672/45321 InitialContextSetupRequest
05/29 15:02:32.191 1101135526 492/65 44/54/41672/45321 InitialContextSetupResponse
05/29 15:02:32.656 1101135526 492/65 44/54/-1053359805/45321 E_RABModificationIndication
05/29 15:02:32.657 1101135526 492/65 44/54/-1053359805/45321 E-RABModificationConfirm
05/29 15:02:33.530 1101135526 492/65 44/54/41672/45321 E_RABModificationIndication
05/29 15:02:33.531 1101135526 492/65 44/54/41672/45321 E-RABModificationConfirm
05/29 15:02:35.889 1101135526 492/65 44/54/41672/45321 UEContextReleaseRequest
05/29 15:02:35.890 1101135526 492/65 44/54/41672/45321 UEContextReleaseCommand
05/29 15:02:35.890 1101135526 492/65 44/54/41672/45321 Downlink Data Notification
05/29 15:02:35.890 1101135526 492/65 44/54/41672/45321 [1101135526] Clear Paging Info
05/29 15:02:35.890 1101135526 492/65 44/54/41672/45321 Downlink Data Notification Ackknowledge
05/29 15:02:35.891 1101135526 492/65 44/54/41672/45321 UEContextReleaseComplete
05/29 15:02:40.311 1101135526 493/969 44/54/41984/45321 InitialUEMessage
05/29 15:02:40.311 1101135526 493/969 44/54/41984/45321 Service request
05/29 15:02:40.311 1101135526 493/969 44/54/41984/45321 InitialContextSetupRequest
05/29 15:02:40.375 1101135526 493/969 44/54/41984/45321 InitialContextSetupResponse
05/29 15:02:42.402 1101135526 493/969 44/54/41984/45321 UEContextReleaseRequest
05/29 15:02:42.403 1101135526 493/969 44/54/41984/45321 UEContextReleaseCommand
05/29 15:02:42.403 1101135526 493/969 44/54/41984/45321 Downlink Data Notification
05/29 15:02:42.403 1101135526 493/969 44/54/41984/45321 [1101135526] Clear Paging Info
05/29 15:02:42.403 1101135526 493/969 44/54/41984/45321 Downlink Data Notification Ackknowledge
05/29 15:02:42.511 1101135526 494/123 44/54/41984/45321 InitialUEMessage
05/29 15:02:42.511 1101135526 493/969 44/54/41984/45321 UEContextReleaseCommand
05/29 15:02:42.512 1101135526 494/123 44/54/41984/45321 Tracking area update request
05/29 15:02:42.512 1101135526 494/123 44/54/41984/45321 Tracking area update accept
05/29 15:02:42.512 1101135526 494/123 44/54/41984/45321 UEContextReleaseCommand
05/29 15:02:43.412 1101135526 493/969 44/54/41984/45321 UEContextReleaseComplete
05/29 15:02:43.412 1101135526 494/123 44/54/41984/45321 UEContextReleaseComplete
05/29 15:02:43.586 1101135526 495/85 44/54/42064/45321 InitialUEMessage
05/29 15:02:43.586 1101135526 495/85 44/54/42064/45321 Servie request
05/29 15:02:43.586 1101135526 495/85 44/54/42064/45321 InitialContextSetupRequest
05/29 15:02:43.671 1101135526 495/85 44/54/42064/45321 InitialContextSetupResponse
05/29 15:02:44.644 1101135526 495/85 44/54/-991887070/45321 E_RABModificationIndication
05/29 15:02:44.645 1101135526 495/85 44/54/-991887070/45321 E-RABModificationConfirm
05/29 15:02:45.422 1101136514 613657/812 625/399 UEContextReleaseRequest
05/29 15:02:45.423 1101136514 613657/812 625/399 UEContextReleaseCommand
05/29 15:02:45.424 1101136514 613657/812 625/399 UEContextReleaseComplete
05/29 15:02:46.659 1101135526 495/85 44/54/-991887070/45321 UEContextReleaseRequest
05/29 15:02:46.660 1101135526 495/85 44/54/-991887070/45321 UEContextReleaseCommand
05/29 15:02:46.660 1101135526 495/85 44/54/-991887070/45321 Downlink Data Notification
05/29 15:02:46.660 1101135526 495/85 44/54/-991887070/45321 [1101135526] Clear Paging Info
05/29 15:02:46.660 1101135526 495/85 44/54/-991887070/45321 Downlink Data Notification Ackknowledge
05/29 15:02:46.668 1101135526 495/85 44/54/-991887070/45321 UEContextReleaseComplete
05/29 15:02:46.668 1101135526 496/913 44/54/42104/45321 InitialUEMessage
05/29 15:02:48.146 1101135526 496/913 44/54/42104/45321 Servie request
05/29 15:02:48.146 1101135526 496/913 44/54/42104/45321 InitialContextSetupRequest
05/29 15:02:48.231 1101135526 496/913 44/54/42104/45321 InitialContextSetupResponse
05/29 15:02:48.788 1101135526 496/913 44/54/-991821534/45321 E_RABModificationIndication
05/29 15:02:48.789 1101135526 496/913 44/54/-991821534/45321 E-RABModificationConfirm
05/29 15:02:49.067 1101133203 613658/898 64/808 InitialUEMessage
05/29 15:02:49.067 1101133203 613658/898 64/808 Attach Request
05/29 15:02:49.067 1101133203 613658/898 64/808 Delete Session Request
05/29 15:02:49.071 1101133203 613658/898 64/808 Delete Session Response
05/29 15:02:49.071 1101133203 613658/898 64/808 INFO: Removed Session: UE IMSI:[1101133203] APN:[internet]
05/29 15:02:49.073 1101133203 613658/898 64/0 Authentication request
05/29 15:02:49.127 1101133203 613658/898 64/0 Authentication response
05/29 15:02:49.127 1101133203 613658/898 64/0 Security mode command
05/29 15:02:49.144 1101133203 613658/898 64/0 Security mode complete
05/29 15:02:49.149 1101133203 613658/898 64/0 mme_bearer_find_or_add_by_message() : ESM message type:208, PTI:1, EBI:0
05/29 15:02:49.149 1101133203 613658/898 64/0 esm_state_inactive(): ENTRY
05/29 15:02:49.149 1101133203 613658/898 64/0 [Added] Number of MME-Sessions is now 28
05/29 15:02:49.149 1101133203 613658/898 64/0 PDN Connectivity request
05/29 15:02:49.149 1101133203 613658/898 64/0 ESM information request
05/29 15:02:49.165 1101133203 613658/898 64/0 mme_bearer_find_or_add_by_message() : ESM message type:218, PTI:1, EBI:0
05/29 15:02:49.165 1101133203 613658/898 64/0/0/26394 esm_state_inactive(): ENTRY
05/29 15:02:49.165 1101133203 613658/898 64/0/0/26394 ESM information response
05/29 15:02:49.165 1101133203 613658/898 64/0/0/26394 Create Session Request
05/29 15:02:49.170 1101133203 613658/898 64/845/0/26394/60543 Create Session Response
05/29 15:02:49.170 1101133203 613658/898 64/845/0/26394 Attach accept
05/29 15:02:49.170 1101133203 613658/898 64/845/0/26394 InitialContextSetupRequest
05/29 15:02:49.538 1101133203 613658/898 64/845/0/26394 InitialContextSetupResponse
05/29 15:02:49.539 1101133203 613658/898 64/845/0/26394 UECapabilityInfoIndication
05/29 15:02:49.577 1101133203 613658/898 64/845/0/26394 Attach complete
05/29 15:02:49.577 1101133203 613658/898 64/845/0/26394 EMM information
05/29 15:02:49.577 1101133203 613658/898 64/845/0/26394 mme_bearer_find_or_add_by_message() : ESM message type:194, PTI:0, EBI:5
05/29 15:02:49.577 1101133203 613658/898 64/845/0/26394 esm_state_inactive(): MME_EVENT_ESM_MESSAGE
05/29 15:02:49.577 1101133203 613658/898 64/845/52365352/26394 Activate default EPS bearer context accept
05/29 15:02:49.577 1101133203 613658/898 64/845/52365352/26394 esm_state_active(): ENTRY
05/29 15:02:50.840 1101133203 613658/898 64/845/52365352/26394 UECapabilityInfoIndication
05/29 15:02:50.886 1101135526 496/913 44/54/42104/45321 E_RABModificationIndication
05/29 15:02:50.887 1101135526 496/913 44/54/42104/45321 E-RABModificationConfirm
05/29 15:02:50.904 1101133203 613658/898 64/845/-1069940446/26394 E_RABModificationIndication
05/29 15:02:50.905 1101133203 613658/898 64/845/-1069940446/26394 E-RABModificationConfirm
05/29 15:02:51.402 1101135526 496/913 44/54/-1053294269/45321 E_RABModificationIndication
05/29 15:02:51.403 1101135526 496/913 44/54/-1053294269/45321 E-RABModificationConfirm
05/29 15:02:52.260 1101122519 490/222 267/300/41592/26394 E_RABModificationIndication
05/29 15:02:52.260 1101122519 490/222 267/300/41592/26394 E-RABModificationConfirm
05/29 15:02:59.275 1101133203 613658/898 64/845 UEContextReleaseRequest
05/29 15:02:59.275 1101133203 613658/898 64/845 UEContextReleaseCommand
05/29 15:02:59.277 1101133203 613658/898 64/845 UEContextReleaseComplete
05/29 15:03:26.951 1101122519 501/104 InitialUEMessage
05/29 15:03:26.951 1101122519 490/222 UEContextReleaseCommand
05/29 15:03:26.951 1101122519 501/104 ///26394 Service request
05/29 15:03:26.951 1101122519 501/104 ///26394 InitialContextSetupRequest
05/29 15:03:31.956 1101122519 502/32 267/300 InitialUEMessage
05/29 15:03:31.956 1101122519 501/104 UEContextReleaseCommand
05/29 15:03:31.956 1101122519 502/32 267/300 Service request
05/29 15:03:31.956 1101122519 502/32 267/300//26394 InitialContextSetupRequest
05/29 15:03:34.128 1101136523 613659/44 781/369 InitialContextSetupResponse
05/29 15:03:34.222 1101136523 613659/44 781/369 Attach complete
05/29 15:03:34.223 1101136523 613659/44 781/369 mme_bearer_find_or_add_by_message() : ESM message type:194, PTI:0, EBI:5
05/29 15:03:34.223 1101136523 613659/44 781/369 esm_state_inactive()
05/29 15:03:34.223 1101136523 613659/44 781/369 Activate default EPS bearer context accept
05/29 15:03:34.257 1101136523 613659/44 781/369 PDN Connectivity request
05/29 15:03:34.257 1101136523 613659/44 781/369 PDN Connectivity reject(ims)
05/29 15:03:34.257 1101136523 613659/44 781/369 esm_state_inactive(): EXIT
05/29 15:03:34.257 1101136523 613659/44 781/369 esm_state_exception(): ENTRY
05/29 15:03:34.257 1101136523 613659/44 781/369 Removed Session: UE IMSI:[1101136523] APN:[Unknown]
05/29 15:03:34.257 1101136523 613659/44 781/369 esm_state_exception(): EXIT
05/29 15:03:34.373 1101135526 500/620 44/54 UEContextReleaseComplete
05/29 15:03:34.423 1101122519 502/32 267/300/42616/26394 InitialContextSetupResponse
05/29 15:03:34.896 1101122519 502/32 267/300/-991690462/26394 E_RABModificationIndication
05/29 15:03:34.897 1101122519 502/32 267/300/-991690462/26394 E-RABModificationConfirm
05/29 15:03:35.078 1101135526 503/123 44/54 Service request
05/29 15:03:35.078 1101135526 503/123 44/54 InitialContextSetupRequest
05/29 15:03:35.123 1101135526 503/123 44/54 InitialContextSetupResponse
05/29 15:03:35.222 1101133205 613635/84 164/377 UEContextReleaseRequest
05/29 15:03:35.223 1101133205 613635/84 164/377 UEContextReleaseCommand
05/29 15:03:35.225 1101133205 613635/84 164/377 UEContextReleaseCommplete
05/29 15:03:34.421 1101136523 613659/44 781/369 UECapabilityInfoIndication
05/29 15:03:34.498 1101136523 613659/44 781/369 E_RABModificationIndication
05/29 15:03:34.499 1101136523 613659/44 781/369 E-RABModificationConfirm
05/29 15:03:35.619 1101135526 503/123 44/54 E_RABModificationIndication
05/29 15:03:35.619 1101135526 503/123 44/54 E-RABModificationConfirm
05/29 15:03:36.088 1101122519 501/104 InitialContextSetupFailure
05/29 15:03:36.088 1101122519 501/104 UEContextReleaseCommand
05/29 15:03:36.088 1101122519 501/104 UEContextReleaseComplete
05/29 15:03:36.328 1101133205 613660/844 164/377 Service request
05/29 15:03:36.328 1101133205 613660/844 164/377 InitialContextSetupRequest
05/29 15:03:36.388 1101133205 613660/844 164/377/52365432/22946 InitialContextSetupResponse
05/29 15:03:37.618 1101133205 613660/844 164/377/-942800606/22946 E_RABModificationIndication
05/29 15:03:37.618 1101133205 613660/844 164/377/-942800606/22946 E-RABModificationConfirm
05/29 15:04:26.776 1101122519 502/32 267/300/-991559390/26394 E_RABModificationIndication
05/29 15:04:26.777 1101122519 502/32 267/300/-991559390/26394 E-RABModificationConfirm
05/29 15:03:37.618 1101133205 613660/844 164/377/-942800606/22946 E-RABModificationConfirm
05/29 15:04:31.533 1101133205 613664/975 164/377 Servie request
05/29 15:04:31.533 1101133205 613664/975 164/0/0/22946 InitialContextSetupRequest
05/29 15:04:31.586 1101133205 613664/975 164/377 Downlink Data Notification
05/29 15:04:31.586 1101133205 613664/975 164/377 [1101133205] Clear Paging Info
05/29 15:04:31.586 1101133205 613664/975 164/377 Downlink Data Notification Ackknowledge
05/29 15:04:31.587 1101133205 613664/975 164/377/52365864/22946 InitialContextSetupResponse
05/29 15:04:34.042 1101136514 613665/870 625/870 Servie request
05/29 15:04:34.042 1101136514 613665/870 625/870 InitialContextSetupRequest
05/29 15:04:34.099 1101136514 613665/870 625/870 mme_bearer_find_or_add_by_message() : ESM message type:208, PTI:89, EBI:0
05/29 15:04:34.099 1101136514 613665/870 625/870 esm_state_inactive(): ENTRY
05/29 15:04:34.099 1101136514 613665/870 625/870 [Added] Number of MME-Sessions is now 29 (../src/mme/mme-context.c:4049)
05/29 15:04:34.099 1101136514 613665/870 625/870 PDN Connectivity request
05/29 15:04:34.099 1101136514 613665/870 625/870 PDN Connectivity reject(ims)
05/29 15:04:34.099 1101136514 613665/870 625/870 Removed Session: UE IMSI:[1101136514] APN:[Unknown]
05/29 15:04:34.099 1101136514 613665/870 625/870 InitialContextSetupResponse
05/29 15:04:45.037 1101136515 506/91 692/546 E_RABModificationIndication
05/29 15:04:45.037 1101136515 506/91 692/546 E-RABModificationConfirm
05/29 15:04:48.070 1101122519 502/32 267/300 Detach request
05/29 15:04:48.073 1101133023 613658/898 64/845 ERROR: S1 context has already been removed
05/29 15:04:48.073 1101133023 613658/898 64/845 ERROR: mme_s11_handle_delete_session_response: Expectation `r == OGS_OK' failed.
05/29 15:04:48.073 1101133023 613658/898 64/845 Removed Session: UE IMSI:[1101133203] APN:[internet]
05/29 15:04:48.073 1101133023 613658/898 64/845 esm_stae_active(): EXIT
05/29 15:04:48.474 1101136515 506/91 692/546 E_RABModificationIndication
05/29 15:04:48.475 1101136515 506/91 692/546 E-RABModificationConfirm
05/29 15:04:53.029 1101136515 506/91 692/546 E_RABModificationIndication
05/29 15:04:53.030 1101136515 506/91 692/546 E-RABModificationConfirm
05/29 15:04:53.278 1101135526 505/150 44/54 E_RABModificationIndication
05/29 15:04:53.279 1101135526 505/150 44/54 E-RABModificationConfirm
05/29 15:04:53.933 1101122519 502/32 267/300 E_RABModificationIndication
05/29 15:04:53.933 1101122519 502/32 267/300 ERROR: No Bearer [5]
05/29 15:04:53.933 1101122519 502/32 267/300 ErrorIndication
05/29 15:04:53.990 1101135526 505/150 44/54 E_RABModificationIndication
05/29 15:04:53.991 1101135526 505/150 44/54 E-RABModificationConfirm
05/29 15:04:55.146 1101122519 502/32 267/300 Attach request
05/29 15:04:55.146 1101133023 613658/898 64/845 Removed Session: UE IMSI:[1101133203] APN:[internet]
05/29 15:04:55.146 1101122519 502/32 267/300 emm_state_initial_context_setup(): ENTRY
05/29 15:04:55.146 1101122519 502/32 267/300 mme_bearer_find_or_add_by_message() : ESM message type:208, PTI:16, EBI:0
05/29 15:04:55.147 1101122519 502/32 267/300 ERROR: No Bearer(1) : ESM message type:208, PTI:16, EBI:0
*/
static void issues_2287_v264_func(abts_case *tc, void *data)
{
int rv, i;
ogs_socknode_t *s1ap;
ogs_socknode_t *gtpu;
ogs_pkbuf_t *emmbuf;
ogs_pkbuf_t *esmbuf;
ogs_pkbuf_t *sendbuf;
ogs_pkbuf_t *recvbuf;
ogs_s1ap_message_t message;
ogs_nas_5gs_mobile_identity_suci_t mobile_identity_suci;
test_ue_t *test_ue[NUM_OF_TEST_UE];
test_sess_t *sess = NULL;
test_bearer_t *bearer = NULL;
uint32_t enb_ue_s1ap_id;
uint64_t mme_ue_s1ap_id;
bson_t *doc = NULL;
/* eNB connects to MME */
s1ap = tests1ap_client(AF_INET);
ABTS_PTR_NOTNULL(tc, s1ap);
/* eNB connects to SGW */
gtpu = test_gtpu_server(1, AF_INET);
ABTS_PTR_NOTNULL(tc, gtpu);
/* Send S1-Setup Reqeust */
sendbuf = test_s1ap_build_s1_setup_request(
S1AP_ENB_ID_PR_macroENB_ID, 0x54f64);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive S1-Setup Response */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(NULL, recvbuf);
for (i = 0; i < NUM_OF_TEST_UE; i++) {
const char *scheme_output[] = {
"0000000001",
"0000000002",
"0000000003",
"0000000004",
"0000000005",
};
/* Setup Test UE & Session Context */
memset(&mobile_identity_suci, 0, sizeof(mobile_identity_suci));
mobile_identity_suci.h.supi_format = OGS_NAS_5GS_SUPI_FORMAT_IMSI;
mobile_identity_suci.h.type = OGS_NAS_5GS_MOBILE_IDENTITY_SUCI;
mobile_identity_suci.routing_indicator1 = 0;
mobile_identity_suci.routing_indicator2 = 0xf;
mobile_identity_suci.routing_indicator3 = 0xf;
mobile_identity_suci.routing_indicator4 = 0xf;
mobile_identity_suci.protection_scheme_id = OGS_PROTECTION_SCHEME_NULL;
mobile_identity_suci.home_network_pki_value = 0;
test_ue[i] = test_ue_add_by_suci(
&mobile_identity_suci, scheme_output[i]);
ogs_assert(test_ue[i]);
test_ue[i]->e_cgi.cell_id = 0x54f6401;
test_ue[i]->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue[i]->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
test_ue[i]->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue[i]->opc_string = "e8ed289deba952e4283b54e88e6183ca";
/********** Insert Subscriber in Database */
doc = test_db_new_simple(test_ue[i]);
ABTS_PTR_NOTNULL(tc, doc);
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue[i], doc));
}
/**********************************************************
* Second UE - INITIAL
**********************************************************/
test_ue[1]->enb_ue_s1ap_id = 200;
sess = test_sess_add_by_apn(
test_ue[1], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 8;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[1]->attach_request_param,
0, sizeof(test_ue[1]->attach_request_param));
test_ue[1]->attach_request_param.drx_parameter = 1;
test_ue[1]->attach_request_param.ms_network_capability = 1;
test_ue[1]->attach_request_param.tmsi_status = 1;
test_ue[1]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[1]->attach_request_param.supported_codecs = 1;
test_ue[1]->attach_request_param.ue_usage_setting = 1;
test_ue[1]->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue[1], esmbuf, false, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[1]->initial_ue_param, 0,
sizeof(test_ue[1]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[1], emmbuf,
S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Authentication Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Authentication response */
emmbuf = testemm_build_authentication_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Security mode Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Security mode complete */
test_ue[1]->mobile_identity_imeisv_presence = true;
emmbuf = testemm_build_security_mode_complete(test_ue[1]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send UE Capability Info Indication */
sendbuf =
tests1ap_build_ue_radio_capability_info_indication(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[1]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[1], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send UE Context Release Request */
sendbuf = test_s1ap_build_ue_context_release_request(test_ue[1],
S1AP_Cause_PR_radioNetwork, S1AP_CauseRadioNetwork_user_inactivity);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive UE Context Release Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send UE Context Release Complete */
sendbuf = test_s1ap_build_ue_context_release_complete(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/**********************************************************
* First UE - INITIAL
**********************************************************/
test_ue[0]->enb_ue_s1ap_id = 100;
sess = test_sess_add_by_apn(
test_ue[0], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 21;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[0]->attach_request_param,
0, sizeof(test_ue[0]->attach_request_param));
test_ue[0]->attach_request_param.drx_parameter = 1;
test_ue[0]->attach_request_param.ms_network_capability = 1;
test_ue[0]->attach_request_param.tmsi_status = 1;
test_ue[0]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[0]->attach_request_param.supported_codecs = 1;
test_ue[0]->attach_request_param.ue_usage_setting = 1;
test_ue[0]->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue[0], esmbuf, false, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[0]->initial_ue_param, 0,
sizeof(test_ue[0]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[0], emmbuf,
S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Authentication Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Authentication response */
emmbuf = testemm_build_authentication_response(test_ue[0]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Security mode Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Security mode complete */
test_ue[0]->mobile_identity_imeisv_presence = true;
emmbuf = testemm_build_security_mode_complete(test_ue[0]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send UE Capability Info Indication */
sendbuf = tests1ap_build_ue_radio_capability_info_indication(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[0]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[0], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[0], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[0], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/* Send E-RABModificationIndication */
ogs_list_for_each(&sess->bearer_list, bearer)
bearer->enb_s1u_teid++;
sendbuf = test_s1ap_build_e_rab_modification_indication(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive E-RABModificationConfirm */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
/**********************************************************
* Second UE - AUTH
**********************************************************/
sess = test_sess_find_by_apn(
test_ue[1], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
test_sess_remove(sess);
sess = test_sess_add_by_apn(
test_ue[1], "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
sess->pti = 1;
/* Send Attach Request */
memset(&sess->pdn_connectivity_param,
0, sizeof(sess->pdn_connectivity_param));
sess->pdn_connectivity_param.eit = 1;
sess->pdn_connectivity_param.pco = 1;
sess->pdn_connectivity_param.request_type =
OGS_NAS_EPS_REQUEST_TYPE_INITIAL;
esmbuf = testesm_build_pdn_connectivity_request(
sess, false, OGS_NAS_EPS_PDN_TYPE_IPV4V6);
ABTS_PTR_NOTNULL(tc, esmbuf);
memset(&test_ue[1]->attach_request_param,
0, sizeof(test_ue[1]->attach_request_param));
test_ue[1]->attach_request_param.drx_parameter = 1;
test_ue[1]->attach_request_param.ms_network_capability = 1;
test_ue[1]->attach_request_param.tmsi_status = 1;
test_ue[1]->attach_request_param.mobile_station_classmark_2 = 1;
test_ue[1]->attach_request_param.supported_codecs = 1;
test_ue[1]->attach_request_param.ue_usage_setting = 1;
test_ue[1]->attach_request_param.ms_network_feature_support = 1;
emmbuf = testemm_build_attach_request(test_ue[1], esmbuf, false, false);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue[1]->initial_ue_param, 0,
sizeof(test_ue[1]->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue[1], emmbuf,
S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Authentication Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Authentication response */
emmbuf = testemm_build_authentication_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Security mode Command */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Security mode complete */
test_ue[1]->mobile_identity_imeisv_presence = true;
emmbuf = testemm_build_security_mode_complete(test_ue[1]);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ESM Information Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send ESM Information Response */
esmbuf = testesm_build_esm_information_response(sess);
ABTS_PTR_NOTNULL(tc, esmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive Initial Context Setup Request +
* Attach Accept +
* Activate Default Bearer Context Request */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/* Send Initial Context Setup Response */
sendbuf = test_s1ap_build_initial_context_setup_response(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send UE Capability Info Indication */
sendbuf =
tests1ap_build_ue_radio_capability_info_indication(test_ue[1]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Send Attach Complete + Activate default EPS bearer cotext accept */
test_ue[1]->nr_cgi.cell_id = 0x1234502;
bearer = test_bearer_find_by_ue_ebi(test_ue[1], 5);
ogs_assert(bearer);
esmbuf = testesm_build_activate_default_eps_bearer_context_accept(
bearer, false);
ABTS_PTR_NOTNULL(tc, esmbuf);
emmbuf = testemm_build_attach_complete(test_ue[1], esmbuf);
ABTS_PTR_NOTNULL(tc, emmbuf);
sendbuf = test_s1ap_build_uplink_nas_transport(test_ue[1], emmbuf);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive EMM information */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[1], recvbuf);
/**********************************************************
* First UE - AUTH
**********************************************************/
/* Send E-RABModificationIndication */
ogs_list_for_each(&sess->bearer_list, bearer)
bearer->enb_s1u_teid++;
sendbuf = test_s1ap_build_e_rab_modification_indication(test_ue[0]);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive E-RABModificationConfirm */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue[0], recvbuf);
ogs_msleep(300);
for (i = 0; i < NUM_OF_TEST_UE; i++) {
/********** Remove Subscriber in Database */
ABTS_INT_EQUAL(tc, OGS_OK, test_db_remove_ue(test_ue[i]));
}
/* eNB disonncect from MME */
testenb_s1ap_close(s1ap);
/* eNB disonncect from SGW */
test_gtpu_close(gtpu);
test_ue_remove_all();
}
#if 0 /* Deprecated to resolve issue #3131 */
static void pull_3122_v270_func(abts_case *tc, void *data)
{
int rv;
ogs_socknode_t *s1ap;
ogs_socknode_t *gtpu;
ogs_pkbuf_t *emmbuf;
ogs_pkbuf_t *esmbuf;
ogs_pkbuf_t *sendbuf;
ogs_pkbuf_t *recvbuf;
ogs_s1ap_message_t message;
ogs_nas_5gs_mobile_identity_suci_t mobile_identity_suci;
test_ue_t *test_ue = NULL;
test_sess_t *sess = NULL;
test_bearer_t *bearer = NULL;
uint32_t enb_ue_s1ap_id;
uint64_t mme_ue_s1ap_id;
bson_t *doc = NULL;
/* Setup Test UE & Session Context */
memset(&mobile_identity_suci, 0, sizeof(mobile_identity_suci));
mobile_identity_suci.h.supi_format = OGS_NAS_5GS_SUPI_FORMAT_IMSI;
mobile_identity_suci.h.type = OGS_NAS_5GS_MOBILE_IDENTITY_SUCI;
mobile_identity_suci.routing_indicator1 = 0;
mobile_identity_suci.routing_indicator2 = 0xf;
mobile_identity_suci.routing_indicator3 = 0xf;
mobile_identity_suci.routing_indicator4 = 0xf;
mobile_identity_suci.protection_scheme_id = OGS_PROTECTION_SCHEME_NULL;
mobile_identity_suci.home_network_pki_value = 0;
test_ue = test_ue_add_by_suci(&mobile_identity_suci, "3746000006");
ogs_assert(test_ue);
test_ue->e_cgi.cell_id = 0x1079baf0;
test_ue->nas.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE;
test_ue->nas.value = OGS_NAS_ATTACH_TYPE_COMBINED_EPS_IMSI_ATTACH;
test_ue->k_string = "465b5ce8b199b49faa5f0a2ee238a6bc";
test_ue->opc_string = "e8ed289deba952e4283b54e88e6183ca";
sess = test_sess_add_by_apn(test_ue, "internet", OGS_GTP2_RAT_TYPE_EUTRAN);
ogs_assert(sess);
/* eNB connects to MME */
s1ap = tests1ap_client(AF_INET);
ABTS_PTR_NOTNULL(tc, s1ap);
/* eNB connects to SGW */
gtpu = test_gtpu_server(1, AF_INET);
ABTS_PTR_NOTNULL(tc, gtpu);
/* Send S1-Setup Reqeust */
sendbuf = test_s1ap_build_s1_setup_request(
S1AP_ENB_ID_PR_macroENB_ID, 0x54f64);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive S1-Setup Response */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(NULL, recvbuf);
/********** Insert Subscriber in Database */
doc = test_db_new_simple(test_ue);
ABTS_PTR_NOTNULL(tc, doc);
ABTS_INT_EQUAL(tc, OGS_OK, test_db_insert_ue(test_ue, doc));
/* Send Attach Request */
emmbuf = testemm_build_identity_response(test_ue);
ABTS_PTR_NOTNULL(tc, emmbuf);
memset(&test_ue->initial_ue_param, 0, sizeof(test_ue->initial_ue_param));
sendbuf = test_s1ap_build_initial_ue_message(
test_ue, emmbuf, S1AP_RRC_Establishment_Cause_mo_Signalling, false);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
/* Receive ErrorIndication */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Receive UEContextReleaseCommand */
recvbuf = testenb_s1ap_read(s1ap);
ABTS_PTR_NOTNULL(tc, recvbuf);
tests1ap_recv(test_ue, recvbuf);
/* Send UEContextReleaseComplete */
sendbuf = test_s1ap_build_ue_context_release_complete(test_ue);
ABTS_PTR_NOTNULL(tc, sendbuf);
rv = testenb_s1ap_send(s1ap, sendbuf);
ABTS_INT_EQUAL(tc, OGS_OK, rv);
ogs_msleep(300);
/********** Remove Subscriber in Database */
ABTS_INT_EQUAL(tc, OGS_OK, test_db_remove_ue(test_ue));
/* eNB disonncect from MME */
testenb_s1ap_close(s1ap);
/* eNB disonncect from SGW */
test_gtpu_close(gtpu);
test_ue_remove(test_ue);
}
#endif
abts_suite *test_issues(abts_suite *suite)
{
suite = ADD_SUITE(suite)
abts_run_test(suite, issues_1431_func, NULL);
abts_run_test(suite, issues_2287_v263_func, NULL);
abts_run_test(suite, issues_2287_v264_func, NULL);
#if 0 /* Deprecated to resolve issue #3131 */
abts_run_test(suite, pull_3122_v270_func, NULL);
#endif
return suite;
}