pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-sigtran/+/42029?usp=email )


Change subject: m3ua: Allow rx SCON in IPSP role
......................................................................

m3ua: Allow rx SCON in IPSP role

Change-Id: I49838219aab912243a761ab9b5167095e363c72b
---
M src/m3ua.c
1 file changed, 29 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran 
refs/changes/29/42029/1

diff --git a/src/m3ua.c b/src/m3ua.c
index f2844fa..afe75de 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -1107,6 +1107,34 @@
        return rc;
 }

+/* received SNM message on IPSP side
+ * xua is owned by parent call m3ua_rx_snm() */
+static int m3ua_rx_snm_ipsp(struct osmo_ss7_asp *asp, struct xua_msg *xua)
+{
+       struct osmo_ss7_as *as = NULL;
+       struct xua_msg_part *rctx_ie;
+       int rc = 0;
+
+       switch (xua->hdr.msg_type) {
+       case M3UA_SNM_SCON:
+               /* RFC4666 1.4.6: "The M3UA layer at an ASP or IPSP MAY 
indicate local congestion
+                * to an M3UA peer with an SCON message."
+                * An IPSP can only be connected against another IPSP, hence if 
an IPSP can send
+                * an SCON, it can be derived that it is expected it can 
receive it: */
+               rctx_ie = xua_msg_find_tag(xua, M3UA_IEI_ROUTE_CTX);
+               rc = xua_find_as_for_asp(&as, asp, rctx_ie);
+               if (rc)
+                       return rc;
+               xua_snm_rx_scon(asp, as, xua);
+               break;
+       default:
+               /* RFC 4666 Section 1.5.2: there is no MTP3 network management 
status information */
+               return M3UA_ERR_UNSUPP_MSG_TYPE;
+       }
+
+       return rc;
+}
+
 /* received SNM message
  * This function takes ownership of xua msg passed to it. */
 static int m3ua_rx_snm(struct osmo_ss7_asp *asp, struct xua_msg *xua)
@@ -1150,7 +1178,7 @@
                rc = m3ua_rx_snm_asp(asp, xua);
                break;
        case OSMO_SS7_ASP_ROLE_IPSP:
-               /* RFC 4666 Section 1.5.2: there is no MTP3 network management 
status information */
+               rc = m3ua_rx_snm_ipsp(asp, xua);
        default:
                rc = M3UA_ERR_UNSUPP_MSG_CLASS;
                break;

-- 
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/42029?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I49838219aab912243a761ab9b5167095e363c72b
Gerrit-Change-Number: 42029
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to