Add trace log for debugging #2287

This commit is contained in:
Sukchan Lee 2023-08-07 22:13:35 +09:00
parent 03c0043e51
commit 9f19210f22
10 changed files with 1603 additions and 9 deletions

View File

@ -54,6 +54,8 @@ int emm_handle_attach_request(mme_ue_t *mme_ue,
char imsi_bcd[OGS_MAX_IMSI_BCD_LEN+1];
MME_UE_LIST_CHECK;
ogs_assert(mme_ue);
enb_ue = enb_ue_cycle(mme_ue->enb_ue);
ogs_assert(enb_ue);
@ -274,6 +276,7 @@ int emm_handle_attach_complete(
ogs_assert(mme_ue);
ogs_info(" IMSI[%s]", mme_ue->imsi_bcd);
MME_UE_LIST_CHECK;
ogs_gettimeofday(&tv);
ogs_gmtime(tv.tv_sec, &gmt);
@ -787,6 +790,7 @@ int emm_handle_security_mode_complete(mme_ue_t *mme_ue,
ogs_nas_mobile_identity_t *imeisv = &security_mode_complete->imeisv;
ogs_assert(mme_ue);
MME_UE_LIST_CHECK;
if (security_mode_complete->presencemask &
OGS_NAS_EPS_SECURITY_MODE_COMMAND_IMEISV_REQUEST_PRESENT) {

View File

@ -849,6 +849,7 @@ void emm_state_authentication(ogs_fsm_t *s, mme_event_t *e)
authentication_response_parameter;
ogs_debug("Authentication response");
MME_UE_LIST_CHECK;
ogs_debug(" IMSI[%s]", mme_ue->imsi_bcd);
CLEAR_MME_UE_TIMER(mme_ue->t3460);

View File

@ -36,6 +36,8 @@ int esm_handle_pdn_connectivity_request(mme_bearer_t *bearer,
mme_sess_t *sess = NULL;
uint8_t security_protected_required = 0;
MME_UE_LIST_CHECK;
ogs_assert(bearer);
sess = bearer->sess;
ogs_assert(sess);
@ -183,6 +185,8 @@ int esm_handle_information_response(mme_sess_t *sess,
ogs_assert(rsp);
MME_UE_LIST_CHECK;
if (rsp->presencemask &
OGS_NAS_EPS_ESM_INFORMATION_RESPONSE_ACCESS_POINT_NAME_PRESENT) {
sess->session = mme_session_find_by_apn(

View File

@ -183,6 +183,7 @@ void esm_state_inactive(ogs_fsm_t *s, mme_event_t *e)
break;
case OGS_NAS_EPS_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT:
ogs_debug("Activate default EPS bearer context accept");
MME_UE_LIST_CHECK;
ogs_debug(" IMSI[%s] PTI[%d] EBI[%d]",
mme_ue->imsi_bcd, sess->pti, bearer->ebi);
/* Check if Initial Context Setup Response or

View File

@ -4069,14 +4069,42 @@ mme_bearer_t *mme_bearer_find_or_add_by_message(
}
} else {
sess = mme_sess_first(mme_ue);
ogs_debug("[%s:%p]", mme_ue->imsi_bcd, mme_ue);
if (sess) {
ogs_debug("[%s:%d:%d:%p]",
sess->session ? sess->session->name : "Unknown",
sess->pti, pti, sess);
ogs_debug("[%s:%p]",
sess->mme_ue ? sess->mme_ue->imsi_bcd : "Unknown",
sess->mme_ue);
}
MME_UE_LIST_CHECK;
}
if (!sess)
if (!sess) {
sess = mme_sess_add(mme_ue, pti);
else
sess->pti = pti;
ogs_assert(sess);
ogs_debug("[%s:%p]", mme_ue->imsi_bcd, mme_ue);
ogs_debug("[%s:%d:%d:%p]",
sess->session ? sess->session->name : "Unknown",
sess->pti, pti, sess);
ogs_debug("[%s:%p]",
sess->mme_ue ? sess->mme_ue->imsi_bcd : "Unknown",
sess->mme_ue);
MME_UE_LIST_CHECK;
} else {
sess->pti = pti;
ogs_debug("[%s:%p]", mme_ue->imsi_bcd, mme_ue);
ogs_debug("[%s:%d:%d:%p]",
sess->session ? sess->session->name : "Unknown",
sess->pti, pti, sess);
ogs_debug("[%s:%p]",
sess->mme_ue ? sess->mme_ue->imsi_bcd : "Unknown",
sess->mme_ue);
MME_UE_LIST_CHECK;
}
ogs_assert(sess);
} else {
sess = mme_sess_find_by_pti(mme_ue, pti);
if (!sess) {

View File

@ -148,6 +148,44 @@ typedef struct mme_context_s {
/* Generator for unique identification */
uint32_t mme_ue_s1ap_id; /* mme_ue_s1ap_id generator */
#define MME_UE_LIST_CHECK \
if (ogs_log_get_domain_level(OGS_LOG_DOMAIN) >= OGS_LOG_TRACE) { \
mme_ue_t *mme_ue = NULL; \
sgw_ue_t *sgw_ue = NULL; \
enb_ue_t *enb_ue = NULL; \
mme_sess_t *sess = NULL; \
mme_bearer_t *bearer = NULL; \
ogs_list_for_each(&mme_self()->mme_ue_list, mme_ue) { \
ogs_trace("MME_UE(%p) [%s] MME_S11_TEID[%d]", \
mme_ue, mme_ue->imsi_bcd, mme_ue->mme_s11_teid); \
if (mme_ue->sgw_ue) { \
sgw_ue = mme_ue->sgw_ue; \
ogs_trace("SGW_UE(%p) MME_UE(%p) SGW_S11_TEID[%d]", \
sgw_ue, mme_ue, sgw_ue->sgw_s11_teid); \
} \
if (mme_ue->enb_ue) { \
enb_ue = mme_ue->enb_ue; \
ogs_trace("ENB_UE(%p) MME_UE(%p) " \
"[ENB_UE_S1AP_ID:%d MME_UE_S1AP_ID:%d]", \
enb_ue, enb_ue->mme_ue, \
enb_ue->enb_ue_s1ap_id, enb_ue->mme_ue_s1ap_id); \
} \
ogs_list_for_each(&mme_ue->sess_list, sess) { \
ogs_trace("SESS(%p) [%s:%d]", sess, \
sess->session ? sess->session->name : "Unknown", \
sess->pti); \
ogs_assert(sess->mme_ue == mme_ue); \
ogs_list_for_each(&sess->bearer_list, bearer) { \
ogs_trace("BEARER(%p) [%d] " \
"ENB_S1U_TEID[%d] SGW_S1U_TEID[%d]", \
bearer, bearer->ebi, \
bearer->enb_s1u_teid, bearer->sgw_s1u_teid); \
ogs_assert(bearer->sess == sess); \
ogs_assert(bearer->mme_ue == mme_ue); \
} \
} \
} \
}
ogs_list_t mme_ue_list;
ogs_hash_t *enb_addr_hash; /* hash table for ENB Address */

View File

@ -103,6 +103,7 @@ void mme_s11_handle_create_session_response(
ogs_assert(rsp);
ogs_debug("Create Session Response");
MME_UE_LIST_CHECK;
/********************
* Check Transaction
@ -461,6 +462,7 @@ void mme_s11_handle_modify_bearer_response(
ogs_assert(rsp);
ogs_debug("Modify Bearer Response");
MME_UE_LIST_CHECK;
/********************
* Check Transaction
@ -572,6 +574,7 @@ void mme_s11_handle_delete_session_response(
ogs_assert(rsp);
ogs_debug("Delete Session Response");
MME_UE_LIST_CHECK;
/********************
* Check Transaction
@ -1224,6 +1227,7 @@ void mme_s11_handle_release_access_bearers_response(
ogs_assert(rsp);
ogs_debug("Release Access Bearers Response");
MME_UE_LIST_CHECK;
/********************
* Check Transaction

View File

@ -230,6 +230,7 @@ void s1ap_handle_initial_ue_message(mme_enb_t *enb, ogs_s1ap_message_t *message)
ogs_assert(InitialUEMessage);
ogs_info("InitialUEMessage");
MME_UE_LIST_CHECK;
for (i = 0; i < InitialUEMessage->protocolIEs.list.count; i++) {
ie = InitialUEMessage->protocolIEs.list.array[i];
@ -345,6 +346,16 @@ void s1ap_handle_initial_ue_message(mme_enb_t *enb, ogs_s1ap_message_t *message)
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
}
}
} else {
ogs_error("Known UE ENB_UE_S1AP_ID[%d] [%p:%p]",
(int)*ENB_UE_S1AP_ID, enb_ue, enb_ue->mme_ue);
if (enb_ue->mme_ue)
ogs_error(" S_TMSI[G:%d,C:%d,M_TMSI:0x%x] IMSI:[%s]",
enb_ue->mme_ue->current.guti.mme_gid,
enb_ue->mme_ue->current.guti.mme_code,
enb_ue->mme_ue->current.guti.m_tmsi,
MME_UE_HAVE_IMSI(enb_ue->mme_ue)
? enb_ue->mme_ue->imsi_bcd : "Unknown");
}
if (!NAS_PDU) {
@ -436,6 +447,7 @@ void s1ap_handle_uplink_nas_transport(
ogs_assert(UplinkNASTransport);
ogs_debug("UplinkNASTransport");
MME_UE_LIST_CHECK;
for (i = 0; i < UplinkNASTransport->protocolIEs.list.count; i++) {
ie = UplinkNASTransport->protocolIEs.list.array[i];
@ -600,6 +612,7 @@ void s1ap_handle_ue_capability_info_indication(
ogs_assert(UECapabilityInfoIndication);
ogs_debug("UECapabilityInfoIndication");
MME_UE_LIST_CHECK;
for (i = 0; i < UECapabilityInfoIndication->protocolIEs.list.count; i++) {
ie = UECapabilityInfoIndication->protocolIEs.list.array[i];
@ -698,6 +711,7 @@ void s1ap_handle_initial_context_setup_response(
ogs_assert(InitialContextSetupResponse);
ogs_debug("InitialContextSetupResponse");
MME_UE_LIST_CHECK;
for (i = 0; i < InitialContextSetupResponse->protocolIEs.list.count; i++) {
ie = InitialContextSetupResponse->protocolIEs.list.array[i];
@ -1797,6 +1811,7 @@ void s1ap_handle_e_rab_modification_indication(
ogs_assert(E_RABModificationIndication);
ogs_info("E_RABModificationIndication");
MME_UE_LIST_CHECK;
for (i = 0; i < E_RABModificationIndication->protocolIEs.list.count; i++) {
ie = E_RABModificationIndication->protocolIEs.list.array[i];

File diff suppressed because it is too large Load Diff

View File

@ -293,7 +293,7 @@ int test_context_parse_config(void)
NULL, self.ngap_port, NULL);
ogs_assert(rv == OGS_OK);
}
} if (!strcmp(amf_key, "tai")) {
} else if (!strcmp(amf_key, "tai")) {
int num_of_list0 = 0;
int num_of_list1 = 0;
ogs_5gs_tai0_list_t *list0 = NULL;
@ -620,10 +620,7 @@ int test_context_parse_config(void)
}
} while (ogs_yaml_iter_type(&plmn_support_array) ==
YAML_SEQUENCE_NODE);
} else if (!strcmp(amf_key, "sbi")) {
/* handle config in sbi library */
} else
ogs_warn("unknown key `%s`", amf_key);
}
}
} else if (!strcmp(root_key, "mme")) {
ogs_yaml_iter_t mme_iter;