From Sylvain Munaut:
authorAnders Broman <anders.broman@ericsson.com>
Sun, 5 Feb 2012 08:14:09 +0000 (08:14 -0000)
committerAnders Broman <anders.broman@ericsson.com>
Sun, 5 Feb 2012 08:14:09 +0000 (08:14 -0000)
0001-packet-csn1-Fix-indenting-of-the-CSN_UINT-subsection.patch
0002-packet-csn1-Add-new-maro-M_TYPE_LABEL-to-customize-n.patch
0003-packet-csn1-New-macro-M_FIXED_LABEL-to-customize-str.patch
0004-packet-csn1-Allow-CHOICE-elements-to-re-process-the-.patch
0005-packet-csn1-Make-new-M_CHOICE_IL-option-that-doesn-t.patch
0006-packet-csn-Extend-CSN_SERIALIZE-to-allow-0-bit-of-le.patch

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6789

svn path=/trunk/; revision=40847

epan/dissectors/packet-csn1.c
epan/dissectors/packet-csn1.h
epan/dissectors/packet-gsm_rlcmac.c

index 9f9d698361159d496f6188de70c7583c3f21468b..8d8f685e3c437db573fe0222b57619302f1e890f 100644 (file)
@@ -550,7 +550,7 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
             CSN_DESCR   descr[2];
             gint16      Status;
             csnStream_t arT = *ar;
-            proto_item   *ti;
+            proto_item   *ti = NULL;
             proto_tree   *test_tree;
 
             descr[0]      = pChoice->descr;
@@ -558,22 +558,32 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
             descr[1].type = CSN_END;
             pui8          = pui8DATA(data, pDescr->offset);
             *pui8         = i;
-            proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+no_of_bits-1)>>3)-(bit_offset>>3)+1, "%s Choice: %s (%d)",
-                                       decode_bits_in_field(bit_offset, no_of_bits, tvb_get_bits8(tvb, bit_offset, no_of_bits)),
-                                       pDescr->sz, value);
 
-            bit_offset += no_of_bits;
-            remaining_bits_len -= no_of_bits;
+            if (pDescr->sz) {
+              proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+no_of_bits-1)>>3)-(bit_offset>>3)+1, "%s Choice: %s (%d)",
+                                         decode_bits_in_field(bit_offset, no_of_bits, tvb_get_bits8(tvb, bit_offset, no_of_bits)),
+                                         pDescr->sz, value);
+            }
 
-            ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
-            test_tree = proto_item_add_subtree(ti, ett_csn1);
+            if (!pChoice->keep_bits) {
+              bit_offset += no_of_bits;
+              remaining_bits_len -= no_of_bits;
+            }
+
+            if (pDescr->sz) {
+              ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
+              test_tree = proto_item_add_subtree(ti, ett_csn1);
+            } else {
+             test_tree = tree;
+            }
 
             csnStreamInit(&arT, bit_offset, remaining_bits_len);
             Status = csnStreamDissector(test_tree, &arT, descr, tvb, data, ett_csn1);
 
             if (Status >= 0)
             {
-              proto_item_set_len(ti,((arT.bit_offset-1)>>3) - (bit_offset>>3)+1);
+              if (ti)
+                proto_item_set_len(ti,((arT.bit_offset-1)>>3) - (bit_offset>>3)+1);
               remaining_bits_len = arT.remaining_bits_len;
               bit_offset         = arT.bit_offset;
             }
@@ -601,25 +611,38 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
         gint16               Status = -1;
         proto_item   *ti;
         proto_tree   *test_tree;
-        guint8 length = tvb_get_bits8(tvb, bit_offset, length_len);
+        guint8 length = 0;
+
+        if (length_len) {
+          length = tvb_get_bits8(tvb, bit_offset, length_len);
 
-        proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+length_len-1)>>3)-(bit_offset>>3)+1, "%s %s length: %d",
-                            decode_bits_in_field(bit_offset, length_len, length),
-                            pDescr->sz, length);
+          proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+length_len-1)>>3)-(bit_offset>>3)+1, "%s %s length: %d",
+                              decode_bits_in_field(bit_offset, length_len, length),
+                              pDescr->sz, length);
 
-        bit_offset += length_len;
-        remaining_bits_len -= length_len;
-        ti = proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+length-1)>>3)-(bit_offset>>3) + 1, "%s", pDescr->sz);
+          bit_offset += length_len;
+          remaining_bits_len -= length_len;
+
+          ti = proto_tree_add_text(tree, tvb, bit_offset>>3, ((bit_offset+length-1)>>3)-(bit_offset>>3) + 1, "%s", pDescr->sz);
+        } else {
+          ti = proto_tree_add_text(tree, tvb, bit_offset>>3, 1, "%s", pDescr->sz);
+        }
 
         test_tree = proto_item_add_subtree(ti, ett_csn1);
 
-        csnStreamInit(&arT, bit_offset, length);
+        csnStreamInit(&arT, bit_offset, length > 0 ? length : remaining_bits_len);
         Status = serialize(test_tree, &arT, tvb, pvDATA(data, pDescr->offset), ett_csn1);
 
         if (Status >= 0)
         {
-          remaining_bits_len -= length;
-          bit_offset         += length;
+          if (length > 0) {
+            remaining_bits_len -= length;
+            bit_offset         += length;
+          } else {
+            proto_item_set_len(ti,((arT.bit_offset - bit_offset)>>3)+1);
+            remaining_bits_len = arT.remaining_bits_len;
+            bit_offset         = arT.bit_offset;
+          }
           pDescr++;
         }
         else
@@ -712,27 +735,27 @@ csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pDescr, t
             guint8 no_of_bits = (guint8) pDescr->i;
             if (remaining_bits_len >= no_of_bits)
             {
-            if (no_of_bits <= 8)
-            {
-              guint8 ui8 = tvb_get_bits8(tvb, bit_offset, no_of_bits);
-              pui8      = pui8DATA(data, pDescr->offset);
-              *pui8     = ui8;
-              proto_tree_add_bits_item(tree, *(pDescr->serialize.hf_ptr), tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
+              if (no_of_bits <= 8)
+              {
+                guint8 ui8 = tvb_get_bits8(tvb, bit_offset, no_of_bits);
+                pui8      = pui8DATA(data, pDescr->offset);
+                *pui8     = ui8;
+                proto_tree_add_bits_item(tree, *(pDescr->serialize.hf_ptr), tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
 
-            }
-            else if (no_of_bits <= 16)
-            {
-              guint16 ui16 = tvb_get_bits16(tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
-              pui16       = pui16DATA(data, pDescr->offset);
-              *pui16      = ui16;
-              proto_tree_add_bits_item(tree, *(pDescr->serialize.hf_ptr), tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
-            }
-            else if (no_of_bits <= 32)
-            {
-              guint32 ui32 = tvb_get_bits32(tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
-              pui32       = pui32DATA(data, pDescr->offset);
-              *pui32      = ui32;
-              proto_tree_add_bits_item(tree, *(pDescr->serialize.hf_ptr), tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
+              }
+              else if (no_of_bits <= 16)
+              {
+                guint16 ui16 = tvb_get_bits16(tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
+                pui16       = pui16DATA(data, pDescr->offset);
+                *pui16      = ui16;
+                proto_tree_add_bits_item(tree, *(pDescr->serialize.hf_ptr), tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
+              }
+              else if (no_of_bits <= 32)
+              {
+                guint32 ui32 = tvb_get_bits32(tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
+                pui32       = pui32DATA(data, pDescr->offset);
+                *pui32      = ui32;
+                proto_tree_add_bits_item(tree, *(pDescr->serialize.hf_ptr), tvb, bit_offset, no_of_bits, ENC_BIG_ENDIAN);
 
               }
               else
index 889afa13570df4b66324da08ce423abdf209ec67..672f162750b8fbecc83af9c45a3f9297f9f13973 100644 (file)
@@ -192,6 +192,7 @@ typedef struct
 {
   guint8     bits;
   guint8     value;
+  gboolean   keep_bits;
   CSN_DESCR descr;
 } CSN_ChoiceElement_t;
 
@@ -456,6 +457,18 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
 #define M_TYPE(_STRUCT, _MEMBER, _MEMBER_TYPE)\
         {CSN_TYPE, 0, {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, #_MEMBER, {(StreamSerializeFcn_t)0}}
 
+/******************************************************************************
+ * M_TYPE_LABEL(Par1, Par2, Par3, Par4)
+ * Same as M_TYPE but allows to define a custom string for the subtree
+ * <list> ::= {1 <type>} ** 0 ;
+ *      Par1: C structure name
+ *      Par2: C structure element name
+ *      Par3: type of member
+ *      Par4: C string for the text
+ *****************************************************************************/
+#define M_TYPE_LABEL(_STRUCT, _MEMBER, _MEMBER_TYPE, _LABEL)\
+        {CSN_TYPE, 0, {(void*)CSNDESCR_##_MEMBER_TYPE}, offsetof(_STRUCT, _MEMBER), FALSE, _LABEL, {(StreamSerializeFcn_t)0}}
+
 /******************************************************************************
  * M_UNION(Par1, Par2)
  * Informs the CSN.1 library that a union follows and how many possible choices
@@ -505,6 +518,14 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
 #define M_CHOICE(_STRUCT, _MEMBER, _CHOICE, _ElementCount)\
         {CSN_CHOICE, _ElementCount, {(void*)_CHOICE}, offsetof(_STRUCT, _MEMBER), FALSE, #_CHOICE, {(StreamSerializeFcn_t)0}}
 
+/******************************************************************************
+ * M_CHOICE_IL(Par1, Par2, Par3, Par4)
+ * See M_CHOICE above, but displayed inline (i.e. no specific elements are
+ * displayed to show there was a choice
+ *****************************************************************************/
+#define M_CHOICE_IL(_STRUCT, _MEMBER, _CHOICE, _ElementCount)\
+       {CSN_CHOICE, _ElementCount, {(void*)_CHOICE}, offsetof(_STRUCT, _MEMBER), FALSE, NULL, {(StreamSerializeFcn_t)0}}
+
 /******************************************************************************
  * M_FIXED(Par1, Par2, Par3)
  * Defines a fixed value of type integer which should be fetched from or stored 
@@ -512,11 +533,23 @@ gint16 csnStreamDissector(proto_tree *tree, csnStream_t* ar, const CSN_DESCR* pD
  *      Par1: C structure name
  *      Par2: gives the length of the fixed number in bits.
  *      Par3: the value of the number. If the expected value is not present in 
-            the message the unpacking procedure is aborted
+ *            the message the unpacking procedure is aborted
  *****************************************************************************/
 #define M_FIXED(_STRUCT, _BITS, _BITVALUE)\
         {CSN_FIXED, _BITS, {0}, _BITVALUE, FALSE, #_BITVALUE, {(StreamSerializeFcn_t)0}}
 
+/******************************************************************************
+ * M_FIXED_LABEL(Par1, Par2, Par3, Par4)
+ * Same as M_FIXED but allows to define a custom string for the subtree
+ *      Par1: C structure name
+ *      Par2: gives the length of the fixed number in bits.
+ *      Par3: the value of the number. If the expected value is not present in 
+ *            the message the unpacking procedure is aborted
+ *      Par4: C string for the text
+ *****************************************************************************/
+#define M_FIXED_LABEL(_STRUCT, _BITS, _BITVALUE, _LABEL)\
+       {CSN_FIXED, _BITS, {0}, _BITVALUE, FALSE, _LABEL, {(StreamSerializeFcn_t)0}}
+
 /******************************************************************************
  * M_SERIALIZE(Par1, Par2, Par3)
  * Allows using a complete free format of data being encoded or decoded. 
index d2741ccc81389d86bb2ab893ea7e4360760017f7..079fe0e6e564f78c43f3a8438e6042c45ff648e6 100644 (file)
@@ -1565,9 +1565,9 @@ CSN_DESCR_END  (IA_EGPRS_00_t)
 static const
 CSN_ChoiceElement_t IA_EGPRS_Choice[] =
 {
-  {2, 0x00, M_TYPE   (IA_EGPRS_t, u.IA_EGPRS_PUA, IA_EGPRS_00_t)},
-  {2, 0x01, CSN_ERROR(IA_EGPRS_t, "01 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)},
-  {1, 0x01, CSN_ERROR(IA_EGPRS_t, "1 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)}
+  {2, 0x00, 0, M_TYPE   (IA_EGPRS_t, u.IA_EGPRS_PUA, IA_EGPRS_00_t)},
+  {2, 0x01, 0, CSN_ERROR(IA_EGPRS_t, "01 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)},
+  {1, 0x01, 0, CSN_ERROR(IA_EGPRS_t, "1 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)}
 };
 
 /* Please observe the double usage of UnionType element.
@@ -1704,10 +1704,10 @@ CSN_DESCR_END  (IA_PacketAssignment_t)
 static const
 CSN_ChoiceElement_t PacketPollingID[] =
 {
-  {1, 0,    M_TYPE(PacketPollingID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02, M_UINT(PacketPollingID_t, u.TLLI, 32, &hf_packetpollingid_tlli)},
-  {3, 0x06, M_UINT(PacketPollingID_t, u.TQI, 16, &hf_packetpollingid_tqi)},
-/*{3, 0x07 , M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},*/
+  {1, 0,    0, M_TYPE(PacketPollingID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketPollingID_t, u.TLLI, 32, &hf_packetpollingid_tlli)},
+  {3, 0x06, 0, M_UINT(PacketPollingID_t, u.TQI, 16, &hf_packetpollingid_tqi)},
+/*{3, 0x07 , 0, M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},*/
 };
 
 static const
@@ -1783,9 +1783,9 @@ CSN_DESCR_END  (PBCCH_Not_present_t)
 static const
 CSN_ChoiceElement_t SI13_PBCCH_Description_Channel[] =
 {/* this one is used in SI13*/
-  {2, 0x00 , M_NULL(PBCCH_Description_t, u.dummy)},/*Default to BCCH carrier*/
-  {2, 0x01 , M_UINT(PBCCH_Description_t, u.ARFCN, 10, &hf_pbcch_description_arfcn)},
-  {1, 0x01 , M_UINT(PBCCH_Description_t, u.MAIO, 6, &hf_pbcch_description_maio)},
+  {2, 0x00, 0, M_NULL(PBCCH_Description_t, u.dummy)},/*Default to BCCH carrier*/
+  {2, 0x01, 0, M_UINT(PBCCH_Description_t, u.ARFCN, 10, &hf_pbcch_description_arfcn)},
+  {1, 0x01, 0, M_UINT(PBCCH_Description_t, u.MAIO, 6, &hf_pbcch_description_maio)},
 };
 
 static const
@@ -2054,12 +2054,12 @@ gint16 Additional_access_technologies_Dissector(proto_tree *tree, csnStream_t* a
 static const
 CSN_ChoiceElement_t MS_RA_capability_value_Choice[] =
 {
-  {4, AccTech_GSMP,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSME,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM1800,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM1900,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM850,   M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSMOther, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
+  {4, AccTech_GSMP,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSME,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM1800,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM1900,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM850,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMOther, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
 };
 
 static const
@@ -2087,12 +2087,12 @@ CSN_DESCR_END  (ARC_t)
 static const
 CSN_ChoiceElement_t MultibandChoice[] =
 {
-  {3, 0x00, M_UINT(Multiband_t, u.A5_Bits, 4, &hf_multiband_a5_bits)},
-  {3, 0x05, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x06, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x01, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x02, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x04, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x00, 0, M_UINT(Multiband_t, u.A5_Bits, 4, &hf_multiband_a5_bits)},
+  {3, 0x05, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x06, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x01, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x02, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x04, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
 };
 
 static const
@@ -2212,8 +2212,8 @@ CSN_DESCR_END  (Channel_Request_Description_t)
 static const
 CSN_ChoiceElement_t PacketResourceRequestID[] =
 {
-  {1, 0,    M_TYPE(PacketResourceRequestID_t, u.Global_TFI, Global_TFI_t)},
-  {1, 0x01, M_UINT(PacketResourceRequestID_t, u.TLLI, 32, &hf_packetresourcerequestid_tlli)},
+  {1, 0,    0, M_TYPE(PacketResourceRequestID_t, u.Global_TFI, Global_TFI_t)},
+  {1, 0x01, 0, M_UINT(PacketResourceRequestID_t, u.TLLI, 32, &hf_packetresourcerequestid_tlli)},
 };
 
 static const
@@ -2894,10 +2894,10 @@ CSN_DESCR_END  (h111_Packet_Request_Reference_t)
 static const
 CSN_ChoiceElement_t PacketUplinkID[] =
 {
-  {1, 0 ,    M_TYPE(PacketUplinkID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02 , M_UINT(PacketUplinkID_t, u.TLLI, 32, &hf_packetuplinkid_tlli)},
-  {3, 0x06 , M_UINT(PacketUplinkID_t, u.TQI, 16, &hf_packetuplinkid_tqi)},
-  {3, 0x07 , M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
+  {1, 0,    0, M_TYPE(PacketUplinkID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketUplinkID_t, u.TLLI, 32, &hf_packetuplinkid_tlli)},
+  {3, 0x06, 0, M_UINT(PacketUplinkID_t, u.TQI, 16, &hf_packetuplinkid_tqi)},
+  {3, 0x07, 0, M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
 };
 
 static const
@@ -3028,8 +3028,8 @@ CSN_DESCR_END  (Measurement_Mapping_struct_t)
 static const
 CSN_ChoiceElement_t PacketDownlinkID[] =
 {
-  {1,    0, M_TYPE(PacketDownlinkID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02, M_UINT(PacketDownlinkID_t, u.TLLI, 32, &hf_packetdownlinkid_tlli)},
+  {1,    0, 0, M_TYPE(PacketDownlinkID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketDownlinkID_t, u.TLLI, 32, &hf_packetdownlinkid_tlli)},
 };
 
 static const
@@ -3268,9 +3268,9 @@ CSN_DESCR_END  (GlobalTimingOrPower_t)
 static const
 CSN_ChoiceElement_t PacketPowerControlTimingAdvanceID[] =
 {
-  {1, 0,    M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Global_TFI, Global_TFI_t)},
-  {3, 0x06, M_UINT(PacketPowerControlTimingAdvanceID_t, u.TQI, 16, &hf_packetpowercontroltimingadvanceid_tqi)},
-  {3, 0x07, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
+  {1, 0,    0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Global_TFI, Global_TFI_t)},
+  {3, 0x06, 0, M_UINT(PacketPowerControlTimingAdvanceID_t, u.TQI, 16, &hf_packetpowercontroltimingadvanceid_tqi)},
+  {3, 0x07, 0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
 };
 
 static const
@@ -3550,9 +3550,9 @@ CSN_DESCR_END  (Packet_PRACH_Parameters_t)
 static const
 CSN_ChoiceElement_t RejectID[] =
 {
-  {1, 0x00, M_UINT(RejectID_t, u.TLLI, 32, &hf_rejectid_tlli)},
-  {2, 0x02, M_TYPE(RejectID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
-  {2, 0x03, M_TYPE(RejectID_t, u.Global_TFI, Global_TFI_t)},
+  {1, 0x00, 0, M_UINT(RejectID_t, u.TLLI, 32, &hf_rejectid_tlli)},
+  {2, 0x02, 0, M_TYPE(RejectID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
+  {2, 0x03, 0, M_TYPE(RejectID_t, u.Global_TFI, Global_TFI_t)},
 };
 
 static const
@@ -3583,8 +3583,8 @@ CSN_DESCR_END  (Packet_Access_Reject_t)
 static const
 CSN_ChoiceElement_t PacketCellChangeOrderID[] =
 {
-  {1, 0,    M_TYPE(PacketCellChangeOrderID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02, M_UINT(PacketCellChangeOrderID_t, u.TLLI, 32, &hf_packetcellchangeorderid_tlli)},
+  {1, 0,    0, M_TYPE(PacketCellChangeOrderID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketCellChangeOrderID_t, u.TLLI, 32, &hf_packetcellchangeorderid_tlli)},
 };
 /* PacketCellChangeOrderID_t; */
 
@@ -4981,8 +4981,8 @@ CSN_DESCR_END  (PNCD_Container_Without_ID_t)
 static const
 CSN_ChoiceElement_t PNCDContainer[] =
 {
-  {1, 0x0, M_TYPE(PNCDContainer_t, u.PNCD_Container_Without_ID, PNCD_Container_Without_ID_t)},
-  {1, 0x1, M_TYPE(PNCDContainer_t, u.PNCD_Container_With_ID, PNCD_Container_With_ID_t)},
+  {1, 0x0, 0, M_TYPE(PNCDContainer_t, u.PNCD_Container_Without_ID, PNCD_Container_Without_ID_t)},
+  {1, 0x1, 0, M_TYPE(PNCDContainer_t, u.PNCD_Container_With_ID, PNCD_Container_With_ID_t)},
 };
 
 static const
@@ -5286,8 +5286,8 @@ CSN_DESCR_END  (Packet_PhysicalInformation_t)
 static const
 CSN_ChoiceElement_t AdditionalMsRadAccessCapID[] =
 {
-  {1, 0,    M_TYPE(AdditionalMsRadAccessCapID_t, u.Global_TFI, Global_TFI_t)},
-  {1, 0x01, M_UINT(AdditionalMsRadAccessCapID_t, u.TLLI, 32, &hf_additionalmsradcap_tlli)},
+  {1, 0,    0, M_TYPE(AdditionalMsRadAccessCapID_t, u.Global_TFI, Global_TFI_t)},
+  {1, 0x01, 0, M_UINT(AdditionalMsRadAccessCapID_t, u.TLLI, 32, &hf_additionalmsradcap_tlli)},
 };
 
 static const