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>

Reply via email to