<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22657">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: move generic RAW_NS_CT function to library/RAW_NS<br><br>Allow the NS tests to use the SNS functions.<br><br>Change-Id: I6c404475f39dd00023eb11e98da93ee423604039<br>---<br>M library/RAW_NS.ttcnpp<br>M pcu/PCU_Tests_SNS.ttcn<br>2 files changed, 184 insertions(+), 184 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/RAW_NS.ttcnpp b/library/RAW_NS.ttcnpp</span><br><span>index 2aaa770..298ef1e 100644</span><br><span>--- a/library/RAW_NS.ttcnpp</span><br><span>+++ b/library/RAW_NS.ttcnpp</span><br><span>@@ -266,4 +266,188 @@</span><br><span>               }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/**********************************************************************************</span><br><span style="color: hsl(120, 100%, 40%);">+ * IP Sub-Network Service (SNS)</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%);">+/* perform inbound SNS-SIZE procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_incoming_sns_size(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        log("f_incoming_sns_size(idx=", idx, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+        var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         /* expect one single SNS-SIZE with RESET flag; 4x v4 EP; no v6 EP */</span><br><span style="color: hsl(120, 100%, 40%);">+          rx := f_ns_exp(tr_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 8,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    num_v4 := 4, num_v6 := omit), idx);</span><br><span style="color: hsl(120, 100%, 40%);">+        } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* expect one single SNS-SIZE with RESET flag; no v4 EP; 4x v6 EP */</span><br><span style="color: hsl(120, 100%, 40%);">+          rx := f_ns_exp(tr_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 8,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    num_v4 := omit, num_v6 := 4), idx);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     NSCP[idx].send(ts_SNS_SIZE_ACK(g_nsconfig.nsei, cause));</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%);">+/* perform outbound SNS-SIZE procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_outgoing_sns_size(template (omit) NsCause cause := omit, integer idx:= 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   log("f_outgoing_sns_size(idx=", idx, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+        var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         NSCP[idx].send(ts_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         num_v4 := 1, num_v6 := omit)</span><br><span style="color: hsl(120, 100%, 40%);">+                                  );</span><br><span style="color: hsl(120, 100%, 40%);">+    } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              NSCP[idx].send(ts_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         num_v4 := omit, num_v6 := 1)</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%);">+     /* expect one single SNS-SIZE with RESET flag; 4x v4 EP; no v6 EP */</span><br><span style="color: hsl(120, 100%, 40%);">+  rx := f_ns_exp(tr_SNS_SIZE_ACK(g_nsconfig.nsei, cause), idx);</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%);">+/* perform inbound SNS-CONFIG procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_incoming_sns_config(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  log("f_incoming_sns_config(idx=", idx, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+      var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template IP4_Elements v4_elem := { tr_SNS_IPv4(nsvc_cfg.provider.ip.remote_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               nsvc_cfg.provider.ip.remote_udp_port) };</span><br><span style="color: hsl(120, 100%, 40%);">+           rx := f_ns_exp(tr_SNS_CONFIG(g_nsconfig.nsei, end_flag := true, v4 := v4_elem), idx);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template IP6_Elements v6_elem := { tr_SNS_IPv6(nsvc_cfg.provider.ip.remote_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                               nsvc_cfg.provider.ip.remote_udp_port) };</span><br><span style="color: hsl(120, 100%, 40%);">+           rx := f_ns_exp(tr_SNS_CONFIG(g_nsconfig.nsei, end_flag := true, v6 := v6_elem), idx);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     NSCP[idx].send(ts_SNS_CONFIG_ACK(g_nsconfig.nsei, cause));</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%);">+/* perform outbound SNS-CONFIG procedure */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_outgoing_sns_config(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    log("f_outgoing_sns_config(idx=", idx, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+      var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port) }</span><br><span style="color: hsl(120, 100%, 40%);">+           NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port) }</span><br><span style="color: hsl(120, 100%, 40%);">+           NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, omit, v6));</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);</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%);">+/* perform outbound SNS-CONFIG procedure (separate endpoints: 1 for control, 1 for user */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_outgoing_sns_config_1c1u(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   log("f_outgoing_sns_config_1c1u(idx=", idx, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+ var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      if (g_nsconfig.nsvc[0].provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+               var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(g_nsconfig.nsvc[0].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[0].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     ts_SNS_IPv4(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[1].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(120, 100%, 40%);">+          NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(g_nsconfig.nsvc[0].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[0].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     ts_SNS_IPv6(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[1].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(120, 100%, 40%);">+          NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, omit, v6));</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);</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%);">+/* perform outbound SNS-CONFIG procedure (separate endpoints: 1 for control, 1 for user */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_outgoing_sns_config_1c1u_separate(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  log("f_outgoing_sns_config_1c1u_separate(idx=", idx, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+        var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (g_nsconfig.nsvc[0].provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+               var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[1].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     ts_SNS_IPv4(g_nsconfig.nsvc[2].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[2].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(120, 100%, 40%);">+          NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[1].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     ts_SNS_IPv6(g_nsconfig.nsvc[2].provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              g_nsconfig.nsvc[2].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(120, 100%, 40%);">+          NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, omit, v6));</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);</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%);">+function f_outgoing_sns_add(integer idx_add, uint8_t w_sig := 1, uint8_t w_user := 1, integer idx := 0, template (omit) NsCause cause := omit)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     log("f_outgoing_sns_add(idx_add=", idx_add, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+ var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_add];</span><br><span style="color: hsl(120, 100%, 40%);">+   if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                  w_sig, w_user) };</span><br><span style="color: hsl(120, 100%, 40%);">+                NSCP[idx].send(ts_SNS_ADD(g_nsconfig.nsei, 23, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+          rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+   } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                  w_sig, w_user) };</span><br><span style="color: hsl(120, 100%, 40%);">+                NSCP[idx].send(ts_SNS_ADD(g_nsconfig.nsei, 23, omit, v6));</span><br><span style="color: hsl(120, 100%, 40%);">+            rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, omit, v6));</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%);">+function f_outgoing_sns_del(integer idx_del, uint8_t w_sig := 1, uint8_t w_user := 1, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  log("f_outgoing_sns_del(idx_del=", idx_del, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+ var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_del];</span><br><span style="color: hsl(120, 100%, 40%);">+   if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                  w_sig, w_user) };</span><br><span style="color: hsl(120, 100%, 40%);">+                NSCP[idx].send(ts_SNS_DEL(g_nsconfig.nsei, 24, omit, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+            rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 24, omit, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+    } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                  w_sig, w_user) };</span><br><span style="color: hsl(120, 100%, 40%);">+                NSCP[idx].send(ts_SNS_DEL(g_nsconfig.nsei, 24, omit, omit, v6));</span><br><span style="color: hsl(120, 100%, 40%);">+              rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 24, omit, omit, v6));</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%);">+function f_outgoing_sns_chg_weight(integer idx_chg, uint8_t w_sig, uint8_t w_user, integer idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_NS_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     log("f_outgoing_sns_chg_weight(idx_chg=", idx_chg, ")");</span><br><span style="color: hsl(120, 100%, 40%);">+  var PDU_NS rx;</span><br><span style="color: hsl(120, 100%, 40%);">+        var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_chg];</span><br><span style="color: hsl(120, 100%, 40%);">+   if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                  w_sig, w_user) };</span><br><span style="color: hsl(120, 100%, 40%);">+                NSCP[idx].send(ts_SNS_CHG_WEIGHT(g_nsconfig.nsei, 25, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+           rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 25, omit, v4));</span><br><span style="color: hsl(120, 100%, 40%);">+    } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                  w_sig, w_user) };</span><br><span style="color: hsl(120, 100%, 40%);">+                NSCP[idx].send(ts_SNS_CHG_WEIGHT(g_nsconfig.nsei, 25, omit, v6));</span><br><span style="color: hsl(120, 100%, 40%);">+             rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 25, omit, omit, v6));</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> }</span><br><span>diff --git a/pcu/PCU_Tests_SNS.ttcn b/pcu/PCU_Tests_SNS.ttcn</span><br><span>index 4fca26e..c4f6b6e 100644</span><br><span>--- a/pcu/PCU_Tests_SNS.ttcn</span><br><span>+++ b/pcu/PCU_Tests_SNS.ttcn</span><br><span>@@ -22,190 +22,6 @@</span><br><span>  * Modern Gb/IP bring-up test cases using IP Sub-Network Service (SNS)</span><br><span>  **********************************************************************************/</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* perform inbound SNS-SIZE procedure */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_incoming_sns_size(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-    log("f_incoming_sns_size(idx=", idx, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-  var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           /* expect one single SNS-SIZE with RESET flag; 4x v4 EP; no v6 EP */</span><br><span style="color: hsl(0, 100%, 40%);">-            rx := f_ns_exp(tr_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 8,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      num_v4 := 4, num_v6 := omit), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-  } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                /* expect one single SNS-SIZE with RESET flag; no v4 EP; 4x v6 EP */</span><br><span style="color: hsl(0, 100%, 40%);">-            rx := f_ns_exp(tr_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 8,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      num_v4 := omit, num_v6 := 4), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-  }</span><br><span style="color: hsl(0, 100%, 40%);">-       NSCP[idx].send(ts_SNS_SIZE_ACK(g_nsconfig.nsei, cause));</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* perform outbound SNS-SIZE procedure */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_size(template (omit) NsCause cause := omit, integer idx:= 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       log("f_outgoing_sns_size(idx=", idx, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-  var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           NSCP[idx].send(ts_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 1,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           num_v4 := 1, num_v6 := omit)</span><br><span style="color: hsl(0, 100%, 40%);">-                                    );</span><br><span style="color: hsl(0, 100%, 40%);">-      } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                NSCP[idx].send(ts_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 1,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           num_v4 := omit, num_v6 := 1)</span><br><span style="color: hsl(0, 100%, 40%);">-                                    );</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-       /* expect one single SNS-SIZE with RESET flag; 4x v4 EP; no v6 EP */</span><br><span style="color: hsl(0, 100%, 40%);">-    rx := f_ns_exp(tr_SNS_SIZE_ACK(g_nsconfig.nsei, cause), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* perform inbound SNS-CONFIG procedure */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_incoming_sns_config(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-      log("f_incoming_sns_config(idx=", idx, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-        var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           var template IP4_Elements v4_elem := { tr_SNS_IPv4(nsvc_cfg.provider.ip.remote_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                 nsvc_cfg.provider.ip.remote_udp_port) };</span><br><span style="color: hsl(0, 100%, 40%);">-             rx := f_ns_exp(tr_SNS_CONFIG(g_nsconfig.nsei, end_flag := true, v4 := v4_elem), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-   } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template IP6_Elements v6_elem := { tr_SNS_IPv6(nsvc_cfg.provider.ip.remote_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                 nsvc_cfg.provider.ip.remote_udp_port) };</span><br><span style="color: hsl(0, 100%, 40%);">-             rx := f_ns_exp(tr_SNS_CONFIG(g_nsconfig.nsei, end_flag := true, v6 := v6_elem), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span style="color: hsl(0, 100%, 40%);">-       NSCP[idx].send(ts_SNS_CONFIG_ACK(g_nsconfig.nsei, cause));</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* perform outbound SNS-CONFIG procedure */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_config(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-        log("f_outgoing_sns_config(idx=", idx, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-        var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx];</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port) }</span><br><span style="color: hsl(0, 100%, 40%);">-             NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port) }</span><br><span style="color: hsl(0, 100%, 40%);">-             NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* perform outbound SNS-CONFIG procedure (separate endpoints: 1 for control, 1 for user */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_config_1c1u(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       log("f_outgoing_sns_config_1c1u(idx=", idx, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-   var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  if (mp_nsconfig.nsvc[0].provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(g_nsconfig.nsvc[0].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[0].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       ts_SNS_IPv4(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[1].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(0, 100%, 40%);">-            NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(g_nsconfig.nsvc[0].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[0].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       ts_SNS_IPv6(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[1].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(0, 100%, 40%);">-            NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-/* perform outbound SNS-CONFIG procedure (separate endpoints: 1 for control, 1 for user */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_config_1c1u_separate(template (omit) NsCause cause := omit, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-      log("f_outgoing_sns_config_1c1u_separate(idx=", idx, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-  var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  if (mp_nsconfig.nsvc[0].provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[1].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       ts_SNS_IPv4(g_nsconfig.nsvc[2].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[2].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(0, 100%, 40%);">-            NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(g_nsconfig.nsvc[1].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[1].provider.ip.local_udp_port, 1, 0),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                       ts_SNS_IPv6(g_nsconfig.nsvc[2].provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                g_nsconfig.nsvc[2].provider.ip.local_udp_port, 0, 1) };</span><br><span style="color: hsl(0, 100%, 40%);">-            NSCP[idx].send(ts_SNS_CONFIG(g_nsconfig.nsei, true, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-       rx := f_ns_exp(tr_SNS_CONFIG_ACK(g_nsconfig.nsei, cause), idx);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_add(integer idx_add, uint8_t w_sig := 1, uint8_t w_user := 1, integer idx := 0, template (omit) NsCause cause := omit)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       log("f_outgoing_sns_add(idx_add=", idx_add, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-   var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_add];</span><br><span style="color: hsl(0, 100%, 40%);">-     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    w_sig, w_user) };</span><br><span style="color: hsl(0, 100%, 40%);">-          NSCP[idx].send(ts_SNS_ADD(g_nsconfig.nsei, 23, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-            rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-     } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    w_sig, w_user) };</span><br><span style="color: hsl(0, 100%, 40%);">-          NSCP[idx].send(ts_SNS_ADD(g_nsconfig.nsei, 23, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">-              rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 23, cause, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_del(integer idx_del, uint8_t w_sig := 1, uint8_t w_user := 1, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-    log("f_outgoing_sns_del(idx_del=", idx_del, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-   var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_del];</span><br><span style="color: hsl(0, 100%, 40%);">-     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    w_sig, w_user) };</span><br><span style="color: hsl(0, 100%, 40%);">-          NSCP[idx].send(ts_SNS_DEL(g_nsconfig.nsei, 24, omit, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-              rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 24, omit, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-      } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    w_sig, w_user) };</span><br><span style="color: hsl(0, 100%, 40%);">-          NSCP[idx].send(ts_SNS_DEL(g_nsconfig.nsei, 24, omit, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">-                rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 24, omit, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-function f_outgoing_sns_chg_weight(integer idx_chg, uint8_t w_sig, uint8_t w_user, integer idx := 0)</span><br><span style="color: hsl(0, 100%, 40%);">-runs on RAW_NS_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       log("f_outgoing_sns_chg_weight(idx_chg=", idx_chg, ")");</span><br><span style="color: hsl(0, 100%, 40%);">-    var PDU_NS rx;</span><br><span style="color: hsl(0, 100%, 40%);">-  var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[idx_chg];</span><br><span style="color: hsl(0, 100%, 40%);">-     if (nsvc_cfg.provider.ip.address_family == AF_INET) {</span><br><span style="color: hsl(0, 100%, 40%);">-           var template (omit) IP4_Elements v4 := { ts_SNS_IPv4(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    w_sig, w_user) };</span><br><span style="color: hsl(0, 100%, 40%);">-          NSCP[idx].send(ts_SNS_CHG_WEIGHT(g_nsconfig.nsei, 25, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-             rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 25, omit, v4));</span><br><span style="color: hsl(0, 100%, 40%);">-      } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                var template (omit) IP6_Elements v6 := { ts_SNS_IPv6(nsvc_cfg.provider.ip.local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                  nsvc_cfg.provider.ip.local_udp_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                    w_sig, w_user) };</span><br><span style="color: hsl(0, 100%, 40%);">-          NSCP[idx].send(ts_SNS_CHG_WEIGHT(g_nsconfig.nsei, 25, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">-               rx := f_ns_exp(tr_SNS_ACK(g_nsconfig.nsei, 25, omit, omit, v6));</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* PCU-originated SNS-SIZE: successful case */</span><br><span> testcase TC_sns_po_size_success() runs on RAW_Test_CT {</span><br><span>      f_init_ns_codec(mp_nsconfig);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22657">change 22657</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/osmo-ttcn3-hacks/+/22657"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I6c404475f39dd00023eb11e98da93ee423604039 </div>
<div style="display:none"> Gerrit-Change-Number: 22657 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>