Review at https://gerrit.osmocom.org/3012
add various debug logging to help figure out complex SCCP routing Change-Id: Ia3243606d6cad7721f7da7f6caba2caa90ae2bbd --- M src/m3ua.c M src/osmo_ss7.c M src/osmo_ss7_hmrt.c M src/sccp_scoc.c M src/sccp_scrc.c 5 files changed, 32 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/12/3012/1 diff --git a/src/m3ua.c b/src/m3ua.c index d96bd18..22e1f9c 100644 --- a/src/m3ua.c +++ b/src/m3ua.c @@ -536,6 +536,8 @@ struct m3ua_data_hdr *dh; struct osmo_ss7_as *as; + LOGPASP(asp, DLM3UA, LOGL_DEBUG, "m3ua_rx_xfer\n"); + if (xua->hdr.msg_type != M3UA_XFER_DATA) return M3UA_ERR_UNSUPP_MSG_TYPE; @@ -556,6 +558,9 @@ dh = data_hdr_from_m3ua(xua); OSMO_ASSERT(dh); m3ua_dh_to_xfer_param(&xua->mtp, dh); + LOGPASP(asp, DLM3UA, LOGL_DEBUG, + "m3ua data hdr opc=%u dpc=%u\n", + xua->mtp.opc, xua->mtp.dpc); /* remove ROUTE_CTX as in the routing case we want to add a new * routing context on the outbound side */ diff --git a/src/osmo_ss7.c b/src/osmo_ss7.c index 78b22a7..1ef04ca 100644 --- a/src/osmo_ss7.c +++ b/src/osmo_ss7.c @@ -740,10 +740,15 @@ rt->cfg.pc = pc; rt->cfg.mask = mask; rt->cfg.linkset_name = talloc_strdup(rt, linkset_name); - if (lset) + if (lset) { rt->dest.linkset = lset; - else + DEBUGP(DLSS7, "Created route pc=%u mask=%u name=%s linkset %s\n", pc, mask, linkset_name, + lset->cfg.name); + } else { rt->dest.as = as; + DEBUGP(DLSS7, "Created route pc=%u mask=%u name=%s as %s\n", pc, mask, linkset_name, + as->cfg.name); + } rt->rtable = rtbl; route_insert_sorted(rtbl, rt); diff --git a/src/osmo_ss7_hmrt.c b/src/osmo_ss7_hmrt.c index e66762d..b018639 100644 --- a/src/osmo_ss7_hmrt.c +++ b/src/osmo_ss7_hmrt.c @@ -132,6 +132,15 @@ /* FIXME: unify with gen_mtp_transfer_req_xua() */ rt = osmo_ss7_route_lookup(inst, dpc); if (rt) { + DEBUGP(DLSS7, "found route for dpc %u: %s pc=%u mask=%u %s:%s\n", dpc, + rt->cfg.linkset_name, + rt->cfg.pc, + rt->cfg.mask, + rt->dest.linkset ? "linkset" + : (rt->dest.as ? "as" : "-"), + rt->dest.linkset ? rt->dest.linkset->cfg.name + : (rt->dest.as ? rt->dest.as->cfg.name : "-") + ); /* FIXME: DPC SP restart? */ /* FIXME: DPC Congested? */ /* FIXME: Select link based on SLS */ @@ -140,6 +149,7 @@ struct osmo_ss7_as *as = rt->dest.as; switch (as->cfg.proto) { case OSMO_SS7_ASP_PROT_M3UA: + DEBUGP(DLSS7, "rt->dest.as proto is M3UA for dpc %u\n", dpc); return m3ua_tx_xua_as(as,xua); case OSMO_SS7_ASP_PROT_IPA: return ipa_tx_xua_as(as, xua); @@ -171,8 +181,10 @@ { uint32_t dpc = xua->mtp.dpc; if (osmo_ss7_pc_is_local(inst, dpc)) { + DEBUGP(DLSS7, "dpc %u is local\n", dpc); return hmdt_message_for_distribution(inst, xua); } else { + DEBUGP(DLSS7, "dpc %u is for routing\n", dpc); return hmrt_message_for_routing(inst, xua); } } diff --git a/src/sccp_scoc.c b/src/sccp_scoc.c index fbb6ef8..54ce707 100644 --- a/src/sccp_scoc.c +++ b/src/sccp_scoc.c @@ -1544,6 +1544,8 @@ * the one we saved in local state */ src_loc_ref = xua_msg_get_u32(xua, SUA_IEI_SRC_REF); if (src_loc_ref != conn->remote_ref) { + DEBUGP(DLSCCP, "src_loc_ref(%u) != conn->remote_ref(%u)\n", + src_loc_ref, conn->remote_ref); sccp_scoc_rx_inval_src_ref(conn, xua); return; } @@ -1551,6 +1553,8 @@ /* Check if received OPC != the remote_pc we stored locally */ if (xua->mtp.opc != conn->remote_pc) { + DEBUGP(DLSCCP, "xua->mtp.opc(%u) != conn->remote_pc(%u)\n", + xua->mtp.opc, conn->remote_pc); sccp_scoc_rx_inval_opc(inst, xua); return; } diff --git a/src/sccp_scrc.c b/src/sccp_scrc.c index a4ce34c..333ab61 100644 --- a/src/sccp_scrc.c +++ b/src/sccp_scrc.c @@ -238,6 +238,7 @@ static int scrc_node_4(struct osmo_sccp_instance *inst, struct xua_msg *xua, uint32_t return_cause) { + LOGP(DLSS7, LOGL_DEBUG, "scrc_node_4\n"); /* TODO: Routing Failure SCRC -> OMAP */ if (sua_is_connectionless(xua)) { /* Routing Failure SCRC -> SCLC */ @@ -436,6 +437,7 @@ if (!sua_is_connectionless(xua) && !sua_is_cr(xua)) { /* Node 1 (Sheet 3) */ /* deliver to SCOC */ + LOGP(DLSS7, LOGL_DEBUG, "deliver to SCOC\n"); sccp_scoc_rx_from_scrc(inst, xua); return 0; } @@ -446,6 +448,7 @@ /* Route on GT? */ if (called.ri != OSMO_SCCP_RI_GT) { /* Node 6 (Sheet 3) */ + LOGP(DLSS7, LOGL_DEBUG, "called.ri != OSMO_SCCP_RI_GT\n"); return scrc_node_6(inst, xua, &called); } /* Message with hop-counter? */ @@ -455,6 +458,7 @@ if (hop_counter <= 1) { /* Error: hop-counter violation */ /* node 4 */ + LOGP(DLSS7, LOGL_DEBUG, "hop-counter violation\n"); return scrc_node_4(inst, xua, SCCP_RETURN_CAUSE_HOP_COUNTER_VIOLATION); } /* Decrement hop-counter */ -- To view, visit https://gerrit.osmocom.org/3012 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia3243606d6cad7721f7da7f6caba2caa90ae2bbd Gerrit-PatchSet: 1 Gerrit-Project: libosmo-sccp Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofm...@sysmocom.de>