<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16042">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">stp: Refactor STP_Tests_IPA tests and introduce new TC_tmt_loadshare<br><br>Infrastructure in STP_Tests_IPA changed to be more similar to what is<br>done in STP_Tests_M3UA, which already contain more advanced tests.<br><br>Array of AS names mp_ipa_as_names is added in order to let TTCN3 port<br>which AS is configured in STP for each src port.<br><br>Change-Id: Iae213c58598cc0207503fd10f09d2d57aab941fe<br>---<br>M stp/STP_Tests.ttcn<br>M stp/STP_Tests_IPA.ttcn<br>M stp/osmo-stp.cfg<br>3 files changed, 136 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/42/16042/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/stp/STP_Tests.ttcn b/stp/STP_Tests.ttcn</span><br><span>index 82bc03b..032a900 100644</span><br><span>--- a/stp/STP_Tests.ttcn</span><br><span>+++ b/stp/STP_Tests.ttcn</span><br><span>@@ -156,6 +156,7 @@</span><br><span>      f_init_m3ua();</span><br><span>       f_init_ipa();</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     f_connect_ipa(3);</span><br><span>    f_M3UA_asp_up_act(0, omit, omit); // TODO: rctx</span><br><span> </span><br><span>  /* send a well-formed, encoded SCCP message via M3UA */</span><br><span>@@ -169,7 +170,7 @@</span><br><span>        f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1);</span><br><span> </span><br><span>     /* expect to receive it via IPA */</span><br><span style="color: hsl(0, 100%, 40%);">-      f_IPA_exp(0, sccp_enc);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_IPA_exp(3, sccp_enc);</span><br><span> </span><br><span>  f_clear_m3ua();</span><br><span> }</span><br><span>@@ -181,12 +182,13 @@</span><br><span>         var OCT4 pc_receiver := int2oct(23, 4);</span><br><span> </span><br><span>  f_init_common();</span><br><span style="color: hsl(0, 100%, 40%);">-        f_vty_config2(VTY, {"cs7 instance 0", "as mahlzeit ipa"},</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_config2(VTY, {"cs7 instance 0", "as ipa-as-dynamic-asp ipa"},</span><br><span>                    "point-code override patch-sccp disabled");</span><br><span> </span><br><span>      f_init_m3ua();</span><br><span>       f_init_ipa();</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     f_connect_ipa(3);</span><br><span>    f_M3UA_asp_up_act(0, omit, omit); // TODO: rctx</span><br><span> </span><br><span>  /* send a well-formed, encoded SCCP message via IPA */</span><br><span>@@ -195,7 +197,7 @@</span><br><span>         var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H));</span><br><span>    var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data));</span><br><span>    var octetstring sccp_enc := enc_PDU_SCCP(sccp);</span><br><span style="color: hsl(0, 100%, 40%);">- f_IPA_send(0, sccp_enc);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_IPA_send(3, sccp_enc);</span><br><span> </span><br><span>         /* expect to receive it via M3UA */</span><br><span>  var template (present) M3UA_Protocol_Data rx_pd;</span><br><span>@@ -212,12 +214,13 @@</span><br><span>     var OCT4 pc_receiver := int2oct(23, 4);</span><br><span> </span><br><span>  f_init_common();</span><br><span style="color: hsl(0, 100%, 40%);">-        f_vty_config2(VTY, {"cs7 instance 0", "as mahlzeit ipa"},</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_config2(VTY, {"cs7 instance 0", "as ipa-as-dynamic-asp ipa"},</span><br><span>                      "point-code override patch-sccp both");</span><br><span> </span><br><span>        f_init_m3ua();</span><br><span>       f_init_ipa();</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+     f_connect_ipa(3);</span><br><span>    f_M3UA_asp_up_act(0, omit, omit); // TODO: rctx</span><br><span> </span><br><span>  /* send a well-formed, encoded SCCP message via IPA */</span><br><span>@@ -225,7 +228,7 @@</span><br><span>         var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H));</span><br><span>     var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H));</span><br><span>    var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data));</span><br><span style="color: hsl(0, 100%, 40%);">-       f_IPA_send(0, enc_PDU_SCCP(sccp));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_IPA_send(3, enc_PDU_SCCP(sccp));</span><br><span> </span><br><span>       /* patch point codes into addresses */</span><br><span>       called := valueof(ts_SccpAddr_PC_GT(oct2int(pc_receiver), '83'O, "mtp3_itu", '1234'H));</span><br><span>diff --git a/stp/STP_Tests_IPA.ttcn b/stp/STP_Tests_IPA.ttcn</span><br><span>index 0a36921..f7273dc 100644</span><br><span>--- a/stp/STP_Tests_IPA.ttcn</span><br><span>+++ b/stp/STP_Tests_IPA.ttcn</span><br><span>@@ -33,11 +33,18 @@</span><br><span> </span><br><span> import from STP_Tests_Common all;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private const integer NR_IPA := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+private const integer NR_IPA := 4;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+type record of charstring AspNameArray;</span><br><span> </span><br><span> modulepar {</span><br><span>        integer mp_stp_ipa_port := 5000;</span><br><span>     integer mp_local_ipa_port := 20000;</span><br><span style="color: hsl(120, 100%, 40%);">+   AspNameArray mp_ipa_as_names := {"ipa-as-loadshare-sender",</span><br><span style="color: hsl(120, 100%, 40%);">+                                  "ipa-as-loadshare-receiver",</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "ipa-as-loadshare-receiver",</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "ipa-as-dynamic-asp"</span><br><span style="color: hsl(120, 100%, 40%);">+                                        };</span><br><span> }</span><br><span> </span><br><span> type component IPA_CT extends Test_CT {</span><br><span>@@ -45,6 +52,7 @@</span><br><span>   * having to re-invent IPA CCM handling here */</span><br><span>      port MTP3asp_PT IPA[NR_IPA];</span><br><span>         var IPA_Emulation_CT vc_IPA[NR_IPA];</span><br><span style="color: hsl(120, 100%, 40%);">+  var IPA_CCM_Parameters g_ccm_pars[NR_IPA];</span><br><span> }</span><br><span> </span><br><span> friend function f_IPA_send(integer idx, octetstring data) runs on IPA_CT {</span><br><span>@@ -53,7 +61,6 @@</span><br><span> }</span><br><span> </span><br><span> friend function f_IPA_exp(integer idx, template (present) octetstring data) runs on IPA_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-  var M3UA_RecvFrom rx;</span><br><span>        alt {</span><br><span>        [] IPA[idx].receive(t_ASP_MTP3_TRANSFERind(?, ?, ?, ?, data)) {</span><br><span>              setverdict(pass);</span><br><span>@@ -65,6 +72,23 @@</span><br><span>       }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rnd_ipa_len() runs on IPA_CT return integer {</span><br><span style="color: hsl(120, 100%, 40%);">+  var integer rnd_len := f_rnd_int(100);</span><br><span style="color: hsl(120, 100%, 40%);">+        /* We need at least 1 byte of data, othewise osmocom IPA stack will discard and close the socket */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (rnd_len == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+           rnd_len := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     return rnd_len;</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%);">+/* Test if traffic is routed from idx_tx to idx_rx */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_test_traffic(integer idx_tx, integer idx_rx)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on IPA_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var octetstring data := f_rnd_octstring(f_rnd_ipa_len());</span><br><span style="color: hsl(120, 100%, 40%);">+     f_IPA_send(idx_tx, data);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_IPA_exp(idx_rx, data);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> friend function f_init_ipa() runs on IPA_CT {</span><br><span>       var integer i;</span><br><span> </span><br><span>@@ -74,11 +98,15 @@</span><br><span>             vc_IPA[i] := IPA_Emulation_CT.create("IPA" & int2str(i));</span><br><span>              map(vc_IPA[i]:IPA_PORT, system:IPA_CODEC_PT);</span><br><span>                connect(self:IPA[i], vc_IPA[i]:MTP3_SP_PORT);</span><br><span style="color: hsl(0, 100%, 40%);">-           vc_IPA[i].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,</span><br><span style="color: hsl(0, 100%, 40%);">-                              mp_local_ipa_port+i));</span><br><span style="color: hsl(120, 100%, 40%);">+                g_ccm_pars[i] := c_IPA_default_ccm_pars;</span><br><span style="color: hsl(120, 100%, 40%);">+              g_ccm_pars[i].name := mp_ipa_as_names[i];</span><br><span>    }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_connect_ipa(integer idx) runs on IPA_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_IPA[idx].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                  mp_local_ipa_port+idx, g_ccm_pars[idx]));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> </span><br><span> /* "accept-asp-connections pre-configured" and client from unknown source */</span><br><span>@@ -87,6 +115,10 @@</span><br><span>         f_vty_config2(VTY, {"cs7 instance 0", "listen ipa 5000"},</span><br><span>                      "accept-asp-connections pre-configured");</span><br><span>    f_init_ipa();</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Add 100 to the port since we know that port is not configured in any</span><br><span style="color: hsl(120, 100%, 40%);">+         ASP only up to NR_IPA are configured. */</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_IPA[0].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                    mp_local_ipa_port+100, g_ccm_pars[0]));</span><br><span>      f_sleep(1.0);</span><br><span>        if (IPA[0].checkstate("Connected")) {</span><br><span>              setverdict(fail, "Expected IPA port to be disconnected");</span><br><span>@@ -103,9 +135,8 @@</span><br><span>    f_init_common();</span><br><span>     f_vty_config2(VTY, {"cs7 instance 0", "listen ipa 5000"},</span><br><span>                      "accept-asp-connections pre-configured");</span><br><span style="color: hsl(0, 100%, 40%);">-       f_vty_config2(VTY, {"cs7 instance 0"}, "asp ipa-mahlzeit0 20000 5000 ipa");</span><br><span style="color: hsl(0, 100%, 40%);">- f_vty_config2(VTY, {"cs7 instance 0", "as mahlzeit ipa"}, "asp ipa-mahlzeit0");</span><br><span>        f_init_ipa();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_connect_ipa(0);</span><br><span>    f_sleep(1.0);</span><br><span>        if (not IPA[0].checkstate("Connected")) {</span><br><span>          setverdict(fail, "Expected IPA port to be connected");</span><br><span>@@ -115,7 +146,6 @@</span><br><span>       /* switch back to default */</span><br><span>         f_vty_config2(VTY, {"cs7 instance 0", "listen ipa 5000"},</span><br><span>                      "accept-asp-connections dynamic-permitted");</span><br><span style="color: hsl(0, 100%, 40%);">-    f_vty_config2(VTY, {"cs7 instance 0"}, "no asp ipa-mahlzeit0");</span><br><span> }</span><br><span> </span><br><span> </span><br><span>@@ -123,6 +153,10 @@</span><br><span> testcase TC_unknown_client_dynamic() runs on IPA_CT {</span><br><span>     f_init_common();</span><br><span>     f_init_ipa();</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Add 100 to the port since we know that port is not configured in any</span><br><span style="color: hsl(120, 100%, 40%);">+         ASP only up to NR_IPA are configured. */</span><br><span style="color: hsl(120, 100%, 40%);">+    vc_IPA[0].start(IPA_Emulation.main_client(mp_stp_ip, mp_stp_ipa_port, mp_local_ip,</span><br><span style="color: hsl(120, 100%, 40%);">+                    mp_local_ipa_port+100, g_ccm_pars[0]));</span><br><span>      f_sleep(1.0);</span><br><span>        if (not IPA[0].checkstate("Connected")) {</span><br><span>          setverdict(fail, "Expected IPA port to be connected");</span><br><span>@@ -131,11 +165,61 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_count_rx(integer idx, template (present) octetstring exp, inout integer counter)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on IPA_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] IPA[idx].receive(t_ASP_MTP3_TRANSFERind(?, ?, ?, ?, exp)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                counter := counter + 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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* test "traffic-mode load-share" behavior */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_tmt_loadshare() runs on IPA_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      f_init_ipa();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* bring up the 'sender' side (single ASP in AS) */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_connect_ipa(0);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* activate the first 'receiver' side ASP */</span><br><span style="color: hsl(120, 100%, 40%);">+  f_connect_ipa(1);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* verify traffic is routed from sender to [sole] receiver */</span><br><span style="color: hsl(120, 100%, 40%);">+ for (i := 0; i < 10; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           f_test_traffic(0, 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%);">+   /* activate the second 'receiver' side ASP */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_connect_ipa(2);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* verify traffic is routed from sender to new receiver */</span><br><span style="color: hsl(120, 100%, 40%);">+    const integer iter_per_asp := 5;</span><br><span style="color: hsl(120, 100%, 40%);">+      var integer num_rx[3] := { 0, 0, 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+ for (i := 0; i < 2*iter_per_asp; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               var octetstring data := f_rnd_octstring(f_rnd_ipa_len());</span><br><span style="color: hsl(120, 100%, 40%);">+             f_IPA_send(0, data);</span><br><span style="color: hsl(120, 100%, 40%);">+          alt {</span><br><span style="color: hsl(120, 100%, 40%);">+         [] as_count_rx(1, data, num_rx[1])</span><br><span style="color: hsl(120, 100%, 40%);">+            [] as_count_rx(2, data, num_rx[2])</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%);">+     /* FIXME: check for extraneous messages? */</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i := 1; i <= 2; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (num_rx[i] != iter_per_asp) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      setverdict(fail, "Received ", num_rx[i], " out of expected ", iter_per_asp,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  "DATA messages at IPA port ", i);</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%);">+     setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> control {</span><br><span>      execute( TC_unknown_client_nodynamic() );</span><br><span>    execute( TC_known_client_nodynamic() );</span><br><span>      execute( TC_unknown_client_dynamic() );</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_tmt_loadshare() );</span><br><span> }</span><br><span> </span><br><span> </span><br><span>diff --git a/stp/osmo-stp.cfg b/stp/osmo-stp.cfg</span><br><span>index 5a1741f..26ab7f6 100644</span><br><span>--- a/stp/osmo-stp.cfg</span><br><span>+++ b/stp/osmo-stp.cfg</span><br><span>@@ -36,6 +36,9 @@</span><br><span> !</span><br><span> cs7 instance 0</span><br><span>  point-code format 24</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+!M3UA AS/ASP:</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span>  asp asp-sender 9999 2905 m3ua</span><br><span>   local-ip 127.0.0.1</span><br><span>   remote-ip 127.0.0.1</span><br><span>@@ -57,16 +60,47 @@</span><br><span>   asp asp-receiver0</span><br><span>   asp asp-receiver1</span><br><span>   routing-key 1042 42</span><br><span style="color: hsl(0, 100%, 40%);">- as mahlzeit ipa</span><br><span style="color: hsl(0, 100%, 40%);">-  routing-key 0 5</span><br><span style="color: hsl(0, 100%, 40%);">-  point-code override dpc 23</span><br><span>  as as-client m3ua</span><br><span>   routing-key 1055 55</span><br><span>   asp asp-client0</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+! IPA AS/ASP:</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+ asp ipa-asp-loadshare-sender 20000 5000 ipa</span><br><span style="color: hsl(120, 100%, 40%);">+  local-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+  remote-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+ as ipa-as-loadshare-sender ipa</span><br><span style="color: hsl(120, 100%, 40%);">+  routing-key 0 6</span><br><span style="color: hsl(120, 100%, 40%);">+  point-code override dpc 31</span><br><span style="color: hsl(120, 100%, 40%);">+  asp ipa-asp-loadshare-sender</span><br><span style="color: hsl(120, 100%, 40%);">+ asp ipa-asp-loadshare-receiver0 20001 5000 ipa</span><br><span style="color: hsl(120, 100%, 40%);">+  local-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+  remote-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+ asp ipa-asp-loadshare-receiver1 20002 5000 ipa</span><br><span style="color: hsl(120, 100%, 40%);">+  local-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+  remote-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+ as ipa-as-loadshare-receiver ipa</span><br><span style="color: hsl(120, 100%, 40%);">+  traffic-mode loadshare</span><br><span style="color: hsl(120, 100%, 40%);">+  routing-key 0 7</span><br><span style="color: hsl(120, 100%, 40%);">+  point-code override dpc 32</span><br><span style="color: hsl(120, 100%, 40%);">+  asp ipa-asp-loadshare-receiver0</span><br><span style="color: hsl(120, 100%, 40%);">+  asp ipa-asp-loadshare-receiver1</span><br><span style="color: hsl(120, 100%, 40%);">+ !Used by STP_Tests.ttcn:</span><br><span style="color: hsl(120, 100%, 40%);">+ as ipa-as-dynamic-asp ipa</span><br><span style="color: hsl(120, 100%, 40%);">+  routing-key 0 5</span><br><span style="color: hsl(120, 100%, 40%);">+  point-code override dpc 23</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+! ROUTING TABLE:</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span>  route-table system</span><br><span>   update route 23 16777215 linkset as-sender</span><br><span>   update route 42 16777215 linkset as-receiver</span><br><span>   update route 55 16777215 linkset as-client</span><br><span style="color: hsl(120, 100%, 40%);">+  update route 31 16777215 linkset ipa-as-loadshare-receiver</span><br><span style="color: hsl(120, 100%, 40%);">+  update route 5  16777215 linkset ipa-as-dynamic-asp</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span style="color: hsl(120, 100%, 40%);">+!SERVERS:</span><br><span style="color: hsl(120, 100%, 40%);">+!</span><br><span>  listen m3ua 2905</span><br><span>   accept-asp-connections dynamic-permitted</span><br><span>  listen ipa 5000</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16042">change 16042</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/+/16042"/><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: Iae213c58598cc0207503fd10f09d2d57aab941fe </div>
<div style="display:none"> Gerrit-Change-Number: 16042 </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>