123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #
- # This file is part of pyasn1-modules software.
- #
- # Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
- # License: http://snmplabs.com/pyasn1/license.html
- #
- # 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 constraint
- from pyasn1.type import namedtype
- from pyasn1.type import tag
- from pyasn1.type import univ
- 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())
- )
|