<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12941">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Osocom_Gb_Types: Add send/receive templates for SNS-SIZE and SNS-CONFIG procedure<br><br>Change-Id: Iaa12c468a9e665d2050945cfc0a60dab4024071c<br>---<br>M library/Osmocom_Gb_Types.ttcn<br>M pcu/gen_links.sh<br>M pcu/regen_makefile.sh<br>3 files changed, 275 insertions(+), 9 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/41/12941/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn</span><br><span>index c337cb4..86b4d49 100644</span><br><span>--- a/library/Osmocom_Gb_Types.ttcn</span><br><span>+++ b/library/Osmocom_Gb_Types.ttcn</span><br><span>@@ -9,6 +9,7 @@</span><br><span>       import from GSM_RR_Types all;</span><br><span>        import from BSSGP_Types all</span><br><span>  import from NS_Types all</span><br><span style="color: hsl(120, 100%, 40%);">+      import from Native_Functions all;</span><br><span> </span><br><span>        type uint16_t Nsvci;</span><br><span>         type uint16_t Nsei;</span><br><span>@@ -81,26 +82,49 @@</span><br><span>            },</span><br><span>           cause := int2oct(enum2int(valueof(cause)), 1)</span><br><span>        }</span><br><span style="color: hsl(120, 100%, 40%);">+     function ts_NS_IE_CAUSE_omit(template (omit) NsCause cause) return template (omit) CauseNS {</span><br><span style="color: hsl(120, 100%, 40%);">+          var template (omit) CauseNS ret;</span><br><span style="color: hsl(120, 100%, 40%);">+              if (istemplatekind(cause, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret := {</span><br><span style="color: hsl(120, 100%, 40%);">+                              iEI := '00'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+                          },</span><br><span style="color: hsl(120, 100%, 40%);">+                            cause := int2oct(enum2int(valueof(cause)), 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                 }</span><br><span style="color: hsl(120, 100%, 40%);">+                     return ret;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span>        function tr_NS_IE_CAUSE(template NsCause cause) return template CauseNS {</span><br><span>            var template CauseNS ret;</span><br><span>            ret.iEI := '00'O;</span><br><span>            ret.ext := '1'B;</span><br><span>             ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(0, 100%, 40%);">-                if (isvalue(cause)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   ret.cause := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(0, 100%, 40%);">-              } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (istemplatekind(cause, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else if (istemplatekind(cause, "*")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    return *;</span><br><span style="color: hsl(120, 100%, 40%);">+             } else if (istemplatekind(cause, "?")) {</span><br><span>                   ret.cause := ?</span><br><span style="color: hsl(120, 100%, 40%);">+                } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      ret.cause := int2oct(enum2int(valueof(cause)), 1);</span><br><span>           }</span><br><span>            return ret;</span><br><span>  }</span><br><span> </span><br><span>        private function f_oct_or_wc(template integer inp, integer len) return template octetstring {</span><br><span style="color: hsl(0, 100%, 40%);">-           if (isvalue(inp)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     return int2oct(valueof(inp), len);</span><br><span style="color: hsl(0, 100%, 40%);">-              } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        return ?</span><br><span style="color: hsl(120, 100%, 40%);">+              if (istemplatekind(inp, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else if (istemplatekind(inp, "*")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      return *;</span><br><span style="color: hsl(120, 100%, 40%);">+             } else if (istemplatekind(inp, "?")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      return ?;</span><br><span>            }</span><br><span style="color: hsl(120, 100%, 40%);">+             return int2oct(valueof(inp), len);</span><br><span>   }</span><br><span> </span><br><span>        template (value) NS_VCI ts_NS_IE_NSVCI(Nsvci nsvci) := {</span><br><span>@@ -137,6 +161,40 @@</span><br><span>              nSEI := f_oct_or_wc(nsei, 2)</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) IP4_Element ts_SNS_IPv4(charstring ip, integer udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              uint8_t sig_weight := 1, uint8_t data_weight := 1) := {</span><br><span style="color: hsl(120, 100%, 40%);">+              ipAddress := f_inet_addr(ip),</span><br><span style="color: hsl(120, 100%, 40%);">+         uDP_Port := int2oct(udp_port, 2),</span><br><span style="color: hsl(120, 100%, 40%);">+             signallingWeight := int2oct(sig_weight, 1),</span><br><span style="color: hsl(120, 100%, 40%);">+           dataWeight := int2oct(data_weight, 1)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     function tr_SNS_IPv4(template charstring ip, template integer udp_port,</span><br><span style="color: hsl(120, 100%, 40%);">+                               template uint8_t sig_weight := ?, template uint8_t data_weight := ?)</span><br><span style="color: hsl(120, 100%, 40%);">+  return template IP4_Element {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template IP4_Element e;</span><br><span style="color: hsl(120, 100%, 40%);">+           if (istemplatekind(ip, "?")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      e.ipAddress := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+             } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      e.ipAddress := f_inet_addr(valueof(ip));</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (istemplatekind(udp_port, "?")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        e.uDP_Port := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+              } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      e.uDP_Port := int2oct(valueof(udp_port), 2);</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (istemplatekind(sig_weight, "?")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      e.signallingWeight := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+              } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      e.signallingWeight := int2oct(valueof(sig_weight), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (istemplatekind(data_weight, "?")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     e.dataWeight := ?;</span><br><span style="color: hsl(120, 100%, 40%);">+            } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      e.dataWeight := int2oct(valueof(data_weight), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             return e;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span>      template (value) PDU_NS ts_NS_RESET(NsCause cause, Nsvci nsvci, Nsei nsei) := {</span><br><span>              pDU_NS_Reset := {</span><br><span>@@ -260,6 +318,214 @@</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%);">+   private function ts_num_of_ep(OCT1 iei, template (omit) uint16_t num_ep)</span><br><span style="color: hsl(120, 100%, 40%);">+      return template (omit) NumberOfIP_Endpoints {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template (omit) NumberOfIP_Endpoints t;</span><br><span style="color: hsl(120, 100%, 40%);">+           if (istemplatekind(num_ep, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      t.iEI := iei;</span><br><span style="color: hsl(120, 100%, 40%);">+                 t.numberOfIP_Endpoints := int2oct(valueof(num_ep), 2);</span><br><span style="color: hsl(120, 100%, 40%);">+                        return t;</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%);">+     private function tr_num_of_ep(OCT1 iei, template uint16_t num_ep)</span><br><span style="color: hsl(120, 100%, 40%);">+     return template NumberOfIP_Endpoints {</span><br><span style="color: hsl(120, 100%, 40%);">+                var template NumberOfIP_Endpoints t;</span><br><span style="color: hsl(120, 100%, 40%);">+          if (istemplatekind(num_ep, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else if (istemplatekind(num_ep, "*")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return *;</span><br><span style="color: hsl(120, 100%, 40%);">+             } else if (istemplatekind(num_ep, "?")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   return ?;</span><br><span style="color: hsl(120, 100%, 40%);">+             } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      t.iEI := iei;</span><br><span style="color: hsl(120, 100%, 40%);">+                 t.numberOfIP_Endpoints := int2oct(valueof(num_ep), 2);</span><br><span style="color: hsl(120, 100%, 40%);">+                        return t;</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) ResetFlag ts_SNS_IE_ResetFlag(boolean rst) := {</span><br><span style="color: hsl(120, 100%, 40%);">+              iEI := '0A'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         resetBIT := bool2bit(rst),</span><br><span style="color: hsl(120, 100%, 40%);">+            spare := '0000000'B</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     template ResetFlag tr_SNS_IE_ResetFlag(template boolean rst) := {</span><br><span style="color: hsl(120, 100%, 40%);">+             iEI := '0A'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         resetBIT := bool2bit_tmpl(rst),</span><br><span style="color: hsl(120, 100%, 40%);">+               spare := '0000000'B</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%);">+   template (value) EndFlag ts_SNS_IE_EndFlag(boolean end) := {</span><br><span style="color: hsl(120, 100%, 40%);">+          eBIT := bool2bit(end),</span><br><span style="color: hsl(120, 100%, 40%);">+                spare := '0000000'B</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     template EndFlag tr_SNS_IE_EndFlag(template boolean end) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         eBIT := bool2bit_tmpl(end),</span><br><span style="color: hsl(120, 100%, 40%);">+           spare := '0000000'B</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%);">+   template (value) MaxNumberOfNSVCs ts_SNS_IE_MaxNumOfNSVCs(uint16_t num) := {</span><br><span style="color: hsl(120, 100%, 40%);">+          iEI := '07'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         maxNumberOfNSVCs := int2oct(num, 2)</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     template MaxNumberOfNSVCs tr_SNS_IE_MaxNumOfNSVCs(template uint16_t num) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         iEI := '07'O,</span><br><span style="color: hsl(120, 100%, 40%);">+         maxNumberOfNSVCs := f_oct_or_wc(num, 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%);">+   template (value) PDU_NS ts_SNS_SIZE(Nsei nsei, boolean rst_flag := true,</span><br><span style="color: hsl(120, 100%, 40%);">+                              uint16_t max_nsvcs := 2,</span><br><span style="color: hsl(120, 100%, 40%);">+                              template (omit) uint16_t num_v4 := 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                         template (omit) uint16_t num_v6 := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         pDU_SNS_Size := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     nsPduType := '12'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nSEI_NS := ts_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       resetFlag := ts_SNS_IE_ResetFlag(rst_flag),</span><br><span style="color: hsl(120, 100%, 40%);">+                   maxNumberOfNSVCs := ts_SNS_IE_MaxNumOfNSVCs(max_nsvcs),</span><br><span style="color: hsl(120, 100%, 40%);">+                       numberOfIP4_Endpoints := ts_num_of_ep('08'O, num_v4),</span><br><span style="color: hsl(120, 100%, 40%);">+                 numberOfIP6_Endpoints := ts_num_of_ep('09'O, num_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%);">+     template PDU_NS tr_SNS_SIZE(template Nsei nsei, template boolean rst_flag := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                               template uint16_t max_nsvcs := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                             template uint16_t num_v4 := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                template uint16_t num_v6 := *) := {</span><br><span style="color: hsl(120, 100%, 40%);">+           pDU_SNS_Size := {</span><br><span style="color: hsl(120, 100%, 40%);">+                     nsPduType := '12'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nSEI_NS := tr_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       resetFlag := tr_SNS_IE_ResetFlag(rst_flag),</span><br><span style="color: hsl(120, 100%, 40%);">+                   maxNumberOfNSVCs := tr_SNS_IE_MaxNumOfNSVCs(max_nsvcs),</span><br><span style="color: hsl(120, 100%, 40%);">+                       numberOfIP4_Endpoints := tr_num_of_ep('08'O, num_v4),</span><br><span style="color: hsl(120, 100%, 40%);">+                 numberOfIP6_Endpoints := tr_num_of_ep('09'O, num_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%);">+   template PDU_NS ts_SNS_SIZE_ACK(Nsei nsei, template (omit) NsCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+                pDU_SNS_Size_Ack := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 nsPduType := '13'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nSEI_NS := ts_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       causeNS := ts_NS_IE_CAUSE_omit(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%);">+     template PDU_NS tr_SNS_SIZE_ACK(template Nsei nsei, template NsCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+              pDU_SNS_Size_Ack := {</span><br><span style="color: hsl(120, 100%, 40%);">+                 nsPduType := '13'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nSEI_NS := tr_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       causeNS := tr_NS_IE_CAUSE(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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   private function ts_SNS_IE_ListIP4(template (omit) IP4_Elements elem)</span><br><span style="color: hsl(120, 100%, 40%);">+ return template (omit) ListofIP4Elements {</span><br><span style="color: hsl(120, 100%, 40%);">+            var template (omit) ListofIP4Elements r;</span><br><span style="color: hsl(120, 100%, 40%);">+              if (istemplatekind(elem, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      r := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                iEI := '05'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  length1 := 0 /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                                },</span><br><span style="color: hsl(120, 100%, 40%);">+                            iP4_Elements := elem</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+                     return r;</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%);">+     private function tr_SNS_IE_ListIP4(template IP4_Elements elem)</span><br><span style="color: hsl(120, 100%, 40%);">+        return template ListofIP4Elements {</span><br><span style="color: hsl(120, 100%, 40%);">+           var template ListofIP4Elements r;</span><br><span style="color: hsl(120, 100%, 40%);">+             if (istemplatekind(elem, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      r := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                iEI := '05'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  length1 := ? /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                                },</span><br><span style="color: hsl(120, 100%, 40%);">+                            iP4_Elements := elem</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+                     return r;</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%);">+   private function ts_SNS_IE_ListIP6(template (omit) IP6_Elements elem)</span><br><span style="color: hsl(120, 100%, 40%);">+ return template (omit) ListofIP6Elements {</span><br><span style="color: hsl(120, 100%, 40%);">+            var template (omit) ListofIP6Elements r;</span><br><span style="color: hsl(120, 100%, 40%);">+              if (istemplatekind(elem, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      r := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                iEI := '06'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  length1 := 0 /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                                },</span><br><span style="color: hsl(120, 100%, 40%);">+                            iP6_Elements := elem</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+                     return r;</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%);">+     private function tr_SNS_IE_ListIP6(template IP6_Elements elem)</span><br><span style="color: hsl(120, 100%, 40%);">+        return template ListofIP6Elements {</span><br><span style="color: hsl(120, 100%, 40%);">+           var template ListofIP6Elements r;</span><br><span style="color: hsl(120, 100%, 40%);">+             if (istemplatekind(elem, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      r := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                iEI := '06'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                         ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                          lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                  length1 := ? /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                                },</span><br><span style="color: hsl(120, 100%, 40%);">+                            iP6_Elements := elem</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+                     return r;</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%);">+   template (value) PDU_NS ts_SNS_CONFIG(Nsei nsei, boolean end_flag,</span><br><span style="color: hsl(120, 100%, 40%);">+                                    template (omit) IP4_Elements v4,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      template (omit) IP6_Elements v6 := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+         pDU_SNS_Config := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   nsPduType := '0F'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   endFlag := ts_SNS_IE_EndFlag(end_flag),</span><br><span style="color: hsl(120, 100%, 40%);">+                       nSEI_NS := ts_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       listofIP4Elements := ts_SNS_IE_ListIP4(v4),</span><br><span style="color: hsl(120, 100%, 40%);">+                   listofIP6Elements := ts_SNS_IE_ListIP6(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%);">+     template PDU_NS tr_SNS_CONFIG(template Nsei nsei, template boolean end_flag,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  template IP4_Elements v4,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     template IP6_Elements v6 := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+                pDU_SNS_Config := {</span><br><span style="color: hsl(120, 100%, 40%);">+                   nsPduType := '0F'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   endFlag := tr_SNS_IE_EndFlag(end_flag),</span><br><span style="color: hsl(120, 100%, 40%);">+                       nSEI_NS := tr_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       listofIP4Elements := tr_SNS_IE_ListIP4(v4),</span><br><span style="color: hsl(120, 100%, 40%);">+                   listofIP6Elements := tr_SNS_IE_ListIP6(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%);">+   template (value) PDU_NS ts_SNS_CONFIG_ACK(Nsei nsei, template (omit) NsCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+              pDU_SNS_Config_Ack := {</span><br><span style="color: hsl(120, 100%, 40%);">+                       nsPduType := '10'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nSEI_NS := ts_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       causeNS := ts_NS_IE_CAUSE_omit(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%);">+     template PDU_NS tr_SNS_CONFIG_ACK(template Nsei nsei, template NsCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+            pDU_SNS_Config_Ack := {</span><br><span style="color: hsl(120, 100%, 40%);">+                       nsPduType := '10'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                   nSEI_NS := tr_NS_IE_NSEI(nsei),</span><br><span style="color: hsl(120, 100%, 40%);">+                       causeNS := tr_NS_IE_CAUSE(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%);">+</span><br><span>  type record BssgpCellId {</span><br><span>            RoutingAreaIdentification       ra_id,</span><br><span>               CellIdentity                    cell_id</span><br><span>diff --git a/pcu/gen_links.sh b/pcu/gen_links.sh</span><br><span>index 6f33433..6e549eb 100755</span><br><span>--- a/pcu/gen_links.sh</span><br><span>+++ b/pcu/gen_links.sh</span><br><span>@@ -46,7 +46,7 @@</span><br><span> </span><br><span> </span><br><span> DIR=../library</span><br><span style="color: hsl(0, 100%, 40%);">-FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="Misc_Helpers.ttcn General_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn L1CTL_PortType_CtrlFunct.ttcn L1CTL_PortType_CtrlFunctDef.cc LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "</span><br><span> FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "</span><br><span> FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "</span><br><span> FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "</span><br><span>diff --git a/pcu/regen_makefile.sh b/pcu/regen_makefile.sh</span><br><span>index 7eefd2c..ff712dc 100755</span><br><span>--- a/pcu/regen_makefile.sh</span><br><span>+++ b/pcu/regen_makefile.sh</span><br><span>@@ -1,5 +1,5 @@</span><br><span> #!/bin/sh</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc L1CTL_PortType_CtrlFunctDef.cc"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc L1CTL_PortType_CtrlFunctDef.cc Native_FunctionDefs.cc"</span><br><span> </span><br><span> ../regen-makefile.sh PCU_Tests.ttcn $FILES</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12941">change 12941</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/12941"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Iaa12c468a9e665d2050945cfc0a60dab4024071c </div>
<div style="display:none"> Gerrit-Change-Number: 12941 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>