<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/15817">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">WIP: ss7: Set Traffic Mode Type in ASPAC msg if set in VTY<br><br>TODO: Make sure the new prim is used to construct the message in lower<br>layers.<br><br>Related: OS#4220<br>Change-Id: Icce0e672f6180ebc92ca34f538d41161d02fecb9<br>---<br>M src/xua_asp_fsm.c<br>1 file changed, 55 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/17/15817/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 9dc9a82..166811e 100644</span><br><span>--- a/src/xua_asp_fsm.c</span><br><span>+++ b/src/xua_asp_fsm.c</span><br><span>@@ -1,6 +1,6 @@</span><br><span> /* SCCP M3UA / SUA ASP osmo_fsm according to RFC3868 4.3.1 */</span><br><span> /* (C) Copyright 2017 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(0, 100%, 40%);">- * </span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span>  * All Rights reserved.</span><br><span>  *</span><br><span>  * SPDX-License-Identifier: GPL-2.0+</span><br><span>@@ -36,7 +36,7 @@</span><br><span>  * * translate incoming SUA/M3UA msg_class/msg_type to xua_asp_event</span><br><span>  * * propagate state transitions to XUA_AS_FSM via _onenter functiosn</span><br><span>  * * notify the Layer Management of any relevant changes</span><br><span style="color: hsl(0, 100%, 40%);">- * * </span><br><span style="color: hsl(120, 100%, 40%);">+ * *</span><br><span>  */</span><br><span> </span><br><span> /* According to RFC3868 Section 8 */</span><br><span>@@ -99,6 +99,38 @@</span><br><span>  } t_ack;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static unsigned int xua_asp_get_rctx(struct osmo_ss7_asp *asp, uint32_t *rctxs, size_t len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    size_t rctx_next = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmo_ss7_as *as;</span><br><span style="color: hsl(120, 100%, 40%);">+</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%);">+             rctxs[rctx_next] = as->cfg.routing_key.context;</span><br><span style="color: hsl(120, 100%, 40%);">+            rctx_next++;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+     return rctx_next;</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%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+static int xua_asp_add_rctx(struct osmo_ss7_asp *asp, struct xua_msg *xua)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     uint32_t rctxs[32];</span><br><span style="color: hsl(120, 100%, 40%);">+   size_t rctx_cnt = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  size_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   rctx_cnt = xua_asp_get_rctx(asp, rctxs, ARRAY_SIZE(rctxs));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (rctx_cnt == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+            return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i = 0; i < rctx_cnt; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+             rctxs[i] = htonl(rctxs[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+   // FIXME: add 4 bytes for TAG + LEN?</span><br><span style="color: hsl(120, 100%, 40%);">+  return xua_msg_add_data(xua, SUA_IEI_ROUTE_CTX, rctx_cnt * sizeof(uint32_t), (uint8_t *) &rctxs[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+}*/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct osmo_xlm_prim *xua_xlm_prim_alloc(enum osmo_xlm_prim_type prim_type,</span><br><span>                                        enum osmo_prim_operation op)</span><br><span> {</span><br><span>@@ -194,8 +226,27 @@</span><br><span>    case XUA_ASP_E_ASPTM_ASPAC:</span><br><span>          /* RFC3868 Ch. 3.6.1 */</span><br><span>              xua->hdr = XUA_HDR(SUA_MSGC_ASPTM, SUA_ASPTM_ACTIVE);</span><br><span style="color: hsl(0, 100%, 40%);">-                /* Optional: Traffic Mode Type */</span><br><span>            /* Optional: Routing Context */</span><br><span style="color: hsl(120, 100%, 40%);">+               uint32_t rctxs[32];</span><br><span style="color: hsl(120, 100%, 40%);">+           size_t rctx_cnt = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+          size_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+             struct osmo_ss7_as *as;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             rctx_cnt = xua_asp_get_rctx(asp, rctxs, ARRAY_SIZE(rctxs));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+         /* Optional: Traffic Mode */</span><br><span style="color: hsl(120, 100%, 40%);">+          if (rctx_cnt) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       as = osmo_ss7_as_find_by_rctx(asp->inst, rctxs[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (as->cfg.mode_set_by_vty)</span><br><span style="color: hsl(120, 100%, 40%);">+                               xua_msg_add_u32(xua, SUA_IEI_TRAF_MODE_TYP, as->cfg.mode);</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Optional: Routing Context */</span><br><span style="color: hsl(120, 100%, 40%);">+               if (rctx_cnt) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       for (i = 0; i < rctx_cnt; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+                             rctxs[i] = htonl(rctxs[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                   // FIXME: add 4 bytes for TAG + LEN?</span><br><span style="color: hsl(120, 100%, 40%);">+                  xua_msg_add_data(xua, SUA_IEI_ROUTE_CTX, rctx_cnt * sizeof(uint32_t), (uint8_t *) &rctxs[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>            /* Optional: TID Label */</span><br><span>            /* Optional: DRN Label */</span><br><span>            /* Optional: Info String */</span><br><span>@@ -205,7 +256,7 @@</span><br><span>            xua->hdr = XUA_HDR(SUA_MSGC_ASPTM, SUA_ASPTM_ACTIVE_ACK);</span><br><span>                 /* Optional: Traffic Mode Type */</span><br><span>            /* Mandatory: Routing Context */</span><br><span style="color: hsl(0, 100%, 40%);">-                //FIXME xua_msg_add_u32(xua, SUA_IEI_ROUTE_CTX, </span><br><span style="color: hsl(120, 100%, 40%);">+              //FIXME xua_msg_add_u32(xua, SUA_IEI_ROUTE_CTX,</span><br><span>              /* Optional: Info String */</span><br><span>          break;</span><br><span>       case XUA_ASP_E_ASPTM_ASPIA:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/15817">change 15817</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/+/15817"/><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: Icce0e672f6180ebc92ca34f538d41161d02fecb9 </div>
<div style="display:none"> Gerrit-Change-Number: 15817 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>