New "#.SYNTAX" section for the asn2wrs conformance file.
authorgal <gal@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 29 Jun 2010 12:16:10 +0000 (12:16 +0000)
committergal <gal@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 29 Jun 2010 12:16:10 +0000 (12:16 +0000)
This allows syntaxes to be registered separately from PDUs.
Within the new section, the ASN.1 types to be used as syntaxes should be iterated.
An optional second parameter on each line may be provided to provide an alternative name for the syntax (that the user will see). This name must be in double quotes.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@33370 f5534014-38df-0310-8fa8-9805f1628bb7

asn1/x509sat/x509sat.cnf
epan/dissectors/packet-x509sat.c
epan/dissectors/packet-x509sat.h
tools/asn2wrs.py

index 72565f9439f352477fce35e40f968877dd40930c..f7c5db48e13bb429ead00494b39b6c0696de8654 100644 (file)
@@ -64,7 +64,7 @@ XDayOf
 ZonalResult
 ZonalSelect
 
-#.PDU
+#.SYNTAX
 BitString
 Boolean
 CaseIgnoreListMatch
@@ -83,23 +83,22 @@ OctetString
 PostalAddress
 PreferredDeliveryMethod
 PresentationAddress
-SyntaxBMPString
-SyntaxGeneralizedTime
-SyntaxGeneralString
-SyntaxGraphicString
-SyntaxIA5String
-SyntaxISO646String
-SyntaxNumericString
-SyntaxPrintableString
-SyntaxT61String
-SyntaxTeletexString
-SyntaxUniversalString
-SyntaxUTF8String
-SyntaxUTCTime
-SyntaxVideotexString
-SyntaxVisibleString
+SyntaxBMPString "BMPString"
+SyntaxGeneralizedTime "GeneralizedTime"
+SyntaxGeneralString "GeneralString"
+SyntaxGraphicString "GraphicString"
+SyntaxIA5String "IA5String"
+SyntaxISO646String "ISO646String"
+SyntaxNumericString "NumericString"
+SyntaxPrintableString "PrintableString"
+SyntaxT61String "T61String"
+SyntaxTeletexString "TeletexString"
+SyntaxUniversalString "UniversalString"
+SyntaxUTF8String "UTF8String"
+SyntaxUTCTime "UTCTime"
+SyntaxVideotexString "VideotexString"
+SyntaxVisibleString "VisibleString"
 TelephoneNumber
-
 TelexNumber
 UniqueIdentifier
 X121Address
index 3d29e3a15f0896b438ced07a4546f400f05554a7..33e23759c23258212e61199a44ba3c065a450c61 100644 (file)
@@ -1506,7 +1506,7 @@ dissect_x509sat_SyntaxIA5String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
 static int
 dissect_x509sat_SyntaxBMPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 349 "x509sat.cnf"
+#line 348 "x509sat.cnf"
        tvbuff_t        *wide_tvb = NULL;
        char            *string;
 
@@ -1514,7 +1514,7 @@ dissect_x509sat_SyntaxBMPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
                                             actx, tree, tvb, offset, hf_index,
                                             &wide_tvb);
 
-#line 354 "x509sat.cnf"
+#line 353 "x509sat.cnf"
        if (! wide_tvb) {
                return offset;
        }
@@ -1628,7 +1628,7 @@ dissect_x509sat_SyntaxGeneralString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
 static int
 dissect_x509sat_GUID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 363 "x509sat.cnf"
+#line 362 "x509sat.cnf"
   gint8 class;
   gboolean pc;
   gint32 tag;
@@ -2585,44 +2585,43 @@ void proto_register_x509sat(void) {
 /*--- Included file: packet-x509sat-syn-reg.c ---*/
 #line 1 "packet-x509sat-syn-reg.c"
   /*--- Syntax registrations ---*/
-  register_ber_syntax_dissector("DirectoryString", proto_x509sat, dissect_DirectoryString_PDU);
-  register_ber_syntax_dissector("UniqueIdentifier", proto_x509sat, dissect_UniqueIdentifier_PDU);
+  register_ber_syntax_dissector("BitString", proto_x509sat, dissect_BitString_PDU);
+  register_ber_syntax_dissector("Boolean", proto_x509sat, dissect_Boolean_PDU);
+  register_ber_syntax_dissector("CaseIgnoreListMatch", proto_x509sat, dissect_CaseIgnoreListMatch_PDU);
   register_ber_syntax_dissector("CountryName", proto_x509sat, dissect_CountryName_PDU);
-  register_ber_syntax_dissector("Guide", proto_x509sat, dissect_Guide_PDU);
+  register_ber_syntax_dissector("DestinationIndicator", proto_x509sat, dissect_DestinationIndicator_PDU);
+  register_ber_syntax_dissector("DirectoryString", proto_x509sat, dissect_DirectoryString_PDU);
   register_ber_syntax_dissector("EnhancedGuide", proto_x509sat, dissect_EnhancedGuide_PDU);
-  register_ber_syntax_dissector("PostalAddress", proto_x509sat, dissect_PostalAddress_PDU);
-  register_ber_syntax_dissector("TelephoneNumber", proto_x509sat, dissect_TelephoneNumber_PDU);
-  register_ber_syntax_dissector("TelexNumber", proto_x509sat, dissect_TelexNumber_PDU);
   register_ber_syntax_dissector("FacsimileTelephoneNumber", proto_x509sat, dissect_FacsimileTelephoneNumber_PDU);
-  register_ber_syntax_dissector("X121Address", proto_x509sat, dissect_X121Address_PDU);
+  register_ber_syntax_dissector("GUID", proto_x509sat, dissect_GUID_PDU);
+  register_ber_syntax_dissector("Guide", proto_x509sat, dissect_Guide_PDU);
   register_ber_syntax_dissector("InternationalISDNNumber", proto_x509sat, dissect_InternationalISDNNumber_PDU);
-  register_ber_syntax_dissector("DestinationIndicator", proto_x509sat, dissect_DestinationIndicator_PDU);
-  register_ber_syntax_dissector("PreferredDeliveryMethod", proto_x509sat, dissect_PreferredDeliveryMethod_PDU);
-  register_ber_syntax_dissector("PresentationAddress", proto_x509sat, dissect_PresentationAddress_PDU);
-  register_ber_syntax_dissector("ProtocolInformation", proto_x509sat, dissect_ProtocolInformation_PDU);
+  register_ber_syntax_dissector("Integer", proto_x509sat, dissect_Integer_PDU);
   register_ber_syntax_dissector("NameAndOptionalUID", proto_x509sat, dissect_NameAndOptionalUID_PDU);
-  register_ber_syntax_dissector("CaseIgnoreListMatch", proto_x509sat, dissect_CaseIgnoreListMatch_PDU);
   register_ber_syntax_dissector("ObjectIdentifier", proto_x509sat, dissect_ObjectIdentifier_PDU);
   register_ber_syntax_dissector("OctetString", proto_x509sat, dissect_OctetString_PDU);
-  register_ber_syntax_dissector("BitString", proto_x509sat, dissect_BitString_PDU);
-  register_ber_syntax_dissector("Integer", proto_x509sat, dissect_Integer_PDU);
-  register_ber_syntax_dissector("Boolean", proto_x509sat, dissect_Boolean_PDU);
+  register_ber_syntax_dissector("PostalAddress", proto_x509sat, dissect_PostalAddress_PDU);
+  register_ber_syntax_dissector("PreferredDeliveryMethod", proto_x509sat, dissect_PreferredDeliveryMethod_PDU);
+  register_ber_syntax_dissector("PresentationAddress", proto_x509sat, dissect_PresentationAddress_PDU);
+  register_ber_syntax_dissector("BMPString", proto_x509sat, dissect_SyntaxBMPString_PDU);
   register_ber_syntax_dissector("GeneralizedTime", proto_x509sat, dissect_SyntaxGeneralizedTime_PDU);
-  register_ber_syntax_dissector("UTCTime", proto_x509sat, dissect_SyntaxUTCTime_PDU);
+  register_ber_syntax_dissector("GeneralString", proto_x509sat, dissect_SyntaxGeneralString_PDU);
+  register_ber_syntax_dissector("GraphicString", proto_x509sat, dissect_SyntaxGraphicString_PDU);
+  register_ber_syntax_dissector("IA5String", proto_x509sat, dissect_SyntaxIA5String_PDU);
+  register_ber_syntax_dissector("ISO646String", proto_x509sat, dissect_SyntaxISO646String_PDU);
   register_ber_syntax_dissector("NumericString", proto_x509sat, dissect_SyntaxNumericString_PDU);
   register_ber_syntax_dissector("PrintableString", proto_x509sat, dissect_SyntaxPrintableString_PDU);
-  register_ber_syntax_dissector("IA5String", proto_x509sat, dissect_SyntaxIA5String_PDU);
-  register_ber_syntax_dissector("BMPString", proto_x509sat, dissect_SyntaxBMPString_PDU);
+  register_ber_syntax_dissector("T61String", proto_x509sat, dissect_SyntaxT61String_PDU);
+  register_ber_syntax_dissector("TeletexString", proto_x509sat, dissect_SyntaxTeletexString_PDU);
   register_ber_syntax_dissector("UniversalString", proto_x509sat, dissect_SyntaxUniversalString_PDU);
   register_ber_syntax_dissector("UTF8String", proto_x509sat, dissect_SyntaxUTF8String_PDU);
-  register_ber_syntax_dissector("TeletexString", proto_x509sat, dissect_SyntaxTeletexString_PDU);
-  register_ber_syntax_dissector("T61String", proto_x509sat, dissect_SyntaxT61String_PDU);
+  register_ber_syntax_dissector("UTCTime", proto_x509sat, dissect_SyntaxUTCTime_PDU);
   register_ber_syntax_dissector("VideotexString", proto_x509sat, dissect_SyntaxVideotexString_PDU);
-  register_ber_syntax_dissector("GraphicString", proto_x509sat, dissect_SyntaxGraphicString_PDU);
-  register_ber_syntax_dissector("ISO646String", proto_x509sat, dissect_SyntaxISO646String_PDU);
   register_ber_syntax_dissector("VisibleString", proto_x509sat, dissect_SyntaxVisibleString_PDU);
-  register_ber_syntax_dissector("GeneralString", proto_x509sat, dissect_SyntaxGeneralString_PDU);
-  register_ber_syntax_dissector("GUID", proto_x509sat, dissect_GUID_PDU);
+  register_ber_syntax_dissector("TelephoneNumber", proto_x509sat, dissect_TelephoneNumber_PDU);
+  register_ber_syntax_dissector("TelexNumber", proto_x509sat, dissect_TelexNumber_PDU);
+  register_ber_syntax_dissector("UniqueIdentifier", proto_x509sat, dissect_UniqueIdentifier_PDU);
+  register_ber_syntax_dissector("X121Address", proto_x509sat, dissect_X121Address_PDU);
 
 /*--- End of included file: packet-x509sat-syn-reg.c ---*/
 #line 75 "packet-x509sat-template.c"
index 77eab23282889aa064e4e3415ac6046ed3562dc5..d0c2df7c429f68c6ceed818d9fda4da2f8287f6a 100644 (file)
@@ -1,7 +1,7 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
 /* packet-x509sat.h                                                           */
-/* ../../tools/asn2wrs.py -b -e -R -r Syntax -p x509sat -c ./x509sat.cnf -s ./packet-x509sat-template -D . SelectedAttributeTypes.asn */
+/* ../../tools/asn2wrs.py -b -e -r Syntax -p x509sat -c ./x509sat.cnf -s ./packet-x509sat-template -D . SelectedAttributeTypes.asn */
 
 /* Input file: packet-x509sat-template.h */
 
index 75e6ee47f94e4a4dafff629eccae72d6e8316835..e0cb891b0666054f8e2997b91c3a9fb03fa57215 100755 (executable)
@@ -1512,19 +1512,6 @@ class EthCtx:
     out += 'dissect_'+f+'(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);\n'
     return out
 
-  #--- eth_out_syntax_reg ----------------------------------------------------------
-  def eth_out_syntax_reg(self, p, f):
-    if f.endswith('_PDU'):
-       n = f[:-4]
-    else:
-       n = f
-
-    if self.remove_prefix and n.startswith(self.remove_prefix):
-        n = n[len(self.remove_prefix):]
-
-    out = '  register_ber_syntax_dissector("'+n+'", proto_'+p+', dissect_'+f+');\n'
-    return out
-
   #--- eth_output_hf ----------------------------------------------------------
   def eth_output_hf (self):
     if not len(self.eth_hf_ord) and not len(self.eth_hfpdu_ord) and not len(self.named_bit): return
@@ -1858,11 +1845,12 @@ class EthCtx:
     fx = self.output.file_open('syn-reg')
     fempty = True
     first_decl = True
-    for p in self.eth_hfpdu_ord:
+    for k in self.conform.get_order('SYNTAX'):
+      reg = self.conform.use_item('SYNTAX', k)
       if first_decl:
         fx.write('  /*--- Syntax registrations ---*/\n')
         first_decl = False
-      fx.write(self.eth_out_syntax_reg(self.eproto, p))
+      fx.write('  register_ber_syntax_dissector(%s, proto_%s, dissect_%s_PDU);\n' % (k, self.eproto, reg['pdu']));
       fempty=False
     self.output.file_close(fx, discard=fempty)
 
@@ -2078,6 +2066,7 @@ class EthCnf:
     self.tblcfg['MAKE_ENUM']       = { 'val_nm' : 'flag',     'val_dflt' : 0,     'chk_dup' : True, 'chk_use' : True }
     self.tblcfg['USE_VALS_EXT']    = { 'val_nm' : 'flag',     'val_dflt' : 0,     'chk_dup' : True, 'chk_use' : True }
     self.tblcfg['PDU']             = { 'val_nm' : 'attr',     'val_dflt' : None,  'chk_dup' : True, 'chk_use' : True }
+    self.tblcfg['SYNTAX']             = { 'val_nm' : 'attr',     'val_dflt' : None,  'chk_dup' : True, 'chk_use' : True }
     self.tblcfg['REGISTER']        = { 'val_nm' : 'attr',     'val_dflt' : None,  'chk_dup' : True, 'chk_use' : True }
     self.tblcfg['USER_DEFINED']    = { 'val_nm' : 'flag',     'val_dflt' : 0,     'chk_dup' : True, 'chk_use' : True }
     self.tblcfg['NO_EMIT']         = { 'val_nm' : 'flag',     'val_dflt' : 0,     'chk_dup' : True, 'chk_use' : True }
@@ -2183,6 +2172,16 @@ class EthCnf:
     self.add_item('PDU', par[0], attr=attr, fn=fn, lineno=lineno)
     return
 
+  def add_syntax(self, par, fn, lineno):
+    #print "add_syntax(par=%s, %s, %d)" % (str(par), fn, lineno)
+    if( (len(par) >=2)):
+      name = par[1]
+    else:
+      name = '"'+par[0]+'"'
+    attr = { 'pdu' : par[0] }
+    self.add_item('SYNTAX', name, attr=attr, fn=fn, lineno=lineno)
+    return
+
   def add_register(self, pdu, par, fn, lineno):
     #print "add_register(pdu=%s, par=%s, %s, %d)" % (pdu, str(par), fn, lineno)
     if (par[0] in ('N', 'NUM')):   rtype = 'NUM'; (pmin, pmax) = (2, 2)
@@ -2312,7 +2311,7 @@ class EthCnf:
                                     'OMIT_ASSIGNMENT', 'NO_OMIT_ASSGN',
                                     'VIRTUAL_ASSGN', 'SET_TYPE', 'ASSIGN_VALUE_TO_TYPE',
                                     'TYPE_RENAME', 'FIELD_RENAME', 'TF_RENAME', 'IMPORT_TAG',
-                                    'TYPE_ATTR', 'ETYPE_ATTR', 'FIELD_ATTR', 'EFIELD_ATTR'):
+                                    'TYPE_ATTR', 'ETYPE_ATTR', 'FIELD_ATTR', 'EFIELD_ATTR', 'SYNTAX'):
           ctx = result.group('name')
         elif result.group('name') in ('OMIT_ALL_ASSIGNMENTS', 'OMIT_ASSIGNMENTS_EXCEPT',
                                       'OMIT_ALL_TYPE_ASSIGNMENTS', 'OMIT_TYPE_ASSIGNMENTS_EXCEPT',
@@ -2522,6 +2521,13 @@ class EthCnf:
         self.add_pdu(par[0:2], is_new, fn, lineno)
         if (len(par)>=3):
           self.add_register(par[0], par[2:5], fn, lineno)
+      elif ctx in ('SYNTAX'):
+        if empty.match(line): continue
+        par = get_par(line, 1, 2, fn=fn, lineno=lineno)
+        if not par: continue
+        if not self.check_item('PDU', par[0]):
+          self.add_pdu(par[0:1], False, fn, lineno)
+        self.add_syntax(par, fn, lineno)
       elif ctx in ('REGISTER', 'REGISTER_NEW'):
         if empty.match(line): continue
         par = get_par(line, 3, 4, fn=fn, lineno=lineno)