New option (-R) to asn2wrs to register the PDUs defined in the conformance file as BER syntaxes (register_ber_syntax_dissector()).
svn path=/trunk/; revision=33175
This commit is contained in:
parent
5e0a3b2ded
commit
a3300280f2
|
@ -1508,6 +1508,15 @@ class EthCtx:
|
||||||
out += 'dissect_'+f+'(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);\n'
|
out += 'dissect_'+f+'(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);\n'
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
#--- eth_out_syntax_reg ----------------------------------------------------------
|
||||||
|
def eth_out_syntax_reg(self, p, f):
|
||||||
|
if f.endswith('_PDU'):
|
||||||
|
n = f[:-4]
|
||||||
|
else:
|
||||||
|
n = f
|
||||||
|
out = ' register_ber_syntax_dissector("'+n+'", proto_'+p+', dissect_'+f+');\n'
|
||||||
|
return out
|
||||||
|
|
||||||
#--- eth_output_hf ----------------------------------------------------------
|
#--- eth_output_hf ----------------------------------------------------------
|
||||||
def eth_output_hf (self):
|
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
|
if not len(self.eth_hf_ord) and not len(self.eth_hfpdu_ord) and not len(self.named_bit): return
|
||||||
|
@ -1832,6 +1841,15 @@ class EthCtx:
|
||||||
fx.write(' %sregister_%s_oid_dissector(%s, dissect_%s, proto_%s, %s);\n' % (new_prefix, reg['rtype'].lower(), roid, f, self.eproto, reg['roidname']))
|
fx.write(' %sregister_%s_oid_dissector(%s, dissect_%s, proto_%s, %s);\n' % (new_prefix, reg['rtype'].lower(), roid, f, self.eproto, reg['roidname']))
|
||||||
fempty = False
|
fempty = False
|
||||||
fx.write('\n')
|
fx.write('\n')
|
||||||
|
if (self.conform.register_syntaxes and len(self.eth_hfpdu_ord)):
|
||||||
|
first_decl = True
|
||||||
|
for p in self.eth_hfpdu_ord:
|
||||||
|
if first_decl:
|
||||||
|
fx.write('/*--- Syntax registrations ---*/\n')
|
||||||
|
first_decl = False
|
||||||
|
fx.write(self.eth_out_syntax_reg(self.eproto, p))
|
||||||
|
if not first_decl:
|
||||||
|
fx.write('\n')
|
||||||
self.output.file_close(fx, discard=fempty)
|
self.output.file_close(fx, discard=fempty)
|
||||||
|
|
||||||
#--- eth_output_table -----------------------------------------------------
|
#--- eth_output_table -----------------------------------------------------
|
||||||
|
@ -2039,6 +2057,7 @@ class EthCnf:
|
||||||
self.fn = {}
|
self.fn = {}
|
||||||
self.report = {}
|
self.report = {}
|
||||||
self.suppress_line = False
|
self.suppress_line = False
|
||||||
|
self.register_syntaxes = False
|
||||||
self.include_path = []
|
self.include_path = []
|
||||||
# Value name Default value Duplicity check Usage check
|
# Value name Default value Duplicity check Usage check
|
||||||
self.tblcfg['EXPORTS'] = { 'val_nm' : 'flag', 'val_dflt' : 0, 'chk_dup' : True, 'chk_use' : True }
|
self.tblcfg['EXPORTS'] = { 'val_nm' : 'flag', 'val_dflt' : 0, 'chk_dup' : True, 'chk_use' : True }
|
||||||
|
@ -2664,6 +2683,9 @@ class EthCnf:
|
||||||
par = self.check_par(par, 1, 1, fn, lineno)
|
par = self.check_par(par, 1, 1, fn, lineno)
|
||||||
if not par: return
|
if not par: return
|
||||||
self.ectx.default_external_type_cb = par[0]
|
self.ectx.default_external_type_cb = par[0]
|
||||||
|
elif opt in ("-R",):
|
||||||
|
par = self.check_par(par, 0, 0, fn, lineno)
|
||||||
|
self.register_syntaxes = True
|
||||||
else:
|
else:
|
||||||
warnings.warn_explicit("Unknown option %s" % (opt),
|
warnings.warn_explicit("Unknown option %s" % (opt),
|
||||||
UserWarning, fn, lineno)
|
UserWarning, fn, lineno)
|
||||||
|
@ -7629,7 +7651,8 @@ asn2wrs [-h|?] [-d dbg] [-b] [-p proto] [-c cnf_file] [-e] input_file(s) ...
|
||||||
-L : Suppress #line directive from .cnf file
|
-L : Suppress #line directive from .cnf file
|
||||||
-D dir : Directory for input_file(s) (default: '.')
|
-D dir : Directory for input_file(s) (default: '.')
|
||||||
-C : Add check for SIZE constraints
|
-C : Add check for SIZE constraints
|
||||||
|
-R : Register PDUs as BER syntaxes
|
||||||
|
|
||||||
input_file(s) : Input ASN.1 file(s)
|
input_file(s) : Input ASN.1 file(s)
|
||||||
|
|
||||||
-d dbg : Debug output, dbg = [l][y][p][s][a][t][c][m][o]
|
-d dbg : Debug output, dbg = [l][y][p][s][a][t][c][m][o]
|
||||||
|
@ -7650,7 +7673,7 @@ def eth_main():
|
||||||
global lexer
|
global lexer
|
||||||
print "ASN.1 to Wireshark dissector compiler";
|
print "ASN.1 to Wireshark dissector compiler";
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(sys.argv[1:], "h?d:D:buXp:FTo:O:c:I:eESs:kLC");
|
opts, args = getopt.getopt(sys.argv[1:], "h?d:D:buXp:FTo:O:c:I:eESs:kLCR");
|
||||||
except getopt.GetoptError:
|
except getopt.GetoptError:
|
||||||
eth_usage(); sys.exit(2)
|
eth_usage(); sys.exit(2)
|
||||||
if len(args) < 1:
|
if len(args) < 1:
|
||||||
|
|
Loading…
Reference in New Issue