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 |