| # |
| # This file is part of pyasn1-modules software. |
| # |
| # Copyright (c) 2005-2019, Ilya Etingof <[email protected]> |
| # License: http://snmplabs.com/pyasn1/license.html |
| # |
| # SNMPv1 message syntax |
| # |
| # ASN.1 source from: |
| # http://www.ietf.org/rfc/rfc1157.txt |
| # |
| # Sample captures from: |
| # http://wiki.wireshark.org/SampleCaptures/ |
| # |
| from pyasn1.type import namedtype |
| from pyasn1.type import namedval |
| from pyasn1.type import tag |
| from pyasn1.type import univ |
| |
| from pyasn1_modules import rfc1155 |
| |
| |
| class Version(univ.Integer): |
| namedValues = namedval.NamedValues( |
| ('version-1', 0) |
| ) |
| defaultValue = 0 |
| |
| |
| class Community(univ.OctetString): |
| pass |
| |
| |
| class RequestID(univ.Integer): |
| pass |
| |
| |
| class ErrorStatus(univ.Integer): |
| namedValues = namedval.NamedValues( |
| ('noError', 0), |
| ('tooBig', 1), |
| ('noSuchName', 2), |
| ('badValue', 3), |
| ('readOnly', 4), |
| ('genErr', 5) |
| ) |
| |
| |
| class ErrorIndex(univ.Integer): |
| pass |
| |
| |
| class VarBind(univ.Sequence): |
| componentType = namedtype.NamedTypes( |
| namedtype.NamedType('name', rfc1155.ObjectName()), |
| namedtype.NamedType('value', rfc1155.ObjectSyntax()) |
| ) |
| |
| |
| class VarBindList(univ.SequenceOf): |
| componentType = VarBind() |
| |
| |
| class _RequestBase(univ.Sequence): |
| componentType = namedtype.NamedTypes( |
| namedtype.NamedType('request-id', RequestID()), |
| namedtype.NamedType('error-status', ErrorStatus()), |
| namedtype.NamedType('error-index', ErrorIndex()), |
| namedtype.NamedType('variable-bindings', VarBindList()) |
| ) |
| |
| |
| class GetRequestPDU(_RequestBase): |
| tagSet = _RequestBase.tagSet.tagImplicitly( |
| tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) |
| ) |
| |
| |
| class GetNextRequestPDU(_RequestBase): |
| tagSet = _RequestBase.tagSet.tagImplicitly( |
| tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) |
| ) |
| |
| |
| class GetResponsePDU(_RequestBase): |
| tagSet = _RequestBase.tagSet.tagImplicitly( |
| tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2) |
| ) |
| |
| |
| class SetRequestPDU(_RequestBase): |
| tagSet = _RequestBase.tagSet.tagImplicitly( |
| tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3) |
| ) |
| |
| |
| class TrapPDU(univ.Sequence): |
| componentType = namedtype.NamedTypes( |
| namedtype.NamedType('enterprise', univ.ObjectIdentifier()), |
| namedtype.NamedType('agent-addr', rfc1155.NetworkAddress()), |
| namedtype.NamedType('generic-trap', univ.Integer().clone( |
| namedValues=namedval.NamedValues(('coldStart', 0), ('warmStart', 1), ('linkDown', 2), ('linkUp', 3), |
| ('authenticationFailure', 4), ('egpNeighborLoss', 5), |
| ('enterpriseSpecific', 6)))), |
| namedtype.NamedType('specific-trap', univ.Integer()), |
| namedtype.NamedType('time-stamp', rfc1155.TimeTicks()), |
| namedtype.NamedType('variable-bindings', VarBindList()) |
| ) |
| |
| |
| class Pdus(univ.Choice): |
| componentType = namedtype.NamedTypes( |
| namedtype.NamedType('get-request', GetRequestPDU()), |
| namedtype.NamedType('get-next-request', GetNextRequestPDU()), |
| namedtype.NamedType('get-response', GetResponsePDU()), |
| namedtype.NamedType('set-request', SetRequestPDU()), |
| namedtype.NamedType('trap', TrapPDU()) |
| ) |
| |
| |
| class Message(univ.Sequence): |
| componentType = namedtype.NamedTypes( |
| namedtype.NamedType('version', Version()), |
| namedtype.NamedType('community', Community()), |
| namedtype.NamedType('data', Pdus()) |
| ) |