1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #
- # SNMPv1 message syntax
- #
- # ASN.1 source from:
- # http://www.ietf.org/rfc/rfc1155.txt
- #
- # Sample captures from:
- # http://wiki.wireshark.org/SampleCaptures/
- #
- from pyasn1.type import univ, namedtype, namedval, tag, constraint
- class ObjectName(univ.ObjectIdentifier): pass
- class SimpleSyntax(univ.Choice):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('number', univ.Integer()),
- namedtype.NamedType('string', univ.OctetString()),
- namedtype.NamedType('object', univ.ObjectIdentifier()),
- namedtype.NamedType('empty', univ.Null())
- )
- class IpAddress(univ.OctetString):
- tagSet = univ.OctetString.tagSet.tagImplicitly(
- tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 0)
- )
- subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueSizeConstraint(
- 4, 4
- )
- class NetworkAddress(univ.Choice):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('internet', IpAddress())
- )
- class Counter(univ.Integer):
- tagSet = univ.Integer.tagSet.tagImplicitly(
- tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 1)
- )
- subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
- 0, 4294967295
- )
- class Gauge(univ.Integer):
- tagSet = univ.Integer.tagSet.tagImplicitly(
- tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 2)
- )
- subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
- 0, 4294967295
- )
- class TimeTicks(univ.Integer):
- tagSet = univ.Integer.tagSet.tagImplicitly(
- tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 3)
- )
- subtypeSpec = univ.Integer.subtypeSpec + constraint.ValueRangeConstraint(
- 0, 4294967295
- )
- class Opaque(univ.OctetString):
- tagSet = univ.OctetString.tagSet.tagImplicitly(
- tag.Tag(tag.tagClassApplication, tag.tagFormatSimple, 4)
- )
-
- class ApplicationSyntax(univ.Choice):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('address', NetworkAddress()),
- namedtype.NamedType('counter', Counter()),
- namedtype.NamedType('gauge', Gauge()),
- namedtype.NamedType('ticks', TimeTicks()),
- namedtype.NamedType('arbitrary', Opaque())
- )
-
- class ObjectSyntax(univ.Choice):
- componentType = namedtype.NamedTypes(
- namedtype.NamedType('simple', SimpleSyntax()),
- namedtype.NamedType('application-wide', ApplicationSyntax())
- )
|