| OLD | NEW |
| (Empty) |
| 1 # | |
| 2 # SNMPv1 message syntax | |
| 3 # | |
| 4 # ASN.1 source from: | |
| 5 # http://www.ietf.org/rfc/rfc1157.txt | |
| 6 # | |
| 7 # Sample captures from: | |
| 8 # http://wiki.wireshark.org/SampleCaptures/ | |
| 9 # | |
| 10 from pyasn1.type import univ, namedtype, namedval, tag, constraint | |
| 11 from pyasn1_modules import rfc1155 | |
| 12 | |
| 13 class Version(univ.Integer): | |
| 14 namedValues = namedval.NamedValues( | |
| 15 ('version-1', 0) | |
| 16 ) | |
| 17 defaultValue = 0 | |
| 18 | |
| 19 class Community(univ.OctetString): pass | |
| 20 | |
| 21 class RequestID(univ.Integer): pass | |
| 22 class ErrorStatus(univ.Integer): | |
| 23 namedValues = namedval.NamedValues( | |
| 24 ('noError', 0), | |
| 25 ('tooBig', 1), | |
| 26 ('noSuchName', 2), | |
| 27 ('badValue', 3), | |
| 28 ('readOnly', 4), | |
| 29 ('genErr', 5) | |
| 30 ) | |
| 31 class ErrorIndex(univ.Integer): pass | |
| 32 | |
| 33 class VarBind(univ.Sequence): | |
| 34 componentType = namedtype.NamedTypes( | |
| 35 namedtype.NamedType('name', rfc1155.ObjectName()), | |
| 36 namedtype.NamedType('value', rfc1155.ObjectSyntax()) | |
| 37 ) | |
| 38 class VarBindList(univ.SequenceOf): | |
| 39 componentType = VarBind() | |
| 40 | |
| 41 class _RequestBase(univ.Sequence): | |
| 42 componentType = namedtype.NamedTypes( | |
| 43 namedtype.NamedType('request-id', RequestID()), | |
| 44 namedtype.NamedType('error-status', ErrorStatus()), | |
| 45 namedtype.NamedType('error-index', ErrorIndex()), | |
| 46 namedtype.NamedType('variable-bindings', VarBindList()) | |
| 47 ) | |
| 48 | |
| 49 class GetRequestPDU(_RequestBase): | |
| 50 tagSet = _RequestBase.tagSet.tagImplicitly( | |
| 51 tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0) | |
| 52 ) | |
| 53 class GetNextRequestPDU(_RequestBase): | |
| 54 tagSet = _RequestBase.tagSet.tagImplicitly( | |
| 55 tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1) | |
| 56 ) | |
| 57 class GetResponsePDU(_RequestBase): | |
| 58 tagSet = _RequestBase.tagSet.tagImplicitly( | |
| 59 tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2) | |
| 60 ) | |
| 61 class SetRequestPDU(_RequestBase): | |
| 62 tagSet = _RequestBase.tagSet.tagImplicitly( | |
| 63 tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3) | |
| 64 ) | |
| 65 | |
| 66 class TrapPDU(univ.Sequence): | |
| 67 componentType = namedtype.NamedTypes( | |
| 68 namedtype.NamedType('enterprise', univ.ObjectIdentifier()), | |
| 69 namedtype.NamedType('agent-addr', rfc1155.NetworkAddress()), | |
| 70 namedtype.NamedType('generic-trap', univ.Integer().clone(namedValues=nam
edval.NamedValues(('coldStart', 0), ('warmStart', 1), ('linkDown', 2), ('linkUp'
, 3), ('authenticationFailure', 4), ('egpNeighborLoss', 5), ('enterpriseSpecific
', 6)))), | |
| 71 namedtype.NamedType('specific-trap', univ.Integer()), | |
| 72 namedtype.NamedType('time-stamp', rfc1155.TimeTicks()), | |
| 73 namedtype.NamedType('variable-bindings', VarBindList()) | |
| 74 ) | |
| 75 | |
| 76 class Pdus(univ.Choice): | |
| 77 componentType = namedtype.NamedTypes( | |
| 78 namedtype.NamedType('get-request', GetRequestPDU()), | |
| 79 namedtype.NamedType('get-next-request', GetNextRequestPDU()), | |
| 80 namedtype.NamedType('get-response', GetResponsePDU()), | |
| 81 namedtype.NamedType('set-request', SetRequestPDU()), | |
| 82 namedtype.NamedType('trap', TrapPDU()) | |
| 83 ) | |
| 84 | |
| 85 class Message(univ.Sequence): | |
| 86 componentType = namedtype.NamedTypes( | |
| 87 namedtype.NamedType('version', Version()), | |
| 88 namedtype.NamedType('community', Community()), | |
| 89 namedtype.NamedType('data', Pdus()) | |
| 90 ) | |
| OLD | NEW |