<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>