telemetry-snmp 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/rspec.yml +44 -0
  3. data/.github/workflows/rubocop.yml +28 -0
  4. data/.github/workflows/sourcehawk-scan.yml +20 -0
  5. data/.gitignore +14 -0
  6. data/.rspec +4 -0
  7. data/.rubocop.yml +26 -0
  8. data/CHANGELOG.md +4 -0
  9. data/CODE_OF_CONDUCT.md +75 -0
  10. data/CONTRIBUTING.md +54 -0
  11. data/Gemfile +10 -0
  12. data/INDIVIDUAL_CONTRIBUTOR_LICENSE.md +30 -0
  13. data/LICENSE +201 -0
  14. data/NOTICE.txt +9 -0
  15. data/README.md +54 -0
  16. data/attribution.txt +1 -0
  17. data/config.ru +15 -0
  18. data/exe/snmp_collector +55 -0
  19. data/lib/telemetry/snmp.rb +23 -0
  20. data/lib/telemetry/snmp/api.rb +55 -0
  21. data/lib/telemetry/snmp/auth.rb +54 -0
  22. data/lib/telemetry/snmp/auth/defaults.rb +41 -0
  23. data/lib/telemetry/snmp/client.rb +104 -0
  24. data/lib/telemetry/snmp/controllers/device_creds.rb +105 -0
  25. data/lib/telemetry/snmp/controllers/devices.rb +94 -0
  26. data/lib/telemetry/snmp/controllers/oid_groups.rb +71 -0
  27. data/lib/telemetry/snmp/controllers/oids.rb +80 -0
  28. data/lib/telemetry/snmp/controllers/users.rb +81 -0
  29. data/lib/telemetry/snmp/controllers/walks.rb +89 -0
  30. data/lib/telemetry/snmp/data.rb +69 -0
  31. data/lib/telemetry/snmp/data/default_opts.rb +73 -0
  32. data/lib/telemetry/snmp/data/migrations/001_device_creds.rb +19 -0
  33. data/lib/telemetry/snmp/data/migrations/002_create_devices_table.rb +31 -0
  34. data/lib/telemetry/snmp/data/migrations/003_create_oids_tables.rb +16 -0
  35. data/lib/telemetry/snmp/data/migrations/004_create_oid_groups.rb +15 -0
  36. data/lib/telemetry/snmp/data/migrations/005_create_oids_oid_groups.rb +17 -0
  37. data/lib/telemetry/snmp/data/migrations/006_device_to_oid_group.rb +15 -0
  38. data/lib/telemetry/snmp/data/migrations/007_create_users.rb +20 -0
  39. data/lib/telemetry/snmp/data/migrations/008_create_walks_table.rb +14 -0
  40. data/lib/telemetry/snmp/data/migrations/009_create_tag_name_column.rb +7 -0
  41. data/lib/telemetry/snmp/data/migrations/010_create_user_audit_table.rb +18 -0
  42. data/lib/telemetry/snmp/data/models/device.rb +11 -0
  43. data/lib/telemetry/snmp/data/models/device_cred.rb +11 -0
  44. data/lib/telemetry/snmp/data/models/oid.rb +10 -0
  45. data/lib/telemetry/snmp/data/models/oid_group.rb +10 -0
  46. data/lib/telemetry/snmp/data/models/oid_oid_groups.rb +10 -0
  47. data/lib/telemetry/snmp/data/models/oid_walk.rb +10 -0
  48. data/lib/telemetry/snmp/data/models/user.rb +10 -0
  49. data/lib/telemetry/snmp/data/models/user_audit_log.rb +19 -0
  50. data/lib/telemetry/snmp/mibs/AGENTX-MIB.txt +527 -0
  51. data/lib/telemetry/snmp/mibs/AIRPORT-BASESTATION-3-MIB.txt +461 -0
  52. data/lib/telemetry/snmp/mibs/BRIDGE-MIB.txt +1472 -0
  53. data/lib/telemetry/snmp/mibs/DISMAN-EVENT-MIB.txt +1882 -0
  54. data/lib/telemetry/snmp/mibs/DISMAN-SCHEDULE-MIB.txt +699 -0
  55. data/lib/telemetry/snmp/mibs/DISMAN-SCRIPT-MIB.txt +1764 -0
  56. data/lib/telemetry/snmp/mibs/EtherLike-MIB.txt +1862 -0
  57. data/lib/telemetry/snmp/mibs/HCNUM-TC.txt +118 -0
  58. data/lib/telemetry/snmp/mibs/HOST-RESOURCES-MIB.txt +1540 -0
  59. data/lib/telemetry/snmp/mibs/HOST-RESOURCES-TYPES.txt +389 -0
  60. data/lib/telemetry/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt +123 -0
  61. data/lib/telemetry/snmp/mibs/IANA-LANGUAGE-MIB.txt +123 -0
  62. data/lib/telemetry/snmp/mibs/IANA-RTPROTO-MIB.txt +91 -0
  63. data/lib/telemetry/snmp/mibs/IANAifType-MIB.txt +619 -0
  64. data/lib/telemetry/snmp/mibs/IF-INVERTED-STACK-MIB.txt +149 -0
  65. data/lib/telemetry/snmp/mibs/IF-MIB.txt +1814 -0
  66. data/lib/telemetry/snmp/mibs/INET-ADDRESS-MIB.txt +402 -0
  67. data/lib/telemetry/snmp/mibs/IP-FORWARD-MIB.txt +1277 -0
  68. data/lib/telemetry/snmp/mibs/IP-MIB.txt +4993 -0
  69. data/lib/telemetry/snmp/mibs/IPV6-FLOW-LABEL-MIB.txt +58 -0
  70. data/lib/telemetry/snmp/mibs/IPV6-ICMP-MIB.txt +529 -0
  71. data/lib/telemetry/snmp/mibs/IPV6-MIB.txt +1443 -0
  72. data/lib/telemetry/snmp/mibs/IPV6-TC.txt +67 -0
  73. data/lib/telemetry/snmp/mibs/IPV6-TCP-MIB.txt +211 -0
  74. data/lib/telemetry/snmp/mibs/IPV6-UDP-MIB.txt +141 -0
  75. data/lib/telemetry/snmp/mibs/NET-SNMP-AGENT-MIB.txt +554 -0
  76. data/lib/telemetry/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt +285 -0
  77. data/lib/telemetry/snmp/mibs/NET-SNMP-EXTEND-MIB.txt +325 -0
  78. data/lib/telemetry/snmp/mibs/NET-SNMP-MIB.txt +67 -0
  79. data/lib/telemetry/snmp/mibs/NET-SNMP-PASS-MIB.txt +124 -0
  80. data/lib/telemetry/snmp/mibs/NET-SNMP-TC.txt +128 -0
  81. data/lib/telemetry/snmp/mibs/NET-SNMP-VACM-MIB.txt +154 -0
  82. data/lib/telemetry/snmp/mibs/NOTIFICATION-LOG-MIB.txt +753 -0
  83. data/lib/telemetry/snmp/mibs/PAN-COMMON-MIB.md5 +1 -0
  84. data/lib/telemetry/snmp/mibs/PAN-COMMON-MIB.my +2293 -0
  85. data/lib/telemetry/snmp/mibs/PAN-ENTITY-EXT-MIB.md5 +1 -0
  86. data/lib/telemetry/snmp/mibs/PAN-ENTITY-EXT-MIB.my +293 -0
  87. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-REG-MIB.md5 +1 -0
  88. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-REG-MIB.my +84 -0
  89. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-TC-MIB.md5 +1 -0
  90. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-TC-MIB.my +68 -0
  91. data/lib/telemetry/snmp/mibs/PAN-LC-MIB.md5 +1 -0
  92. data/lib/telemetry/snmp/mibs/PAN-LC-MIB.my +204 -0
  93. data/lib/telemetry/snmp/mibs/PAN-PRODUCT-MIB.md5 +1 -0
  94. data/lib/telemetry/snmp/mibs/PAN-PRODUCT-MIB.my +305 -0
  95. data/lib/telemetry/snmp/mibs/PAN-TRAPS.md5 +1 -0
  96. data/lib/telemetry/snmp/mibs/PAN-TRAPS.my +7809 -0
  97. data/lib/telemetry/snmp/mibs/RFC-1215.txt +38 -0
  98. data/lib/telemetry/snmp/mibs/RFC1155-SMI.txt +119 -0
  99. data/lib/telemetry/snmp/mibs/RFC1213-MIB.txt +2613 -0
  100. data/lib/telemetry/snmp/mibs/RMON-MIB.txt +3980 -0
  101. data/lib/telemetry/snmp/mibs/SCTP-MIB.txt +1342 -0
  102. data/lib/telemetry/snmp/mibs/SMUX-MIB.txt +160 -0
  103. data/lib/telemetry/snmp/mibs/SNMP-COMMUNITY-MIB.txt +429 -0
  104. data/lib/telemetry/snmp/mibs/SNMP-FRAMEWORK-MIB.txt +526 -0
  105. data/lib/telemetry/snmp/mibs/SNMP-MPD-MIB.txt +145 -0
  106. data/lib/telemetry/snmp/mibs/SNMP-NOTIFICATION-MIB.txt +589 -0
  107. data/lib/telemetry/snmp/mibs/SNMP-PROXY-MIB.txt +294 -0
  108. data/lib/telemetry/snmp/mibs/SNMP-TARGET-MIB.txt +660 -0
  109. data/lib/telemetry/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt +912 -0
  110. data/lib/telemetry/snmp/mibs/SNMP-USM-AES-MIB.txt +62 -0
  111. data/lib/telemetry/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt +532 -0
  112. data/lib/telemetry/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt +830 -0
  113. data/lib/telemetry/snmp/mibs/SNMPv2-CONF.txt +322 -0
  114. data/lib/telemetry/snmp/mibs/SNMPv2-MIB.txt +854 -0
  115. data/lib/telemetry/snmp/mibs/SNMPv2-SMI.txt +344 -0
  116. data/lib/telemetry/snmp/mibs/SNMPv2-TC.txt +772 -0
  117. data/lib/telemetry/snmp/mibs/SNMPv2-TM.txt +176 -0
  118. data/lib/telemetry/snmp/mibs/TCP-MIB.txt +785 -0
  119. data/lib/telemetry/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt +421 -0
  120. data/lib/telemetry/snmp/mibs/TUNNEL-MIB.txt +738 -0
  121. data/lib/telemetry/snmp/mibs/UCD-DEMO-MIB.txt +74 -0
  122. data/lib/telemetry/snmp/mibs/UCD-DISKIO-MIB.txt +171 -0
  123. data/lib/telemetry/snmp/mibs/UCD-DLMOD-MIB.txt +124 -0
  124. data/lib/telemetry/snmp/mibs/UCD-IPFWACC-MIB.txt +327 -0
  125. data/lib/telemetry/snmp/mibs/UCD-SNMP-MIB.txt +1712 -0
  126. data/lib/telemetry/snmp/mibs/UDP-MIB.txt +549 -0
  127. data/lib/telemetry/snmp/publisher.rb +130 -0
  128. data/lib/telemetry/snmp/version.rb +7 -0
  129. data/sourcehawk.yml +4 -0
  130. data/telemetry-snmp.gemspec +48 -0
  131. metadata +456 -0
@@ -0,0 +1,344 @@
1
+ SNMPv2-SMI DEFINITIONS ::= BEGIN
2
+
3
+ -- the path to the root
4
+
5
+ org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
6
+ dod OBJECT IDENTIFIER ::= { org 6 }
7
+ internet OBJECT IDENTIFIER ::= { dod 1 }
8
+
9
+ directory OBJECT IDENTIFIER ::= { internet 1 }
10
+
11
+ mgmt OBJECT IDENTIFIER ::= { internet 2 }
12
+ mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
13
+ transmission OBJECT IDENTIFIER ::= { mib-2 10 }
14
+
15
+ experimental OBJECT IDENTIFIER ::= { internet 3 }
16
+
17
+ private OBJECT IDENTIFIER ::= { internet 4 }
18
+ enterprises OBJECT IDENTIFIER ::= { private 1 }
19
+
20
+ security OBJECT IDENTIFIER ::= { internet 5 }
21
+
22
+ snmpV2 OBJECT IDENTIFIER ::= { internet 6 }
23
+
24
+ -- transport domains
25
+ snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 }
26
+
27
+ -- transport proxies
28
+ snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 }
29
+
30
+ -- module identities
31
+ snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 }
32
+
33
+ -- Extended UTCTime, to allow dates with four-digit years
34
+ -- (Note that this definition of ExtUTCTime is not to be IMPORTed
35
+ -- by MIB modules.)
36
+ ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
37
+ -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
38
+
39
+ -- where: YY - last two digits of year (only years
40
+ -- between 1900-1999)
41
+ -- YYYY - last four digits of the year (any year)
42
+ -- MM - month (01 through 12)
43
+ -- DD - day of month (01 through 31)
44
+ -- HH - hours (00 through 23)
45
+ -- MM - minutes (00 through 59)
46
+ -- Z - denotes GMT (the ASCII character Z)
47
+ --
48
+ -- For example, "9502192015Z" and "199502192015Z" represent
49
+ -- 8:15pm GMT on 19 February 1995. Years after 1999 must use
50
+ -- the four digit year format. Years 1900-1999 may use the
51
+ -- two or four digit format.
52
+
53
+ -- definitions for information modules
54
+
55
+ MODULE-IDENTITY MACRO ::=
56
+ BEGIN
57
+ TYPE NOTATION ::=
58
+ "LAST-UPDATED" value(Update ExtUTCTime)
59
+ "ORGANIZATION" Text
60
+ "CONTACT-INFO" Text
61
+ "DESCRIPTION" Text
62
+ RevisionPart
63
+
64
+ VALUE NOTATION ::=
65
+ value(VALUE OBJECT IDENTIFIER)
66
+
67
+ RevisionPart ::=
68
+ Revisions
69
+ | empty
70
+ Revisions ::=
71
+ Revision
72
+ | Revisions Revision
73
+ Revision ::=
74
+ "REVISION" value(Update ExtUTCTime)
75
+ "DESCRIPTION" Text
76
+
77
+ -- a character string as defined in section 3.1.1
78
+ Text ::= value(IA5String)
79
+ END
80
+
81
+ OBJECT-IDENTITY MACRO ::=
82
+ BEGIN
83
+ TYPE NOTATION ::=
84
+ "STATUS" Status
85
+ "DESCRIPTION" Text
86
+
87
+ ReferPart
88
+
89
+ VALUE NOTATION ::=
90
+ value(VALUE OBJECT IDENTIFIER)
91
+
92
+ Status ::=
93
+ "current"
94
+ | "deprecated"
95
+ | "obsolete"
96
+
97
+ ReferPart ::=
98
+ "REFERENCE" Text
99
+ | empty
100
+
101
+ -- a character string as defined in section 3.1.1
102
+ Text ::= value(IA5String)
103
+ END
104
+
105
+ -- names of objects
106
+ -- (Note that these definitions of ObjectName and NotificationName
107
+ -- are not to be IMPORTed by MIB modules.)
108
+
109
+ ObjectName ::=
110
+ OBJECT IDENTIFIER
111
+
112
+ NotificationName ::=
113
+ OBJECT IDENTIFIER
114
+
115
+ -- syntax of objects
116
+
117
+ -- the "base types" defined here are:
118
+ -- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
119
+ -- 8 application-defined types: Integer32, IpAddress, Counter32,
120
+ -- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
121
+
122
+ ObjectSyntax ::=
123
+ CHOICE {
124
+ simple
125
+ SimpleSyntax,
126
+ -- note that SEQUENCEs for conceptual tables and
127
+ -- rows are not mentioned here...
128
+
129
+ application-wide
130
+ ApplicationSyntax
131
+ }
132
+
133
+ -- built-in ASN.1 types
134
+
135
+ SimpleSyntax ::=
136
+ CHOICE {
137
+ -- INTEGERs with a more restrictive range
138
+ -- may also be used
139
+ integer-value -- includes Integer32
140
+ INTEGER (-2147483648..2147483647),
141
+ -- OCTET STRINGs with a more restrictive size
142
+ -- may also be used
143
+ string-value
144
+ OCTET STRING (SIZE (0..65535)),
145
+ objectID-value
146
+ OBJECT IDENTIFIER
147
+ }
148
+
149
+ -- indistinguishable from INTEGER, but never needs more than
150
+ -- 32-bits for a two's complement representation
151
+ Integer32 ::=
152
+ INTEGER (-2147483648..2147483647)
153
+
154
+ -- application-wide types
155
+
156
+ ApplicationSyntax ::=
157
+ CHOICE {
158
+ ipAddress-value
159
+ IpAddress,
160
+ counter-value
161
+ Counter32,
162
+ timeticks-value
163
+ TimeTicks,
164
+ arbitrary-value
165
+ Opaque,
166
+ big-counter-value
167
+ Counter64,
168
+ unsigned-integer-value -- includes Gauge32
169
+ Unsigned32
170
+ }
171
+
172
+ -- in network-byte order
173
+
174
+ -- (this is a tagged type for historical reasons)
175
+ IpAddress ::=
176
+ [APPLICATION 0]
177
+ IMPLICIT OCTET STRING (SIZE (4))
178
+
179
+ -- this wraps
180
+ Counter32 ::=
181
+ [APPLICATION 1]
182
+ IMPLICIT INTEGER (0..4294967295)
183
+
184
+ -- this doesn't wrap
185
+ Gauge32 ::=
186
+ [APPLICATION 2]
187
+ IMPLICIT INTEGER (0..4294967295)
188
+
189
+ -- an unsigned 32-bit quantity
190
+ -- indistinguishable from Gauge32
191
+ Unsigned32 ::=
192
+ [APPLICATION 2]
193
+ IMPLICIT INTEGER (0..4294967295)
194
+
195
+ -- hundredths of seconds since an epoch
196
+ TimeTicks ::=
197
+ [APPLICATION 3]
198
+ IMPLICIT INTEGER (0..4294967295)
199
+
200
+ -- for backward-compatibility only
201
+ Opaque ::=
202
+ [APPLICATION 4]
203
+ IMPLICIT OCTET STRING
204
+
205
+ -- for counters that wrap in less than one hour with only 32 bits
206
+ Counter64 ::=
207
+ [APPLICATION 6]
208
+ IMPLICIT INTEGER (0..18446744073709551615)
209
+
210
+ -- definition for objects
211
+
212
+ OBJECT-TYPE MACRO ::=
213
+ BEGIN
214
+ TYPE NOTATION ::=
215
+ "SYNTAX" Syntax
216
+ UnitsPart
217
+ "MAX-ACCESS" Access
218
+ "STATUS" Status
219
+ "DESCRIPTION" Text
220
+ ReferPart
221
+
222
+ IndexPart
223
+ DefValPart
224
+
225
+ VALUE NOTATION ::=
226
+ value(VALUE ObjectName)
227
+
228
+ Syntax ::= -- Must be one of the following:
229
+ -- a base type (or its refinement),
230
+ -- a textual convention (or its refinement), or
231
+ -- a BITS pseudo-type
232
+ type
233
+ | "BITS" "{" NamedBits "}"
234
+
235
+ NamedBits ::= NamedBit
236
+ | NamedBits "," NamedBit
237
+
238
+ NamedBit ::= identifier "(" number ")" -- number is nonnegative
239
+
240
+ UnitsPart ::=
241
+ "UNITS" Text
242
+ | empty
243
+
244
+ Access ::=
245
+ "not-accessible"
246
+ | "accessible-for-notify"
247
+ | "read-only"
248
+ | "read-write"
249
+ | "read-create"
250
+
251
+ Status ::=
252
+ "current"
253
+ | "deprecated"
254
+ | "obsolete"
255
+
256
+ ReferPart ::=
257
+ "REFERENCE" Text
258
+ | empty
259
+
260
+ IndexPart ::=
261
+ "INDEX" "{" IndexTypes "}"
262
+ | "AUGMENTS" "{" Entry "}"
263
+ | empty
264
+ IndexTypes ::=
265
+ IndexType
266
+ | IndexTypes "," IndexType
267
+ IndexType ::=
268
+ "IMPLIED" Index
269
+ | Index
270
+
271
+ Index ::=
272
+ -- use the SYNTAX value of the
273
+ -- correspondent OBJECT-TYPE invocation
274
+ value(ObjectName)
275
+ Entry ::=
276
+ -- use the INDEX value of the
277
+ -- correspondent OBJECT-TYPE invocation
278
+ value(ObjectName)
279
+
280
+ DefValPart ::= "DEFVAL" "{" Defvalue "}"
281
+ | empty
282
+
283
+ Defvalue ::= -- must be valid for the type specified in
284
+ -- SYNTAX clause of same OBJECT-TYPE macro
285
+ value(ObjectSyntax)
286
+ | "{" BitsValue "}"
287
+
288
+ BitsValue ::= BitNames
289
+ | empty
290
+
291
+ BitNames ::= BitName
292
+ | BitNames "," BitName
293
+
294
+ BitName ::= identifier
295
+
296
+ -- a character string as defined in section 3.1.1
297
+ Text ::= value(IA5String)
298
+ END
299
+
300
+ -- definitions for notifications
301
+
302
+ NOTIFICATION-TYPE MACRO ::=
303
+ BEGIN
304
+ TYPE NOTATION ::=
305
+ ObjectsPart
306
+ "STATUS" Status
307
+ "DESCRIPTION" Text
308
+ ReferPart
309
+
310
+ VALUE NOTATION ::=
311
+ value(VALUE NotificationName)
312
+
313
+ ObjectsPart ::=
314
+ "OBJECTS" "{" Objects "}"
315
+ | empty
316
+ Objects ::=
317
+ Object
318
+
319
+ | Objects "," Object
320
+ Object ::=
321
+ value(ObjectName)
322
+
323
+ Status ::=
324
+ "current"
325
+ | "deprecated"
326
+ | "obsolete"
327
+
328
+ ReferPart ::=
329
+ "REFERENCE" Text
330
+ | empty
331
+
332
+ -- a character string as defined in section 3.1.1
333
+ Text ::= value(IA5String)
334
+ END
335
+
336
+ -- definitions of administrative identifiers
337
+
338
+ zeroDotZero OBJECT-IDENTITY
339
+ STATUS current
340
+ DESCRIPTION
341
+ "A value used for null identifiers."
342
+ ::= { 0 0 }
343
+
344
+ END
@@ -0,0 +1,772 @@
1
+ SNMPv2-TC DEFINITIONS ::= BEGIN
2
+
3
+ IMPORTS
4
+ TimeTicks FROM SNMPv2-SMI;
5
+
6
+ -- definition of textual conventions
7
+
8
+ TEXTUAL-CONVENTION MACRO ::=
9
+
10
+ BEGIN
11
+ TYPE NOTATION ::=
12
+ DisplayPart
13
+ "STATUS" Status
14
+ "DESCRIPTION" Text
15
+ ReferPart
16
+ "SYNTAX" Syntax
17
+
18
+ VALUE NOTATION ::=
19
+ value(VALUE Syntax) -- adapted ASN.1
20
+
21
+ DisplayPart ::=
22
+ "DISPLAY-HINT" Text
23
+ | empty
24
+
25
+ Status ::=
26
+ "current"
27
+ | "deprecated"
28
+ | "obsolete"
29
+
30
+ ReferPart ::=
31
+ "REFERENCE" Text
32
+ | empty
33
+
34
+ -- a character string as defined in [2]
35
+ Text ::= value(IA5String)
36
+
37
+ Syntax ::= -- Must be one of the following:
38
+ -- a base type (or its refinement), or
39
+ -- a BITS pseudo-type
40
+ type
41
+ | "BITS" "{" NamedBits "}"
42
+
43
+ NamedBits ::= NamedBit
44
+ | NamedBits "," NamedBit
45
+
46
+ NamedBit ::= identifier "(" number ")" -- number is nonnegative
47
+
48
+ END
49
+
50
+ DisplayString ::= TEXTUAL-CONVENTION
51
+ DISPLAY-HINT "255a"
52
+ STATUS current
53
+ DESCRIPTION
54
+ "Represents textual information taken from the NVT ASCII
55
+
56
+ character set, as defined in pages 4, 10-11 of RFC 854.
57
+
58
+ To summarize RFC 854, the NVT ASCII repertoire specifies:
59
+
60
+ - the use of character codes 0-127 (decimal)
61
+
62
+ - the graphics characters (32-126) are interpreted as
63
+ US ASCII
64
+
65
+ - NUL, LF, CR, BEL, BS, HT, VT and FF have the special
66
+ meanings specified in RFC 854
67
+
68
+ - the other 25 codes have no standard interpretation
69
+
70
+ - the sequence 'CR LF' means newline
71
+
72
+ - the sequence 'CR NUL' means carriage-return
73
+
74
+ - an 'LF' not preceded by a 'CR' means moving to the
75
+ same column on the next line.
76
+
77
+ - the sequence 'CR x' for any x other than LF or NUL is
78
+ illegal. (Note that this also means that a string may
79
+ end with either 'CR LF' or 'CR NUL', but not with CR.)
80
+
81
+ Any object defined using this syntax may not exceed 255
82
+ characters in length."
83
+ SYNTAX OCTET STRING (SIZE (0..255))
84
+
85
+ PhysAddress ::= TEXTUAL-CONVENTION
86
+ DISPLAY-HINT "1x:"
87
+ STATUS current
88
+ DESCRIPTION
89
+ "Represents media- or physical-level addresses."
90
+ SYNTAX OCTET STRING
91
+
92
+ MacAddress ::= TEXTUAL-CONVENTION
93
+ DISPLAY-HINT "1x:"
94
+ STATUS current
95
+ DESCRIPTION
96
+ "Represents an 802 MAC address represented in the
97
+ `canonical' order defined by IEEE 802.1a, i.e., as if it
98
+ were transmitted least significant bit first, even though
99
+ 802.5 (in contrast to other 802.x protocols) requires MAC
100
+ addresses to be transmitted most significant bit first."
101
+ SYNTAX OCTET STRING (SIZE (6))
102
+
103
+ TruthValue ::= TEXTUAL-CONVENTION
104
+ STATUS current
105
+ DESCRIPTION
106
+ "Represents a boolean value."
107
+ SYNTAX INTEGER { true(1), false(2) }
108
+
109
+ TestAndIncr ::= TEXTUAL-CONVENTION
110
+ STATUS current
111
+ DESCRIPTION
112
+ "Represents integer-valued information used for atomic
113
+ operations. When the management protocol is used to specify
114
+ that an object instance having this syntax is to be
115
+ modified, the new value supplied via the management protocol
116
+ must precisely match the value presently held by the
117
+ instance. If not, the management protocol set operation
118
+ fails with an error of `inconsistentValue'. Otherwise, if
119
+ the current value is the maximum value of 2^31-1 (2147483647
120
+ decimal), then the value held by the instance is wrapped to
121
+ zero; otherwise, the value held by the instance is
122
+ incremented by one. (Note that regardless of whether the
123
+ management protocol set operation succeeds, the variable-
124
+ binding in the request and response PDUs are identical.)
125
+
126
+ The value of the ACCESS clause for objects having this
127
+ syntax is either `read-write' or `read-create'. When an
128
+ instance of a columnar object having this syntax is created,
129
+ any value may be supplied via the management protocol.
130
+
131
+ When the network management portion of the system is re-
132
+ initialized, the value of every object instance having this
133
+ syntax must either be incremented from its value prior to
134
+ the re-initialization, or (if the value prior to the re-
135
+ initialization is unknown) be set to a pseudo-randomly
136
+ generated value."
137
+ SYNTAX INTEGER (0..2147483647)
138
+
139
+ AutonomousType ::= TEXTUAL-CONVENTION
140
+ STATUS current
141
+ DESCRIPTION
142
+ "Represents an independently extensible type identification
143
+ value. It may, for example, indicate a particular sub-tree
144
+ with further MIB definitions, or define a particular type of
145
+ protocol or hardware."
146
+ SYNTAX OBJECT IDENTIFIER
147
+
148
+ InstancePointer ::= TEXTUAL-CONVENTION
149
+ STATUS obsolete
150
+ DESCRIPTION
151
+ "A pointer to either a specific instance of a MIB object or
152
+ a conceptual row of a MIB table in the managed device. In
153
+ the latter case, by convention, it is the name of the
154
+ particular instance of the first accessible columnar object
155
+ in the conceptual row.
156
+
157
+ The two uses of this textual convention are replaced by
158
+ VariablePointer and RowPointer, respectively."
159
+ SYNTAX OBJECT IDENTIFIER
160
+
161
+ VariablePointer ::= TEXTUAL-CONVENTION
162
+ STATUS current
163
+ DESCRIPTION
164
+ "A pointer to a specific object instance. For example,
165
+ sysContact.0 or ifInOctets.3."
166
+ SYNTAX OBJECT IDENTIFIER
167
+
168
+ RowPointer ::= TEXTUAL-CONVENTION
169
+ STATUS current
170
+ DESCRIPTION
171
+ "Represents a pointer to a conceptual row. The value is the
172
+ name of the instance of the first accessible columnar object
173
+ in the conceptual row.
174
+
175
+ For example, ifIndex.3 would point to the 3rd row in the
176
+ ifTable (note that if ifIndex were not-accessible, then
177
+ ifDescr.3 would be used instead)."
178
+ SYNTAX OBJECT IDENTIFIER
179
+
180
+ RowStatus ::= TEXTUAL-CONVENTION
181
+ STATUS current
182
+ DESCRIPTION
183
+ "The RowStatus textual convention is used to manage the
184
+ creation and deletion of conceptual rows, and is used as the
185
+ value of the SYNTAX clause for the status column of a
186
+ conceptual row (as described in Section 7.7.1 of [2].)
187
+
188
+ The status column has six defined values:
189
+
190
+ - `active', which indicates that the conceptual row is
191
+ available for use by the managed device;
192
+
193
+ - `notInService', which indicates that the conceptual
194
+ row exists in the agent, but is unavailable for use by
195
+ the managed device (see NOTE below); 'notInService' has
196
+ no implication regarding the internal consistency of
197
+ the row, availability of resources, or consistency with
198
+ the current state of the managed device;
199
+
200
+ - `notReady', which indicates that the conceptual row
201
+ exists in the agent, but is missing information
202
+ necessary in order to be available for use by the
203
+ managed device (i.e., one or more required columns in
204
+ the conceptual row have not been instanciated);
205
+
206
+ - `createAndGo', which is supplied by a management
207
+ station wishing to create a new instance of a
208
+ conceptual row and to have its status automatically set
209
+ to active, making it available for use by the managed
210
+ device;
211
+
212
+ - `createAndWait', which is supplied by a management
213
+ station wishing to create a new instance of a
214
+ conceptual row (but not make it available for use by
215
+ the managed device); and,
216
+ - `destroy', which is supplied by a management station
217
+ wishing to delete all of the instances associated with
218
+ an existing conceptual row.
219
+
220
+ Whereas five of the six values (all except `notReady') may
221
+ be specified in a management protocol set operation, only
222
+ three values will be returned in response to a management
223
+ protocol retrieval operation: `notReady', `notInService' or
224
+ `active'. That is, when queried, an existing conceptual row
225
+ has only three states: it is either available for use by
226
+ the managed device (the status column has value `active');
227
+ it is not available for use by the managed device, though
228
+ the agent has sufficient information to attempt to make it
229
+ so (the status column has value `notInService'); or, it is
230
+ not available for use by the managed device, and an attempt
231
+ to make it so would fail because the agent has insufficient
232
+ information (the state column has value `notReady').
233
+
234
+ NOTE WELL
235
+
236
+ This textual convention may be used for a MIB table,
237
+ irrespective of whether the values of that table's
238
+ conceptual rows are able to be modified while it is
239
+ active, or whether its conceptual rows must be taken
240
+ out of service in order to be modified. That is, it is
241
+ the responsibility of the DESCRIPTION clause of the
242
+ status column to specify whether the status column must
243
+ not be `active' in order for the value of some other
244
+ column of the same conceptual row to be modified. If
245
+ such a specification is made, affected columns may be
246
+ changed by an SNMP set PDU if the RowStatus would not
247
+ be equal to `active' either immediately before or after
248
+ processing the PDU. In other words, if the PDU also
249
+ contained a varbind that would change the RowStatus
250
+ value, the column in question may be changed if the
251
+ RowStatus was not equal to `active' as the PDU was
252
+ received, or if the varbind sets the status to a value
253
+ other than 'active'.
254
+
255
+ Also note that whenever any elements of a row exist, the
256
+ RowStatus column must also exist.
257
+
258
+ To summarize the effect of having a conceptual row with a
259
+ status column having a SYNTAX clause value of RowStatus,
260
+ consider the following state diagram:
261
+
262
+ STATE
263
+ +--------------+-----------+-------------+-------------
264
+ | A | B | C | D
265
+ | |status col.|status column|
266
+ |status column | is | is |status column
267
+ ACTION |does not exist| notReady | notInService| is active
268
+ --------------+--------------+-----------+-------------+-------------
269
+ set status |noError ->D|inconsist- |inconsistent-|inconsistent-
270
+ column to | or | entValue| Value| Value
271
+ createAndGo |inconsistent- | | |
272
+ | Value| | |
273
+ --------------+--------------+-----------+-------------+-------------
274
+ set status |noError see 1|inconsist- |inconsistent-|inconsistent-
275
+ column to | or | entValue| Value| Value
276
+ createAndWait |wrongValue | | |
277
+ --------------+--------------+-----------+-------------+-------------
278
+ set status |inconsistent- |inconsist- |noError |noError
279
+ column to | Value| entValue| |
280
+ active | | | |
281
+ | | or | |
282
+ | | | |
283
+ | |see 2 ->D|see 8 ->D| ->D
284
+ --------------+--------------+-----------+-------------+-------------
285
+ set status |inconsistent- |inconsist- |noError |noError ->C
286
+ column to | Value| entValue| |
287
+ notInService | | | |
288
+ | | or | | or
289
+ | | | |
290
+ | |see 3 ->C| ->C|see 6
291
+ --------------+--------------+-----------+-------------+-------------
292
+ set status |noError |noError |noError |noError ->A
293
+ column to | | | | or
294
+ destroy | ->A| ->A| ->A|see 7
295
+ --------------+--------------+-----------+-------------+-------------
296
+ set any other |see 4 |noError |noError |see 5
297
+ column to some| | | |
298
+ value | | see 1| ->C| ->D
299
+ --------------+--------------+-----------+-------------+-------------
300
+
301
+ (1) goto B or C, depending on information available to the
302
+ agent.
303
+
304
+ (2) if other variable bindings included in the same PDU,
305
+ provide values for all columns which are missing but
306
+ required, and all columns have acceptable values, then
307
+ return noError and goto D.
308
+
309
+ (3) if other variable bindings included in the same PDU,
310
+ provide legal values for all columns which are missing but
311
+ required, then return noError and goto C.
312
+
313
+ (4) at the discretion of the agent, the return value may be
314
+ either:
315
+
316
+ inconsistentName: because the agent does not choose to
317
+ create such an instance when the corresponding
318
+ RowStatus instance does not exist, or
319
+
320
+ inconsistentValue: if the supplied value is
321
+ inconsistent with the state of some other MIB object's
322
+ value, or
323
+
324
+ noError: because the agent chooses to create the
325
+ instance.
326
+
327
+ If noError is returned, then the instance of the status
328
+ column must also be created, and the new state is B or C,
329
+ depending on the information available to the agent. If
330
+ inconsistentName or inconsistentValue is returned, the row
331
+ remains in state A.
332
+
333
+ (5) depending on the MIB definition for the column/table,
334
+ either noError or inconsistentValue may be returned.
335
+
336
+ (6) the return value can indicate one of the following
337
+ errors:
338
+
339
+ wrongValue: because the agent does not support
340
+ notInService (e.g., an agent which does not support
341
+ createAndWait), or
342
+
343
+ inconsistentValue: because the agent is unable to take
344
+ the row out of service at this time, perhaps because it
345
+ is in use and cannot be de-activated.
346
+
347
+ (7) the return value can indicate the following error:
348
+
349
+ inconsistentValue: because the agent is unable to
350
+ remove the row at this time, perhaps because it is in
351
+ use and cannot be de-activated.
352
+
353
+ (8) the transition to D can fail, e.g., if the values of the
354
+ conceptual row are inconsistent, then the error code would
355
+ be inconsistentValue.
356
+
357
+ NOTE: Other processing of (this and other varbinds of) the
358
+ set request may result in a response other than noError
359
+ being returned, e.g., wrongValue, noCreation, etc.
360
+
361
+ Conceptual Row Creation
362
+
363
+ There are four potential interactions when creating a
364
+ conceptual row: selecting an instance-identifier which is
365
+ not in use; creating the conceptual row; initializing any
366
+ objects for which the agent does not supply a default; and,
367
+ making the conceptual row available for use by the managed
368
+ device.
369
+
370
+ Interaction 1: Selecting an Instance-Identifier
371
+
372
+ The algorithm used to select an instance-identifier varies
373
+ for each conceptual row. In some cases, the instance-
374
+ identifier is semantically significant, e.g., the
375
+ destination address of a route, and a management station
376
+ selects the instance-identifier according to the semantics.
377
+
378
+ In other cases, the instance-identifier is used solely to
379
+ distinguish conceptual rows, and a management station
380
+ without specific knowledge of the conceptual row might
381
+ examine the instances present in order to determine an
382
+ unused instance-identifier. (This approach may be used, but
383
+ it is often highly sub-optimal; however, it is also a
384
+ questionable practice for a naive management station to
385
+ attempt conceptual row creation.)
386
+
387
+ Alternately, the MIB module which defines the conceptual row
388
+ might provide one or more objects which provide assistance
389
+ in determining an unused instance-identifier. For example,
390
+ if the conceptual row is indexed by an integer-value, then
391
+ an object having an integer-valued SYNTAX clause might be
392
+ defined for such a purpose, allowing a management station to
393
+ issue a management protocol retrieval operation. In order
394
+ to avoid unnecessary collisions between competing management
395
+ stations, `adjacent' retrievals of this object should be
396
+ different.
397
+
398
+ Finally, the management station could select a pseudo-random
399
+ number to use as the index. In the event that this index
400
+
401
+ was already in use and an inconsistentValue was returned in
402
+ response to the management protocol set operation, the
403
+ management station should simply select a new pseudo-random
404
+ number and retry the operation.
405
+
406
+ A MIB designer should choose between the two latter
407
+ algorithms based on the size of the table (and therefore the
408
+ efficiency of each algorithm). For tables in which a large
409
+ number of entries are expected, it is recommended that a MIB
410
+ object be defined that returns an acceptable index for
411
+ creation. For tables with small numbers of entries, it is
412
+ recommended that the latter pseudo-random index mechanism be
413
+ used.
414
+
415
+ Interaction 2: Creating the Conceptual Row
416
+
417
+ Once an unused instance-identifier has been selected, the
418
+ management station determines if it wishes to create and
419
+ activate the conceptual row in one transaction or in a
420
+ negotiated set of interactions.
421
+
422
+ Interaction 2a: Creating and Activating the Conceptual Row
423
+
424
+ The management station must first determine the column
425
+ requirements, i.e., it must determine those columns for
426
+ which it must or must not provide values. Depending on the
427
+ complexity of the table and the management station's
428
+ knowledge of the agent's capabilities, this determination
429
+ can be made locally by the management station. Alternately,
430
+ the management station issues a management protocol get
431
+ operation to examine all columns in the conceptual row that
432
+ it wishes to create. In response, for each column, there
433
+ are three possible outcomes:
434
+
435
+ - a value is returned, indicating that some other
436
+ management station has already created this conceptual
437
+ row. We return to interaction 1.
438
+
439
+ - the exception `noSuchInstance' is returned,
440
+ indicating that the agent implements the object-type
441
+ associated with this column, and that this column in at
442
+ least one conceptual row would be accessible in the MIB
443
+ view used by the retrieval were it to exist. For those
444
+ columns to which the agent provides read-create access,
445
+ the `noSuchInstance' exception tells the management
446
+ station that it should supply a value for this column
447
+ when the conceptual row is to be created.
448
+
449
+ - the exception `noSuchObject' is returned, indicating
450
+ that the agent does not implement the object-type
451
+ associated with this column or that there is no
452
+ conceptual row for which this column would be
453
+ accessible in the MIB view used by the retrieval. As
454
+ such, the management station can not issue any
455
+ management protocol set operations to create an
456
+ instance of this column.
457
+
458
+ Once the column requirements have been determined, a
459
+ management protocol set operation is accordingly issued.
460
+ This operation also sets the new instance of the status
461
+ column to `createAndGo'.
462
+
463
+ When the agent processes the set operation, it verifies that
464
+ it has sufficient information to make the conceptual row
465
+ available for use by the managed device. The information
466
+ available to the agent is provided by two sources: the
467
+ management protocol set operation which creates the
468
+ conceptual row, and, implementation-specific defaults
469
+ supplied by the agent (note that an agent must provide
470
+ implementation-specific defaults for at least those objects
471
+ which it implements as read-only). If there is sufficient
472
+ information available, then the conceptual row is created, a
473
+ `noError' response is returned, the status column is set to
474
+ `active', and no further interactions are necessary (i.e.,
475
+ interactions 3 and 4 are skipped). If there is insufficient
476
+ information, then the conceptual row is not created, and the
477
+ set operation fails with an error of `inconsistentValue'.
478
+ On this error, the management station can issue a management
479
+ protocol retrieval operation to determine if this was
480
+ because it failed to specify a value for a required column,
481
+ or, because the selected instance of the status column
482
+ already existed. In the latter case, we return to
483
+ interaction 1. In the former case, the management station
484
+ can re-issue the set operation with the additional
485
+ information, or begin interaction 2 again using
486
+ `createAndWait' in order to negotiate creation of the
487
+ conceptual row.
488
+
489
+ NOTE WELL
490
+
491
+ Regardless of the method used to determine the column
492
+ requirements, it is possible that the management
493
+ station might deem a column necessary when, in fact,
494
+ the agent will not allow that particular columnar
495
+ instance to be created or written. In this case, the
496
+ management protocol set operation will fail with an
497
+ error such as `noCreation' or `notWritable'. In this
498
+ case, the management station decides whether it needs
499
+ to be able to set a value for that particular columnar
500
+ instance. If not, the management station re-issues the
501
+ management protocol set operation, but without setting
502
+ a value for that particular columnar instance;
503
+ otherwise, the management station aborts the row
504
+ creation algorithm.
505
+
506
+ Interaction 2b: Negotiating the Creation of the Conceptual
507
+ Row
508
+
509
+ The management station issues a management protocol set
510
+ operation which sets the desired instance of the status
511
+ column to `createAndWait'. If the agent is unwilling to
512
+ process a request of this sort, the set operation fails with
513
+ an error of `wrongValue'. (As a consequence, such an agent
514
+ must be prepared to accept a single management protocol set
515
+ operation, i.e., interaction 2a above, containing all of the
516
+ columns indicated by its column requirements.) Otherwise,
517
+ the conceptual row is created, a `noError' response is
518
+ returned, and the status column is immediately set to either
519
+ `notInService' or `notReady', depending on whether it has
520
+ sufficient information to (attempt to) make the conceptual
521
+ row available for use by the managed device. If there is
522
+ sufficient information available, then the status column is
523
+ set to `notInService'; otherwise, if there is insufficient
524
+ information, then the status column is set to `notReady'.
525
+ Regardless, we proceed to interaction 3.
526
+
527
+ Interaction 3: Initializing non-defaulted Objects
528
+
529
+ The management station must now determine the column
530
+ requirements. It issues a management protocol get operation
531
+ to examine all columns in the created conceptual row. In
532
+ the response, for each column, there are three possible
533
+ outcomes:
534
+
535
+ - a value is returned, indicating that the agent
536
+ implements the object-type associated with this column
537
+ and had sufficient information to provide a value. For
538
+ those columns to which the agent provides read-create
539
+ access (and for which the agent allows their values to
540
+ be changed after their creation), a value return tells
541
+ the management station that it may issue additional
542
+ management protocol set operations, if it desires, in
543
+ order to change the value associated with this column.
544
+
545
+ - the exception `noSuchInstance' is returned,
546
+ indicating that the agent implements the object-type
547
+ associated with this column, and that this column in at
548
+ least one conceptual row would be accessible in the MIB
549
+ view used by the retrieval were it to exist. However,
550
+ the agent does not have sufficient information to
551
+ provide a value, and until a value is provided, the
552
+ conceptual row may not be made available for use by the
553
+ managed device. For those columns to which the agent
554
+ provides read-create access, the `noSuchInstance'
555
+ exception tells the management station that it must
556
+ issue additional management protocol set operations, in
557
+ order to provide a value associated with this column.
558
+
559
+ - the exception `noSuchObject' is returned, indicating
560
+ that the agent does not implement the object-type
561
+ associated with this column or that there is no
562
+ conceptual row for which this column would be
563
+ accessible in the MIB view used by the retrieval. As
564
+ such, the management station can not issue any
565
+ management protocol set operations to create an
566
+ instance of this column.
567
+
568
+ If the value associated with the status column is
569
+ `notReady', then the management station must first deal with
570
+ all `noSuchInstance' columns, if any. Having done so, the
571
+ value of the status column becomes `notInService', and we
572
+ proceed to interaction 4.
573
+
574
+ Interaction 4: Making the Conceptual Row Available
575
+
576
+ Once the management station is satisfied with the values
577
+ associated with the columns of the conceptual row, it issues
578
+ a management protocol set operation to set the status column
579
+ to `active'. If the agent has sufficient information to
580
+ make the conceptual row available for use by the managed
581
+ device, the management protocol set operation succeeds (a
582
+ `noError' response is returned). Otherwise, the management
583
+ protocol set operation fails with an error of
584
+ `inconsistentValue'.
585
+
586
+ NOTE WELL
587
+
588
+ A conceptual row having a status column with value
589
+ `notInService' or `notReady' is unavailable to the
590
+ managed device. As such, it is possible for the
591
+ managed device to create its own instances during the
592
+ time between the management protocol set operation
593
+ which sets the status column to `createAndWait' and the
594
+ management protocol set operation which sets the status
595
+ column to `active'. In this case, when the management
596
+ protocol set operation is issued to set the status
597
+ column to `active', the values held in the agent
598
+ supersede those used by the managed device.
599
+
600
+ If the management station is prevented from setting the
601
+ status column to `active' (e.g., due to management station
602
+ or network failure) the conceptual row will be left in the
603
+ `notInService' or `notReady' state, consuming resources
604
+ indefinitely. The agent must detect conceptual rows that
605
+ have been in either state for an abnormally long period of
606
+ time and remove them. It is the responsibility of the
607
+ DESCRIPTION clause of the status column to indicate what an
608
+ abnormally long period of time would be. This period of
609
+ time should be long enough to allow for human response time
610
+ (including `think time') between the creation of the
611
+ conceptual row and the setting of the status to `active'.
612
+ In the absence of such information in the DESCRIPTION
613
+ clause, it is suggested that this period be approximately 5
614
+ minutes in length. This removal action applies not only to
615
+ newly-created rows, but also to previously active rows which
616
+ are set to, and left in, the notInService state for a
617
+ prolonged period exceeding that which is considered normal
618
+ for such a conceptual row.
619
+
620
+ Conceptual Row Suspension
621
+
622
+ When a conceptual row is `active', the management station
623
+ may issue a management protocol set operation which sets the
624
+ instance of the status column to `notInService'. If the
625
+ agent is unwilling to do so, the set operation fails with an
626
+ error of `wrongValue' or `inconsistentValue'. Otherwise,
627
+ the conceptual row is taken out of service, and a `noError'
628
+ response is returned. It is the responsibility of the
629
+ DESCRIPTION clause of the status column to indicate under
630
+ what circumstances the status column should be taken out of
631
+ service (e.g., in order for the value of some other column
632
+ of the same conceptual row to be modified).
633
+
634
+ Conceptual Row Deletion
635
+
636
+ For deletion of conceptual rows, a management protocol set
637
+ operation is issued which sets the instance of the status
638
+ column to `destroy'. This request may be made regardless of
639
+ the current value of the status column (e.g., it is possible
640
+ to delete conceptual rows which are either `notReady',
641
+ `notInService' or `active'.) If the operation succeeds,
642
+ then all instances associated with the conceptual row are
643
+ immediately removed."
644
+ SYNTAX INTEGER {
645
+ -- the following two values are states:
646
+ -- these values may be read or written
647
+ active(1),
648
+ notInService(2),
649
+ -- the following value is a state:
650
+ -- this value may be read, but not written
651
+ notReady(3),
652
+ -- the following three values are
653
+ -- actions: these values may be written,
654
+ -- but are never read
655
+ createAndGo(4),
656
+ createAndWait(5),
657
+ destroy(6)
658
+ }
659
+
660
+ TimeStamp ::= TEXTUAL-CONVENTION
661
+ STATUS current
662
+ DESCRIPTION
663
+ "The value of the sysUpTime object at which a specific
664
+ occurrence happened. The specific occurrence must be
665
+
666
+ defined in the description of any object defined using this
667
+ type.
668
+
669
+ If sysUpTime is reset to zero as a result of a re-
670
+ initialization of the network management (sub)system, then
671
+ the values of all TimeStamp objects are also reset.
672
+ However, after approximately 497 days without a re-
673
+ initialization, the sysUpTime object will reach 2^^32-1 and
674
+ then increment around to zero; in this case, existing values
675
+ of TimeStamp objects do not change. This can lead to
676
+ ambiguities in the value of TimeStamp objects."
677
+ SYNTAX TimeTicks
678
+
679
+ TimeInterval ::= TEXTUAL-CONVENTION
680
+ STATUS current
681
+ DESCRIPTION
682
+ "A period of time, measured in units of 0.01 seconds."
683
+ SYNTAX INTEGER (0..2147483647)
684
+
685
+ DateAndTime ::= TEXTUAL-CONVENTION
686
+ DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
687
+ STATUS current
688
+ DESCRIPTION
689
+ "A date-time specification.
690
+
691
+ field octets contents range
692
+ ----- ------ -------- -----
693
+ 1 1-2 year* 0..65536
694
+ 2 3 month 1..12
695
+ 3 4 day 1..31
696
+ 4 5 hour 0..23
697
+ 5 6 minutes 0..59
698
+ 6 7 seconds 0..60
699
+ (use 60 for leap-second)
700
+ 7 8 deci-seconds 0..9
701
+ 8 9 direction from UTC '+' / '-'
702
+ 9 10 hours from UTC* 0..13
703
+ 10 11 minutes from UTC 0..59
704
+
705
+ * Notes:
706
+ - the value of year is in network-byte order
707
+ - daylight saving time in New Zealand is +13
708
+
709
+ For example, Tuesday May 26, 1992 at 1:30:15 PM EDT would be
710
+ displayed as:
711
+
712
+ 1992-5-26,13:30:15.0,-4:0
713
+
714
+ Note that if only local time is known, then timezone
715
+ information (fields 8-10) is not present."
716
+ SYNTAX OCTET STRING (SIZE (8 | 11))
717
+
718
+ StorageType ::= TEXTUAL-CONVENTION
719
+ STATUS current
720
+ DESCRIPTION
721
+ "Describes the memory realization of a conceptual row. A
722
+ row which is volatile(2) is lost upon reboot. A row which
723
+ is either nonVolatile(3), permanent(4) or readOnly(5), is
724
+ backed up by stable storage. A row which is permanent(4)
725
+ can be changed but not deleted. A row which is readOnly(5)
726
+ cannot be changed nor deleted.
727
+
728
+ If the value of an object with this syntax is either
729
+ permanent(4) or readOnly(5), it cannot be written.
730
+ Conversely, if the value is either other(1), volatile(2) or
731
+ nonVolatile(3), it cannot be modified to be permanent(4) or
732
+ readOnly(5). (All illegal modifications result in a
733
+ 'wrongValue' error.)
734
+
735
+ Every usage of this textual convention is required to
736
+ specify the columnar objects which a permanent(4) row must
737
+ at a minimum allow to be writable."
738
+ SYNTAX INTEGER {
739
+ other(1), -- eh?
740
+ volatile(2), -- e.g., in RAM
741
+ nonVolatile(3), -- e.g., in NVRAM
742
+ permanent(4), -- e.g., partially in ROM
743
+ readOnly(5) -- e.g., completely in ROM
744
+ }
745
+
746
+ TDomain ::= TEXTUAL-CONVENTION
747
+ STATUS current
748
+ DESCRIPTION
749
+ "Denotes a kind of transport service.
750
+
751
+ Some possible values, such as snmpUDPDomain, are defined in
752
+ the SNMPv2-TM MIB module. Other possible values are defined
753
+ in other MIB modules."
754
+ REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
755
+ SYNTAX OBJECT IDENTIFIER
756
+
757
+ TAddress ::= TEXTUAL-CONVENTION
758
+ STATUS current
759
+ DESCRIPTION
760
+ "Denotes a transport service address.
761
+
762
+ A TAddress value is always interpreted within the context of a
763
+ TDomain value. Thus, each definition of a TDomain value must
764
+ be accompanied by a definition of a textual convention for use
765
+ with that TDomain. Some possible textual conventions, such as
766
+ SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM
767
+ MIB module. Other possible textual conventions are defined in
768
+ other MIB modules."
769
+ REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906."
770
+ SYNTAX OCTET STRING (SIZE (1..255))
771
+
772
+ END