From a5e369300f77269b2f6b596c2bf7f53795602a0c Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 11 Jan 2017 11:51:28 +0100 Subject: Improve OML failure report * clearly separate report parts * use textual representation for failure cause if possible Change-Id: I7a98a77011463021d0edd6ecfab1680e211f7e16 Related: OS#1615 --- openbsc/src/libbsc/abis_nm.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c index 269822516..8b0eec2ee 100644 --- a/openbsc/src/libbsc/abis_nm.c +++ b/openbsc/src/libbsc/abis_nm.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -281,25 +282,32 @@ static int rx_fail_evt_rep(struct msgb *mb) const uint8_t *p_val; char *p_text; - LOGPC(DNM, LOGL_ERROR, "Failure Event Report "); - + LOGPC(DNM, LOGL_ERROR, "Failure Event Report: "); + abis_nm_tlv_parse(&tp, sign_link->trx->bts, foh->data, oh->length-sizeof(*foh)); if (TLVP_PRESENT(&tp, NM_ATT_EVENT_TYPE)) - LOGPC(DNM, LOGL_ERROR, "Type=%s ", + LOGPC(DNM, LOGL_ERROR, "Type=%s, ", abis_nm_event_type_name(*TLVP_VAL(&tp, NM_ATT_EVENT_TYPE))); if (TLVP_PRESENT(&tp, NM_ATT_SEVERITY)) - LOGPC(DNM, LOGL_ERROR, "Severity=%s ", + LOGPC(DNM, LOGL_ERROR, "Severity=%s, ", abis_nm_severity_name(*TLVP_VAL(&tp, NM_ATT_SEVERITY))); if (TLVP_PRESENT(&tp, NM_ATT_PROB_CAUSE)) { p_val = TLVP_VAL(&tp, NM_ATT_PROB_CAUSE); - LOGPC(DNM, LOGL_ERROR, "Probable cause= %02X %02X %02X ", p_val[0], p_val[1], p_val[2]); + LOGPC(DNM, LOGL_ERROR, "Probable cause=%s: ", + get_value_string(abis_nm_pcause_type_names, p_val[0])); + if (p_val[0] == NM_PCAUSE_T_MANUF) + LOGPC(DNM, LOGL_ERROR, "%s, ", + get_value_string(abis_mm_event_cause_names, + osmo_load16be(p_val + 1))); + else + LOGPC(DNM, LOGL_ERROR, "%02X %02X ", p_val[1], p_val[2]); } if (TLVP_PRESENT(&tp, NM_ATT_ADD_TEXT)) { p_val = TLVP_VAL(&tp, NM_ATT_ADD_TEXT); p_text = talloc_strndup(tall_bsc_ctx, (const char *) p_val, TLVP_LEN(&tp, NM_ATT_ADD_TEXT)); if (p_text) { - LOGPC(DNM, LOGL_ERROR, "Additional Text=%s ", p_text); + LOGPC(DNM, LOGL_ERROR, "Additional Text=%s. ", p_text); talloc_free(p_text); } } -- cgit v1.2.3