added files
[bcm963xx.git] / userapps / opensource / net-snmp / mibs / SNMPv2-TC.txt
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