<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/16390">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">xua_asp_fsm: Ensure xUA client includes routing contexts in ASPAC/ASPIA<br><br>If we are running in ASP (client) role, and we are about to transmit an<br>ASPAC or ASPIA to the SG, we must make sure to include any applicable<br>routing contexts.<br><br>Change-Id: Iee4f0d553d6845a9ae08cb5e4f57fdec443e4ef9<br>Related: OS#4285<br>---<br>M src/xua_asp_fsm.c<br>1 file changed, 26 insertions(+), 0 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/90/16390/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c</span><br><span>index 6114b47..546c665 100644</span><br><span>--- a/src/xua_asp_fsm.c</span><br><span>+++ b/src/xua_asp_fsm.c</span><br><span>@@ -167,6 +167,30 @@</span><br><span>        return tmode;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* add M3UA_IEI_ROUTE_CTX to xua_msg containig all routing keys of ASs within ASP */</span><br><span style="color: hsl(120, 100%, 40%);">+static int xua_msg_add_asp_rctx(struct xua_msg *xua, struct osmo_ss7_asp *asp)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       struct osmo_ss7_as *as;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint32_t rctx[128];</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int i = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* iterate over all ASs and build array of routing contexts */</span><br><span style="color: hsl(120, 100%, 40%);">+        llist_for_each_entry(as, &asp->inst->as_list, list) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (!osmo_ss7_as_has_asp(as, asp))</span><br><span style="color: hsl(120, 100%, 40%);">+                    continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             rctx[i++] = htonl(as->cfg.routing_key.context);</span><br><span style="color: hsl(120, 100%, 40%);">+            if (i >= ARRAY_SIZE(rctx)-1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     break;</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%);">+     /* add xUA IE with routing contests to the message (if any) */</span><br><span style="color: hsl(120, 100%, 40%);">+        if (i)</span><br><span style="color: hsl(120, 100%, 40%);">+                xua_msg_add_data(xua, M3UA_IEI_ROUTE_CTX, i*sizeof(uint32_t), (uint8_t *)rctx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* return count of routing contexts added */</span><br><span style="color: hsl(120, 100%, 40%);">+  return i;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* ask the xUA implementation to transmit a specific message */</span><br><span> static int peer_send(struct osmo_fsm_inst *fi, int out_event, struct xua_msg *in)</span><br><span> {</span><br><span>@@ -219,6 +243,7 @@</span><br><span>            if (rc >= 0)</span><br><span>                      xua_msg_add_u32(xua, M3UA_IEI_TRAF_MODE_TYP, osmo_ss7_tmode_to_xua(rc));</span><br><span>             /* Optional: Routing Context */</span><br><span style="color: hsl(120, 100%, 40%);">+               xua_msg_add_asp_rctx(xua, asp);</span><br><span>              /* Optional: TID Label */</span><br><span>            /* Optional: DRN Label */</span><br><span>            /* Optional: Info String */</span><br><span>@@ -236,6 +261,7 @@</span><br><span>            /* RFC3868 Ch. 3.6.3 */</span><br><span>              xua->hdr = XUA_HDR(SUA_MSGC_ASPTM, SUA_ASPTM_INACTIVE);</span><br><span>           /* Optional: Routing Context */</span><br><span style="color: hsl(120, 100%, 40%);">+               xua_msg_add_asp_rctx(xua, asp);</span><br><span>              /* Optional: Info String */</span><br><span>          break;</span><br><span>       case XUA_ASP_E_ASPTM_ASPIA_ACK:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/16390">change 16390</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/+/16390"/><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: Iee4f0d553d6845a9ae08cb5e4f57fdec443e4ef9 </div>
<div style="display:none"> Gerrit-Change-Number: 16390 </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>