<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/15814">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ipa: VTY config option to explicitly enable/disable SCCP patching<br><br>When receiving SCCP messages from an IPA peer/ASP, osmo-stp so far<br>unconditionally inserted origin/destination point codes int the SCCP<br>called / calling party addresses.<br><br>This behaviro is now made optional with the introduction of the<br>following per-AS configuration:<br>    "point-code override patch-sccp (disabled|both)"<br><br>The default behavior is switched from 'both' to 'disabled' at the same<br>time.<br><br>Change-Id: I535e2170adadfe755d2bcbf5bbf4556bebb77737<br>Closes: OS#4219<br>---<br>M include/osmocom/sigtran/osmo_ss7.h<br>M src/ipa.c<br>M src/osmo_ss7_vty.c<br>3 files changed, 40 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/14/15814/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/sigtran/osmo_ss7.h b/include/osmocom/sigtran/osmo_ss7.h</span><br><span>index 14e2b7c..d6ae1d4 100644</span><br><span>--- a/include/osmocom/sigtran/osmo_ss7.h</span><br><span>+++ b/include/osmocom/sigtran/osmo_ss7.h</span><br><span>@@ -290,6 +290,11 @@</span><br><span> </span><br><span> int osmo_ss7_asp_protocol_port(enum osmo_ss7_asp_protocol prot);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+enum osmo_ss7_as_patch_sccp_mode {</span><br><span style="color: hsl(120, 100%, 40%);">+        OSMO_SS7_PATCH_NONE,    /* no patching of SCCP */</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMO_SS7_PATCH_BOTH,    /* patch both OPC and DPC into SCCP addresses */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct osmo_ss7_as {</span><br><span>       /*! entry in 'ref osmo_ss7_instance.as_list */</span><br><span>   struct llist_head list;</span><br><span>@@ -314,6 +319,7 @@</span><br><span>                uint8_t qos_class;</span><br><span>           struct {</span><br><span>                     uint32_t dpc;</span><br><span style="color: hsl(120, 100%, 40%);">+                 enum osmo_ss7_as_patch_sccp_mode sccp_mode;</span><br><span>          } pc_override;</span><br><span> </span><br><span>           struct osmo_ss7_asp *asps[16];</span><br><span>diff --git a/src/ipa.c b/src/ipa.c</span><br><span>index eeefbe8..d7a929d 100644</span><br><span>--- a/src/ipa.c</span><br><span>+++ b/src/ipa.c</span><br><span>@@ -260,10 +260,12 @@</span><br><span>      }</span><br><span> </span><br><span>        /* Second, patch this into the SCCP message */</span><br><span style="color: hsl(0, 100%, 40%);">-  msg = patch_sccp_with_pc(asp, msg, opc, dpc);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!msg) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGPASP(asp, DLSS7, LOGL_ERROR, "Unable to patch PC into SCCP message; dropping\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+    if (as->cfg.pc_override.sccp_mode == OSMO_SS7_PATCH_BOTH) {</span><br><span style="color: hsl(120, 100%, 40%);">+                msg = patch_sccp_with_pc(asp, msg, opc, dpc);</span><br><span style="color: hsl(120, 100%, 40%);">+         if (!msg) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGPASP(asp, DLSS7, LOGL_ERROR, "Unable to patch PC into SCCP message; dropping\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                        return -1;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>    }</span><br><span> </span><br><span>        /* Third, create a MTP3/M3UA label with those point codes */</span><br><span>diff --git a/src/osmo_ss7_vty.c b/src/osmo_ss7_vty.c</span><br><span>index cc53b05..35ee5cd 100644</span><br><span>--- a/src/osmo_ss7_vty.c</span><br><span>+++ b/src/osmo_ss7_vty.c</span><br><span>@@ -932,6 +932,30 @@</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(as_pc_patch_sccp, as_pc_patch_sccp_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+   "point-code override patch-sccp (disabled|both)",</span><br><span style="color: hsl(120, 100%, 40%);">+   "Point Code Specific Features\n"</span><br><span style="color: hsl(120, 100%, 40%);">+    "Override (force) a point-code to hard-coded value\n"</span><br><span style="color: hsl(120, 100%, 40%);">+       "Patch point code values into SCCP called/calling address\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Don't patch any point codes into SCCP called/calling address\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Patch both origin and destination point codes into SCCP called/calling address\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct osmo_ss7_as *as = vty->index;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (as->cfg.proto != OSMO_SS7_ASP_PROT_IPA) {</span><br><span style="color: hsl(120, 100%, 40%);">+              vty_out(vty, "Only IPA type AS support point-code patch-into-sccp. "</span><br><span style="color: hsl(120, 100%, 40%);">+                        "Be happy that you don't need it!%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+             return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (!strcmp(argv[0], "disabled"))</span><br><span style="color: hsl(120, 100%, 40%);">+           as->cfg.pc_override.sccp_mode = OSMO_SS7_PATCH_NONE;</span><br><span style="color: hsl(120, 100%, 40%);">+       else</span><br><span style="color: hsl(120, 100%, 40%);">+          as->cfg.pc_override.sccp_mode = OSMO_SS7_PATCH_BOTH;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void write_one_as(struct vty *vty, struct osmo_ss7_as *as)</span><br><span> {</span><br><span>   struct osmo_ss7_routing_key *rkey;</span><br><span>@@ -973,6 +997,9 @@</span><br><span>     if (as->cfg.pc_override.dpc)</span><br><span>              vty_out(vty, "  point-code override dpc %s%s",</span><br><span>                     osmo_ss7_pointcode_print(as->inst, as->cfg.pc_override.dpc), VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if (as->cfg.pc_override.sccp_mode)</span><br><span style="color: hsl(120, 100%, 40%);">+         vty_out(vty, "  point-code override patch-sccp both%s", VTY_NEWLINE);</span><br><span> }</span><br><span> </span><br><span> DEFUN(show_cs7_as, show_cs7_as_cmd,</span><br><span>@@ -1807,6 +1834,7 @@</span><br><span>      install_element(L_CS7_AS_NODE, &as_rout_key_ssn_cmd);</span><br><span>    install_element(L_CS7_AS_NODE, &as_rout_key_si_ssn_cmd);</span><br><span>         install_element(L_CS7_AS_NODE, &as_pc_override_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+      install_element(L_CS7_AS_NODE, &as_pc_patch_sccp_cmd);</span><br><span> </span><br><span>       vty_init_addr();</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/15814">change 15814</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmo-sccp/+/15814"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmo-sccp </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I535e2170adadfe755d2bcbf5bbf4556bebb77737 </div>
<div style="display:none"> Gerrit-Change-Number: 15814 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>