diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-10-29 19:25:37 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-10-29 19:25:37 +0000 |
commit | 84488ec01617591a27cd6ca848992694a13c12ac (patch) | |
tree | 86eb36577ef8f56583974ef94912a16dc86fecb4 /tools | |
parent | a708791aa0dd793a8d371449f6d75f5f2219055b (diff) |
asn2wrs
- parameterized object class assignment
- octet string with extensible size constraint
- RELATIVE-OID type (still not supported in packet-per/ber)
packet-per
- octet string with extensible size constraint
more dissect_per_... functions exported from libwireshark.dll
PER dissectors regenerated
add forgotten packet-h323-template.h
fix svn properties for h323 files
svn path=/trunk/; revision=23309
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/asn2wrs.py | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/tools/asn2wrs.py b/tools/asn2wrs.py index d8816af8ce..5ede5b1928 100755 --- a/tools/asn2wrs.py +++ b/tools/asn2wrs.py @@ -269,7 +269,7 @@ reserved_words = { 'PRESENT' : 'PRESENT', 'PRIVATE' : 'PRIVATE', 'REAL' : 'REAL', -# 'RELATIVE-OID' : 'RELATIVE-OID', + 'RELATIVE-OID' : 'RELATIVE_OID', 'SEQUENCE' : 'SEQUENCE', 'SET' : 'SET', 'SIZE' : 'SIZE', @@ -4787,11 +4787,11 @@ class OctetStringType (Type): if self.HasContentsConstraint(): body = ectx.eth_fn_call('dissect_%(ER)s_octet_string_containing%(FN_VARIANT)s', ret='offset', par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'), - ('%(MIN_VAL)s', '%(MAX_VAL)s', '%(TYPE_REF_FN)s',),)) + ('%(MIN_VAL)s', '%(MAX_VAL)s', '%(EXT)s', '%(TYPE_REF_FN)s',),)) else: body = ectx.eth_fn_call('dissect_%(ER)s_octet_string', ret='offset', par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'), - ('%(MIN_VAL)s', '%(MAX_VAL)s', '%(VAL_PTR)s',),)) + ('%(MIN_VAL)s', '%(MAX_VAL)s', '%(EXT)s', '%(VAL_PTR)s',),)) else: body = '#error Can not decode %s' % (tname) return body @@ -5031,6 +5031,35 @@ class NamedNumListBase(Node): return "asn1.%s_class ([%s])" % (self.asn1_typ,",".join ( map (lambda x: x.to_python (ctx), self.named_list))) +#--- RelativeOIDType ---------------------------------------------------------- +class RelativeOIDType (Type): + + def eth_tname(self): + return 'RELATIVE_OID' + + def eth_ftype(self, ectx): + return ('FT_BYTES', 'BASE_HEX') + + def GetTTag(self, ectx): + return ('BER_CLASS_UNI', 'BER_UNI_TAG_RELATIVE_OID') + + def eth_type_default_pars(self, ectx, tname): + pars = Type.eth_type_default_pars(self, ectx, tname) + pars['FN_VARIANT'] = ectx.default_oid_variant + return pars + + def eth_type_default_body(self, ectx, tname): + if (ectx.Ber()): + body = ectx.eth_fn_call('dissect_%(ER)s_relative_oid%(FN_VARIANT)s', ret='offset', + par=(('%(IMPLICIT_TAG)s', '%(ACTX)s', '%(TREE)s', '%(TVB)s', '%(OFFSET)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),)) + elif (ectx.Per()): + body = ectx.eth_fn_call('dissect_%(ER)s_relative_oid%(FN_VARIANT)s', ret='offset', + par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),)) + else: + body = '#error Can not decode %s' % (tname) + return body + + #--- IntegerType -------------------------------------------------------------- class IntegerType (Type): def to_python (self, ctx): @@ -5594,6 +5623,7 @@ def p_BuiltinType (t): | ObjectIdentifierType | OctetStringType | RealType + | RelativeOIDType | SequenceType | SequenceOfType | SetType @@ -6115,7 +6145,15 @@ def p_NameAndNumberForm (t): | LCASE_IDENT LPAREN NumberForm RPAREN''' t[0] = Node('name_and_number', ident = t[1], number = t[3]) -# 33 Notation for the embedded-pdv type ------------------------------------------- +# 32 Notation for the relative object identifier type ------------------------- + +# 32.1 +def p_RelativeOIDType (t): + 'RelativeOIDType : RELATIVE_OID' + t[0] = RelativeOIDType() + +# 33 Notation for the embedded-pdv type --------------------------------------- + # 33.1 def p_EmbeddedPDVType (t): 'EmbeddedPDVType : EMBEDDED PDV' @@ -7135,6 +7173,7 @@ def p_ContentsConstraint (t): # 8.1 def p_ParameterizedAssignment (t): '''ParameterizedAssignment : ParameterizedTypeAssignment + | ParameterizedObjectClassAssignment | ParameterizedObjectAssignment | ParameterizedObjectSetAssignment''' t[0] = t[1] @@ -7145,6 +7184,14 @@ def p_ParameterizedTypeAssignment (t): t[0] = t[4] t[0].SetName(t[1]) # t[0].SetName(t[1] + 'xxx') +def p_ParameterizedObjectClassAssignment (t): + '''ParameterizedObjectClassAssignment : CLASS_IDENT ParameterList ASSIGNMENT ObjectClass + | UCASE_IDENT ParameterList ASSIGNMENT ObjectClass''' + t[0] = t[4] + t[0].SetName(t[1]) + if isinstance(t[0], ObjectClassDefn): + t[0].reg_types() + def p_ParameterizedObjectAssignment (t): 'ParameterizedObjectAssignment : objectreference ParameterList DefinedObjectClass ASSIGNMENT Object' t[0] = ObjectAssignment (ident = t[1], cls=t[3].val, val=t[5]) |