telemetry-snmp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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