1-- *****************************************************************
2-- Disman Expression MIB
3
4-- July 1997, Sandra C. Durham
5
6-- Copyright (c) 1997, 1998 by cisco Systems, Inc.
7-- All rights reserved.
8-- *****************************************************************
9
10-- This mib was extracted from the first draft of the expression mib
11
12EXPRESSION-MIB DEFINITIONS ::= BEGIN
13
14IMPORTS
15    MODULE-IDENTITY,
16    OBJECT-TYPE,
17    Integer32,
18    Gauge32,
19    Unsigned32,
20    Counter32,
21    Counter64,
22    zeroDotZero,
23    IpAddress
24        FROM SNMPv2-SMI
25    TEXTUAL-CONVENTION,
26    RowStatus,
27    TruthValue,
28    TimeStamp,
29    DisplayString
30        FROM SNMPv2-TC
31    ciscoExperiment
32        FROM CISCO-SMI
33    sysUpTime
34        FROM RFC1213-MIB
35    MODULE-COMPLIANCE,
36    OBJECT-GROUP
37        FROM SNMPv2-CONF;
38
39expressionMIB MODULE-IDENTITY
40    LAST-UPDATED    "200511240000Z"
41    ORGANIZATION    "IETF Distributed Management Working Group"
42    CONTACT-INFO
43            "       Cisco Systems
44                    Customer Service
45
46            Postal: 170 W Tasman Drive
47                    San Jose, CA  95134
48                    USA
49
50               Tel: +1 800 553-NETS
51
52            E-mail: cs-snmp@cisco.com"
53    DESCRIPTION
54            "The MIB module for defining expressions of MIB objects
55            for network management purposes.
56
57            This MIB is an early snapshot of work done by the IETF's
58            Distributed Management working group.  After this snapshot
59            was taken, the MIB was modified, had new OIDs assigned,
60            and then published as RFC 2982."
61    REVISION        "200511240000Z"
62    DESCRIPTION     "Imported Unsigned32 from SNMPv2-SMI."
63    REVISION        "9802251700Z"
64    DESCRIPTION     "Initial version of the mib module."
65    ::= { ciscoExperiment 22 }
66
67ExpressionName ::= TEXTUAL-CONVENTION
68    STATUS          current
69    DESCRIPTION
70            "This data type is a refinement of DisplayString to
71            represent an identification for an expression.  An
72            ExpressionName corresponds one-to-one to an
73            ExpressionIndex.
74
75            This identification of an expression is subject to change
76            only by administrative request."
77    SYNTAX      OCTET STRING (SIZE (1..64))
78
79ExpressionIndex ::= TEXTUAL-CONVENTION
80    STATUS          current
81    DESCRIPTION
82            "An integer shorthand identification for an expression.
83            An ExpressionIndex corresponds one-to-one to an
84            ExpressionName.
85
86            Once assigned an ExpressionIndex may not be changed."
87    SYNTAX          Unsigned32 (1..4294967295)
88
89ExpressionIndexOrZero ::= TEXTUAL-CONVENTION
90    STATUS          current
91    DESCRIPTION
92            "Either an ExpressionIndex or zero.  The meaning of zero
93            depends on the DESCRIPTION of the object."
94    SYNTAX          Unsigned32 (0..4294967295)
95
96expressionMIBObjects OBJECT IDENTIFIER
97    ::= { expressionMIB 1 }
98
99expResource OBJECT IDENTIFIER
100    ::= { expressionMIBObjects 1 }
101
102expNames OBJECT IDENTIFIER
103    ::= { expressionMIBObjects 2 }
104
105expDefine OBJECT IDENTIFIER
106    ::= { expressionMIBObjects 3 }
107
108expValue OBJECT IDENTIFIER
109    ::= { expressionMIBObjects 4 }
110
111-- Wildcarding Example
112
113-- This example refers to tables and objects defined below.  It may well
114-- make more sense after reading those definitions.
115
116-- An expression may use wildcarded MIB objects that result in multiple
117-- values for the expression.  To specify a wildcarded MIB object a
118-- management application leaves off part or all of the instance portion
119-- of the object identifier, and sets expObjectWildcard to true(1) for
120-- that object.  For our example we'll use a counter of total blessings
121-- from a table of people.  Another table, indexed by town and person
122-- has blessings just from that town.
123
124-- So the index clauses are:
125
126--     personEntry OBJECT-TYPE
127--     ...
128--     INDEX { personIndex }
129
130-- And:
131
132--     townPersonEntry OBJECT-TYPE
133--     ...
134--     INDEX { townIndex, personIndex }
135
136-- In our friendly application we may have entered our expression as:
137
138--     100 * townPersonBlessings.976.* / personBlessings.*
139
140-- What goes in expExpression is:
141
142--     100*$1/$2
143
144-- For example purposes we'll use some slightly far-fetched OIDs, but
145-- the weirdity won't matter.  The People MIB is 1.3.6.1.99.7 and the
146-- Town MIB is 1.3.6.1.99.11, so for our two counters the OIDs are:
147
148--     personBlessings	1.3.6.1.99.7.1.3.1.4
149--     townPersonBlessings	1.3.6.1.99.11.1.2.1.9
150
151-- The rule for wildcards is that all the wildcarded parts have to match
152-- exactly.  In this case that means we have to hardwire the town and
153-- only the personIndex can be wildcarded. So our values for expObjectID
154-- are:
155
156--     1.3.6.1.99.7.1.3.1.4
157--     1.3.6.1.99.11.1.2.1.9.976
158
159-- We're hardwired to townIndex 976 and personIndex is allowed to vary.
160
161-- The value of expExpressionPrefix can be either of those two counter
162-- OIDs (including the instance fragment in the second case), since
163-- either of them takes you to a MIB definition where you can look at
164-- the INDEX clause and figure out what's been left off.  What's been
165-- left off doesn't have to work out to be the same object, but it
166-- does have to work out to be the same values (semantics) for the
167-- result to make sense. Note that the agent can not typically check
168-- such semantics and if given nonsense will return nonsense.
169
170-- If we have people numbered 6, 19, and 42 in town number 976, the
171-- successive values of expValueInstance will be:
172
173--     0.0.6
174--     0.0.19
175--     0.0.42
176
177-- So there will be three values in expValueTable, with those OIDs as
178-- the expValueInstance part of their indexing.
179
180
181
182-- Resource Control
183expResourceDeltaMinimum OBJECT-TYPE
184    SYNTAX          Integer32 (-1 | 1..600)
185    UNITS           "seconds"
186    MAX-ACCESS      read-write
187    STATUS          current
188    DESCRIPTION
189            "The minimum expExpressionDeltaInterval this system will
190            accept.  A system may use the larger values of this minimum
191            to lessen the impact of constantly computing deltas.
192
193            The value -1 indicates this system will not accept
194            deltaValue as a value for expObjectSampleType.
195
196            Unless explicitly resource limited, a system's value for
197            this object should be 1.
198
199            Changing this value will not invalidate an existing setting
200            of expObjectSampleType."
201    ::= { expResource 1 }
202
203expResourceDeltaWildcardInstanceMaximum OBJECT-TYPE
204    SYNTAX          Unsigned32
205    UNITS           "instances"
206    MAX-ACCESS      read-write
207    STATUS          current
208    DESCRIPTION
209            "The maximum number of dynamic instance entries this system
210            will support for wildcarded delta objects in expressions.
211            These are the entries that maintain state, one for each
212            instance of each deltaValue object for each value of an
213            expression.
214
215            A value of 0 indicates no preset limit, that is, the limit
216            is dynamic based on system operation and resources.
217
218            Unless explicitly resource limited, a system's value for
219            this object should be 0.
220
221            Changing this value will not eliminate or inhibit existing
222            delta wildcard instance objects but will prevent the
223            creation of more such objects."
224    ::= { expResource 2 }
225
226expResourceDeltaWildcardInstances OBJECT-TYPE
227    SYNTAX          Gauge32
228    UNITS           "instances"
229    MAX-ACCESS      read-only
230    STATUS          current
231    DESCRIPTION
232            "The number of currently active instance entries as
233            defined for expResourceDeltaWildcardInstanceMaximum."
234    ::= { expResource 3 }
235
236expResourceDeltaWildcardInstancesHigh OBJECT-TYPE
237    SYNTAX          Gauge32
238    UNITS           "instances"
239    MAX-ACCESS      read-only
240    STATUS          current
241    DESCRIPTION
242            "The highest value of expResourceDeltaWildcardInstances
243            that has occurred since initialization of the management
244            system."
245    ::= { expResource 4 }
246
247expResourceDeltaWildcardInstanceResourceLacks OBJECT-TYPE
248    SYNTAX          Counter32
249    UNITS           "instances"
250    MAX-ACCESS      read-only
251    STATUS          current
252    DESCRIPTION
253            "The number of times this system could not evaluate an
254             expression because that would have created a value
255             instance in excess of
256             expResourceDeltaWildcardInstanceMaximum."
257    ::= { expResource 5 }
258
259-- Naming & Creation
260expNameLastChange OBJECT-TYPE
261    SYNTAX          TimeStamp
262    MAX-ACCESS      read-only
263    STATUS          current
264    DESCRIPTION
265            "The value of sysUpTime the last time an expression was
266            created or deleted or had its name changed using
267            expExpressionName."
268    ::= { expNames 1 }
269
270expNameHighestIndex OBJECT-TYPE
271    SYNTAX          ExpressionIndexOrZero
272    MAX-ACCESS      read-only
273    STATUS          current
274    DESCRIPTION
275            "The highest value of ExpressionIndex ever assigned on
276            this system.  Preferrably this value is preserved across
277            system reboots.  A managed system that is unable to
278            store expressions across reboots need not preserve this
279            value across reboots.
280
281            If all expression-creating applications cooperate, they
282            may use this to avoid reusing an ExpressionIndex.  To
283            do so, attempt creation of a new entry with this
284            value + 1 as the value of expExpressionIndex.
285
286            Although reusing ExpressionIndexes could lead to an
287            application receiving a misunderstood value, it is a
288            matter of local management policy whether to reuse them."
289    ::= { expNames 2 }
290
291-- Name Creation Table
292expNameTable OBJECT-TYPE
293    SYNTAX          SEQUENCE OF ExpNameEntry
294    MAX-ACCESS      not-accessible
295    STATUS          current
296    DESCRIPTION
297            "A table of expression names, for creating and deleting
298            expressions."
299    ::= { expNames 3 }
300
301expNameEntry OBJECT-TYPE
302    SYNTAX          ExpNameEntry
303    MAX-ACCESS      not-accessible
304    STATUS          current
305    DESCRIPTION
306            "Information about a single expression.  New expressions
307            can be created using expNameStatus.
308
309            To create an expression first create the named entry in this
310            table.  Then use expExpressionIndex to populate
311            expExpressionTable and expObjectTable.  For expression
312            evaluation to succeed all related entries in expNameTable,
313            expExpressionTable, and expObjectTable must be 'active'.  If
314            these conditions are not met the corresponding values in
315            expValue simply are not instantiated.
316
317            Deleting an entry deletes all related entries in
318            expExpressionTable and expObjectTable.
319
320            Because of the relationships among the multiple tables
321            for an expression (expNameTable, expExpressionTable,
322            expObjectTable, and expValueTable) and the SNMP rules
323            for independence in setting object values, it is
324            necessary to do final error checking when an expression
325            is evaluated, that is, when one of its instances in
326            expValueTable is read.  Earlier checking need not be
327            done and an implementation may not impose any ordering
328            on the creation of objects related to an expression other
329            than to require values for expName and expExpressionIndex
330            before any other related objects can be created.
331
332            To maintain security of MIB information, when creating a new
333            row in this table, the managed system must record the
334            security credentials of the requester.  If the subsequent
335            expression includes objects with expObjectSampleType
336            'deltaValue' the evaluation of that expression takes place
337            under the security credentials of the creator of its
338            expNameEntry."
339    INDEX           { expName }
340    ::= { expNameTable 1 }
341
342ExpNameEntry ::= SEQUENCE {
343    expName             ExpressionName,
344    expExpressionIndex  ExpressionIndex,
345    expNameStatus       RowStatus
346}
347
348expName OBJECT-TYPE
349    SYNTAX          ExpressionName
350    MAX-ACCESS      not-accessible
351    STATUS          current
352    DESCRIPTION
353            "The name of the expression.  Choosing names with useful
354            lexical ordering supports using GetNext or GetBulk to
355            retrieve a useful subset of the table."
356    ::= { expNameEntry 1 }
357
358expExpressionIndex OBJECT-TYPE
359    SYNTAX          ExpressionIndex
360    MAX-ACCESS      read-create
361    STATUS          current
362    DESCRIPTION
363            "The numeric identification of the expression.
364
365            Applications may select this number in ascending numerical
366            order by using expNameHighestIndex as a hint or may use any
367            other acceptable, unused number.
368
369            Once set this value may not be set to a different value."
370    ::= { expNameEntry 2 }
371
372expNameStatus OBJECT-TYPE
373    SYNTAX          RowStatus
374    MAX-ACCESS      read-create
375    STATUS          current
376    DESCRIPTION
377            "The control that allows creation/deletion of entries."
378    ::= { expNameEntry 3 }
379
380-- Definition
381
382-- Expression Definition Table
383expExpressionTable OBJECT-TYPE
384    SYNTAX          SEQUENCE OF ExpExpressionEntry
385    MAX-ACCESS      not-accessible
386    STATUS          current
387    DESCRIPTION     "A table of expression definitions."
388    ::= { expDefine 1 }
389
390expExpressionEntry OBJECT-TYPE
391    SYNTAX          ExpExpressionEntry
392    MAX-ACCESS      not-accessible
393    STATUS          current
394    DESCRIPTION
395            "Information about a single expression.  An entry appears
396            in this table when an entry is created in expNameTable.
397            Deleting that expNameTable entry automatically deletes
398            this entry and its associated expObjectTable entries.
399
400            Values of read-write objects in this table may be changed
401            at any time."
402    INDEX           { expExpressionIndex }
403    ::= { expExpressionTable 1 }
404
405ExpExpressionEntry ::= SEQUENCE {
406    expExpressionName           ExpressionName,
407    expExpression               OCTET STRING,
408    expExpressionValueType      INTEGER,
409    expExpressionComment        DisplayString,
410    expExpressionDeltaInterval  Integer32,
411    expExpressionPrefix         OBJECT IDENTIFIER,
412    expExpressionErrors         Counter32,
413    expExpressionErrorTime      TimeStamp,
414    expExpressionErrorIndex     Integer32,
415    expExpressionError          INTEGER,
416    expExpressionInstance       OBJECT IDENTIFIER,
417    expExpressionOwner          DisplayString
418}
419
420expExpressionName OBJECT-TYPE
421    SYNTAX          ExpressionName
422    MAX-ACCESS      read-write
423    STATUS          current
424    DESCRIPTION
425            "The unique name of the expression, the same as expName.
426
427            Use this object to change the expression's name without
428            changing its expExpressionIndex."
429    ::= { expExpressionEntry 1 }
430
431expExpression OBJECT-TYPE
432    SYNTAX          OCTET STRING (SIZE (1..1024))
433    MAX-ACCESS      read-write
434    STATUS          current
435    DESCRIPTION
436            "The expression to be evaluated.  This object is the same
437            as a DisplayString (RFC 1903) except for its maximum length.
438
439            Except for the variable names the expression is in ANSI C
440            syntax.  Only the subset of ANSI C operators and functions
441            listed here is allowed.
442
443            Variables are expressed as a dollar sign ('$') and an
444            integer that corresponds to an expObjectIndex.  An
445            example of a valid expression is:
446
447                    ($1-$5)*100
448
449            Expressions may not be recursive, that is although an
450            expression may use the results of another expression, it
451            may not contain any variable that is directly or
452            indirectly a result of its own evaluation.
453
454            The only allowed operators are:
455
456                    ( )
457                    - (unary)
458                    + - * / %
459                    & | ^ << >> ~
460                    ! && || == != > >= < <=
461
462            Note the parentheses are included for parenthesizing the
463            expression, not for casting data types.
464
465            The only constant types defined are:
466
467                    int (32-bit signed)
468                    long (64-bit signed)
469                    unsigned int
470                    unsigned long
471                    hexadecimal
472                    character
473                    string
474                    oid
475
476            The default type for a positive integer is int unless it
477            is too large in which case it is long.
478
479            All but oid are as defined for ANSI C.  Note that a
480            hexadecimal constant may end up as a scalar or an array of
481            8-bit integers.  A string constant is enclosed in double
482            quotes and may contain back-slashed individual characters
483            as in ANSI C.
484
485            An oid constant comprises 32-bit, unsigned integers and at
486            least one period, for example:
487
488                    0.
489                    .0
490                    1.3.6.1
491
492            Integer-typed objects are treated as 32- or 64-bit, signed
493            or unsigned integers, as appropriate.  The results of
494            mixing them are as for ANSI C, including the type of the
495            result.  Note that a 32-bit value is thus promoted to 64
496            bits only in an operation with a 64-bit value.  There is
497            no provision for larger values to handle overflow.
498
499            Relative to SNMP data types, a resulting value becomes
500            unsigned when calculating it uses any unsigned value,
501            including a counter.  To force the final value to be of
502            data type counter the expression must explicitly use the
503            counter32() or counter64() function (defined below).
504
505            OCTET STRINGS and OBJECT IDENTIFIERs are treated as 1-based
506            arrays of unsigned 8-bit integers and unsigned 32-bit
507            integers, respectively.
508
509            IpAddresses are treated as 32-bit, unsigned integers in
510            network byte order, that is, the hex version of 255.0.0.0 is
511            0xff000000.
512
513            Conditional expressions result in a 32-bit, unsigned integer
514            of value 0 for false or 1 for true. When an arbitrary value
515            is used as a boolean 0 is false and non-zero is true.
516
517            Rules for the resulting data type from an operation, based
518            on the operator:
519
520            For << and >> the result is the same as the left hand
521            operand.
522
523            For &&, ||, ==, !=, <, <=, >, and >= the result is always
524            Unsigned32.
525
526            For unary - the result is always Integer32.
527
528            For +, -, *, /, %, &, |, and ^ the result is promoted
529            according to the following rules, in order from most to
530            least preferred:
531
532                    If left hand and right hand operands are the same
533                    type, use that.
534
535                    If either side is Counter64, use that.
536
537                    If either side is IpAddress, use that.
538
539                    If either side is TimeTicks, use that.
540
541                    If either side is Counter32, use that.
542
543                    Otherwise use Unsigned32.
544
545            The following rules say what operators apply with what
546            data types.  Any combination not explicitly defined does
547            not work.
548
549            For all operators any of the following can be the left
550            hand or right hand operand: Integer32, Counter32,
551            Unsigned32, Counter64.
552
553            The operators +, -, *, /, %, <, <=, >, and >= also work with
554            TimeTicks.
555
556            The operators &, |, and ^ also work with IpAddress.
557
558            The operators << and >> also work with IpAddress but only
559            as the left hand operand.
560
561            The + operator performs a concatenation of two OCTET STRINGs
562            or two OBJECT IDENTIFIERs.
563
564            The operators &, | perform bitwise operations on
565            OCTET STRINGs.  If the OCTET STRING happens to be a
566            DisplayString the results may be meaningless, but the agent
567            system does not check this as some such systems do not
568            have this information.
569
570            The operators << and >> perform bitwise operations on
571            OCTET STRINGs appearing as the left hand operand.
572
573            The only functions defined are:
574
575                    counter32
576                    counter64
577                    arraySection
578                    stringBegins
579                    stringEnds
580                    stringContains
581                    oidBegins
582                    oidEnds
583                    oidContains
584                    sum
585                    exists
586
587            The following function definitions indicate their by naming
588            the data type of the parameter in the parameter's position
589            in the parameter list.  The parameter must be of the type
590            indicated and generally may be a constant, a MIB object, a
591            function, or an expression.
592
593            counter32(integer) - wrapped around an integer value
594            counter32 forces Counter32 as a data type.
595
596            counter64(integer) - similar to counter32 except that the
597            resulting data type is 'counter64'.
598
599            arraySection(array, integer, integer) - selects a piece of
600            an array (i.e. part of an OCTET STRING or
601            OBJECT IDENTIFIER).  The integer arguments are in the
602            range 0 to 4,294,967,295.  The first is an initial array
603            index (1-based) and the second is an ending array index.
604            A value of 0 indicates first or last element, respectively.
605            If the first element is larger than the array length the
606            result is 0 length.  If the second integer is less than or
607            equal to the first, the result is 0 length.  If the second
608            is larger than the array length it indicates last element.
609
610            stringBegins/Ends/Contains(octetString, octetString) -
611            looks for the second string (which can be a string constant)
612            in the first and returns the 1-based index where the match
613            began.  A return value of 0 indicates no match (i.e.
614            boolean false).
615
616            oidBegins/Ends/Contains(oid, oid) - looks for the second OID
617            (which can be an OID constant) in the first and returns the
618            the 1-based index where the match began.  A return value
619            of 0 indicates no match (i.e. boolean false).
620
621            sum(integerObject*) - sums all availiable values of the
622            wildcarded integer object, resulting in an integer scalar.
623            Must be used with caution as it wraps on overflow with no
624            notification.
625
626            exists(anyTypeObject) - verifies the object instance
627            exists. A return value of 0 indicates NoSuchInstance
628            (i.e. boolean false)."
629    ::= { expExpressionEntry 2 }
630
631expExpressionValueType OBJECT-TYPE
632    SYNTAX          INTEGER {
633                        counter32(1),
634                        unsignedOrGauge32(2),
635                        timeTicks(3),
636                        integer32(4),
637                        ipAddress(5),
638                        octetString(6),
639                        objectId(7),
640                        counter64(8)
641                    }
642    MAX-ACCESS      read-write
643    STATUS          current
644    DESCRIPTION
645            "The type of the expression value.  One and only one of
646            the value objects in expValueTable will be instantiated to
647            match this type.
648
649            If the result of the expression can not be made into this
650            type, an invalidOperandType error will occur."
651    DEFVAL          { counter32 }
652    ::= { expExpressionEntry 3 }
653
654expExpressionComment OBJECT-TYPE
655    SYNTAX          DisplayString
656    MAX-ACCESS      read-write
657    STATUS          current
658    DESCRIPTION
659            "A comment to explain the use or meaning of the expression."
660    DEFVAL          { "" }
661    ::= { expExpressionEntry 4 }
662
663expExpressionDeltaInterval OBJECT-TYPE
664    SYNTAX          Integer32 (0..86400)
665    UNITS           "seconds"
666    MAX-ACCESS      read-write
667    STATUS          current
668    DESCRIPTION
669            "Sampling interval for objects in this expression with
670            expObjectSampleType 'deltaValue'.
671
672            This object is not instantiated if not applicable.
673
674            A value of 0 indicates no automated sampling.  In this case
675            the delta is the difference from the last time the
676            expression was evaluated.  Note that this is subject to
677            unpredictable delta times in the face of retries or
678            multiple managers.
679
680            A value greater than zero is the number of seconds between
681            automated samples.
682
683            Until the delta interval has expired once the delta for the
684            object is effectively not instantiated and evaluating
685            the expression has results as if the object itself were not
686            instantiated.
687
688            Note that delta values potentially consume large amounts of
689            system CPU and memory.  Delta state and processing must
690            continue constantly even if the expression is not being
691            used.  That is, the expression is being evaluated every
692            delta interval, even if no application is reading those
693            values.  For wildcarded objects this can be substantial
694            overhead.
695
696            Note that delta intervals, external expression value
697            sampling intervals and delta intervals for expressions
698            within other expressions can have unusual interactions as
699            they are impossible to synchronize accurately.  In general
700            one interval embedded below another must be enough shorter
701            that the higher sample sees relatively smooth, predictable
702            behavior."
703    DEFVAL          { 0 }
704    ::= { expExpressionEntry 5 }
705
706expExpressionPrefix OBJECT-TYPE
707    SYNTAX          OBJECT IDENTIFIER
708    MAX-ACCESS      read-only
709    STATUS          current
710    DESCRIPTION
711            "An object prefix to assist an application in determining
712            the instance indexing to use in expValueTable, relieving the
713            application of the need to scan the expObjectTable to
714            determine such a prefix.
715
716            See expObjectTable for information on wildcarded objects.
717
718            If the expValueInstance portion of the value OID may
719            be treated as a scalar (that is, normally, 0) the value of
720            expExpressionPrefix is zero length, that is, no OID at all.
721
722            Otherwise expExpressionPrefix is the value of any wildcarded
723            instance of expObjectID for the expression.  This is
724            sufficient as the remainder, that is, the instance fragment
725            relevant to instancing the values must be the same for all
726            wildcarded objects in the expression."
727    ::= { expExpressionEntry 6 }
728
729expExpressionErrors OBJECT-TYPE
730    SYNTAX          Counter32
731    MAX-ACCESS      read-only
732    STATUS          current
733    DESCRIPTION
734            "The number of errors encountered while evaluating this
735            expression.
736
737            Note that an object in the expression not being accessible
738            is not considered an error.  It is a legitimate condition
739            that causes the corresponding expression value not to be
740            instantiated."
741    ::= { expExpressionEntry 7 }
742
743expExpressionErrorTime OBJECT-TYPE
744    SYNTAX          TimeStamp
745    MAX-ACCESS      read-only
746    STATUS          current
747    DESCRIPTION
748            "The value of sysUpTime the last time an error caused a
749            failure to evaluate this expression.
750
751            This object is not instantiated if there have been no
752            errors."
753    ::= { expExpressionEntry 8 }
754
755expExpressionErrorIndex OBJECT-TYPE
756    SYNTAX          Integer32
757    MAX-ACCESS      read-only
758    STATUS          current
759    DESCRIPTION
760            "The 1-based character index into expExpression for where
761            the error occurred.  The value zero indicates irrelevance.
762
763            This object is not instantiated if there have been no
764            errors."
765    ::= { expExpressionEntry 9 }
766
767expExpressionError OBJECT-TYPE
768    SYNTAX          INTEGER {
769                        invalidSyntax(1),
770                        undefinedObjectIndex(2),
771                        unrecognizedOperator(3),
772                        unrecognizedFunction(4),
773                        invalidOperandType(5),
774                        unmatchedParenthesis(6),
775                        tooManyWildcardValues(7),
776                        recursion(8),
777                        deltaTooShort(9),
778                        resourceUnavailable(10),
779                        divideByZero(11)
780                    }
781    MAX-ACCESS      read-only
782    STATUS          current
783    DESCRIPTION
784            "The error that occurred.  In the following explanations the
785            expected timing of the error is in parentheses.  'S' means
786            the error occurs on a Set request.  'E' means the error
787            occurs on the attempt to evaluate the expression either
788            due to Get from expValueTable or in ongoing delta
789            processing.
790
791            invalidSyntax           the value sent for expExpression
792                                    is not valid Expression MIB
793                                    expression syntax (S)
794            undefinedObjectIndex    an object reference ($n) in
795                                    expExpression does not have a
796                                    matching instance in
797                                    expObjectTable (E)
798            unrecognizedOperator    the value sent for expExpression
799                                    held an unrecognized operator (S)
800            unrecognizedFunction    the value sent for expExpression
801                                    held an unrecognized function
802                                    name (S)
803            invalidOperandType      an operand in expExpression is not
804                                    the right type for the associated
805                                    operator or result (SE)
806            unmatchedParenthesis    the value sent for expExpression
807                                    is not correctly parenthesized (S)
808            tooManyWildcardValues   evaluating the expression exceeded
809                                    the limit set by expResourceDelta
810                                    WildcardInstanceMaximum (E)
811            recursion               through some chain of embedded
812                                    expressions the expression invokes
813                                    itself (E)
814            deltaTooShort           the delta for the next evaluation
815                                    passed before the system could
816                                    evaluate the present sample (E)
817            resourceUnavailable     some resource, typically dynamic
818                                    memory, was unavailable (SE)
819            divideByZero            an attempt to divide by zero
820                                    occurred (E)
821
822            For the errors that occur when the attempt is made to set
823            expExpression Set request fails with the SNMP error code
824            'wrongValue'. Such failures refer to the most recent failure
825            to Set expExpression, not to the present value of
826            expExpression which must be either unset or syntactically
827            correct.
828
829            Errors that occur during evalutaion for a Get* operation
830            return the SNMP error code 'genErr' except for
831            'tooManyWildcardValues' and 'resourceUnavailable' which
832            return the SNMP error code 'resourceUnavailable'.
833
834            This object is not instantiated if there have been no
835            errors."
836    ::= { expExpressionEntry 10 }
837
838expExpressionInstance OBJECT-TYPE
839    SYNTAX          OBJECT IDENTIFIER
840    MAX-ACCESS      read-only
841    STATUS          current
842    DESCRIPTION
843            "The expValueInstance being evaluated when the error
844            occurred.  A zero-length indicates irrelevance.
845
846            This object is not instantiated if there have been no
847            errors."
848    ::= { expExpressionEntry 11 }
849
850expExpressionOwner OBJECT-TYPE
851    SYNTAX          DisplayString (SIZE(0..255))
852    MAX-ACCESS      read-write
853    STATUS          current
854    DESCRIPTION
855            "The entity that configured this entry and is therefore
856            using the resources assigned to it."
857    DEFVAL          { "" }
858    ::= { expExpressionEntry 12 }
859
860-- Object Table
861expObjectTable OBJECT-TYPE
862    SYNTAX          SEQUENCE OF ExpObjectEntry
863    MAX-ACCESS      not-accessible
864    STATUS          current
865    DESCRIPTION
866            "A table of object definitions for each expExpression.
867
868            Wildcarding instance IDs:
869
870            It is legal to omit all or part of the instance portion for
871            some or all of the objects in an expression. (See the
872            DESCRIPTION of expObjectID for details.  However, note that
873            if more than one object in the same expression is wildcarded
874            in this way, they all must be objects where that portion of
875            the instance is the same.  In other words, all objects may
876            be in the same SEQUENCE or in different SEQUENCEs but with
877            the same semantic index value (e.g., a value of ifIndex)
878            for the wildcarded portion."
879    ::= { expDefine 2 }
880
881expObjectEntry OBJECT-TYPE
882    SYNTAX          ExpObjectEntry
883    MAX-ACCESS      not-accessible
884    STATUS          current
885    DESCRIPTION
886            "Information about an object.  An application uses
887            expObjectStatus to create entries in this table while
888            in the process of defining an expression.
889
890            Values of read-create objects in this table may be
891            changed at any time."
892    INDEX           {
893                        expExpressionIndex,
894                        expObjectIndex
895                    }
896    ::= { expObjectTable 1 }
897
898ExpObjectEntry ::= SEQUENCE {
899    expObjectIndex                    Unsigned32,
900    expObjectID                       OBJECT IDENTIFIER,
901    expObjectIDWildcard               TruthValue,
902    expObjectSampleType               INTEGER,
903    expObjectDeltaDiscontinuityID     OBJECT IDENTIFIER,
904    expObjectDiscontinuityIDWildcard  TruthValue,
905    expObjectDiscontinuityIDType      INTEGER,
906    expObjectConditional              OBJECT IDENTIFIER,
907    expObjectConditionalWildcard      TruthValue,
908    expObjectStatus                   RowStatus
909}
910
911expObjectIndex OBJECT-TYPE
912    SYNTAX          Unsigned32 (1..4294967295)
913    MAX-ACCESS      not-accessible
914    STATUS          current
915    DESCRIPTION
916            "Within an expression, a unique, numeric identification
917            for an object.  Prefixed with a dollar sign ('$') this is
918            used to reference the object in the corresponding
919            expExpression."
920    ::= { expObjectEntry 1 }
921
922expObjectID OBJECT-TYPE
923    SYNTAX          OBJECT IDENTIFIER
924    MAX-ACCESS      read-create
925    STATUS          current
926    DESCRIPTION
927            "The OBJECT IDENTIFIER (OID) of this object.  The OID may be
928            fully qualified, meaning it includes a complete instance
929            identifier part (e.g., ifInOctets.1 or sysUpTime.0), or it
930            may not be fully qualified, meaning it may lack all or part
931            of the instance identifier.  If the expObjectID is not fully
932            qualified, then expObjectWildcard must be set to true(1).
933            The value of the expression will be multiple
934            values, as if done for a GetNext sweep of the object.
935
936            An object here may itself be the result of an expression but
937            recursion is not allowed.
938
939            NOTE:  The simplest implementations of this MIB may not
940            allow wildcards."
941    ::= { expObjectEntry 2 }
942
943expObjectIDWildcard OBJECT-TYPE
944    SYNTAX          TruthValue
945    MAX-ACCESS      read-create
946    STATUS          current
947    DESCRIPTION
948            "A true value indicates the expObjecID of this row is a
949            wildcard object. False indicates that expObjectID is fully
950            instanced.  If all expObjectWildcard values for a given
951            expression are FALSE, expExpressionPrefix will reflect a
952            scalar object (ie will be 0.0).
953
954            NOTE:  The simplest implementations of this MIB may not
955            allow wildcards."
956    DEFVAL          { false }
957    ::= { expObjectEntry 3 }
958
959expObjectSampleType OBJECT-TYPE
960    SYNTAX          INTEGER {
961                        absoluteValue(1),
962                        deltaValue(2)
963                    }
964    MAX-ACCESS      read-create
965    STATUS          current
966    DESCRIPTION
967            "The method of sampling the selected variable.
968
969            An 'absoluteValue' is simply the present value of the
970            object.
971            A 'deltaValue' is the present value minus the previous
972            value, which was sampled expExpressionDeltaInterval
973            seconds ago.  This is intended primarily for use with
974            SNMP counters, which are meaningless as an 'absoluteValue',
975            but may be used with any integer-based value.
976
977            When an expression contains both delta and absolute values
978            the absolute values are obtained at the end of the delta
979            period."
980    DEFVAL          { absoluteValue }
981    ::= { expObjectEntry 4 }
982
983sysUpTimeInstance OBJECT IDENTIFIER
984    ::= { sysUpTime 0 }
985
986expObjectDeltaDiscontinuityID OBJECT-TYPE
987    SYNTAX          OBJECT IDENTIFIER
988    MAX-ACCESS      read-create
989    STATUS          current
990    DESCRIPTION
991            "The OBJECT IDENTIFIER (OID) of a TimeTicks or TimeStamp
992            object that indicates a discontinuity in the value at
993            expObjectID.
994
995            This object is not instantiated if expObject is not
996            'deltaValue'.
997
998            The OID may be for a leaf object (e.g. sysUpTime.0) or may
999            be wildcarded to match expObjectID.
1000
1001            This object supports normal checking for a discontinuity
1002            in a counter.  Note that if this object does not point to
1003            sysUpTime discontinuity checking must still check sysUpTime
1004            for an overall discontinuity.
1005
1006            If the object identified is not accessible no discontinuity
1007            check will be made."
1008    DEFVAL          { sysUpTimeInstance }
1009    ::= { expObjectEntry 5 }
1010
1011expObjectDiscontinuityIDWildcard OBJECT-TYPE
1012    SYNTAX          TruthValue
1013    MAX-ACCESS      read-create
1014    STATUS          current
1015    DESCRIPTION
1016            "A true value indicates the expObjectDeltaDiscontinuityID
1017            of this row is a wildcard object.  False indicates that
1018            expObjectDeltaDiscontinuityID is fully instanced.
1019
1020            This object is not instantiated if expObject is not
1021            'deltaValue'.
1022
1023            NOTE:  The simplest implementations of this MIB may not
1024            allow wildcards."
1025    DEFVAL          { false }
1026    ::= { expObjectEntry 6 }
1027
1028expObjectDiscontinuityIDType OBJECT-TYPE
1029    SYNTAX          INTEGER {
1030                        timeTicks(1),
1031                        timeStamp(2)
1032                    }
1033    MAX-ACCESS      read-create
1034    STATUS          current
1035    DESCRIPTION
1036            "The value 'timeTicks' indicates the
1037            expObjectDeltaDiscontinuityID of this row is of syntax
1038            TimeTicks.  The value 'timeStamp' indicates that
1039            expObjectDeltaDiscontinuityID is of syntax TimeStamp.
1040
1041            This object is not instantiated if expObject is not
1042            'deltaValue'."
1043    DEFVAL          { timeTicks }
1044    ::= { expObjectEntry 7 }
1045
1046expObjectConditional OBJECT-TYPE
1047    SYNTAX          OBJECT IDENTIFIER
1048    MAX-ACCESS      read-create
1049    STATUS          current
1050    DESCRIPTION
1051            "The OBJECT IDENTIFIER (OID) of an object that overrides
1052            whether the instance of expObjectID is to be considered
1053            usable.  If the value of the object at expObjectConditional
1054            is 0 or not instantiated, the object at expObjectID is
1055            treated as if it is not instantiated.  In other words,
1056            expObjectConditional is a filter that controls whether or
1057            not to use the value at expObjectID.
1058
1059            The OID may be for a leaf object (e.g. sysObjectID.0) or
1060            may be wildcarded to match expObjectID.  If expObject is
1061            wildcarded and expObjectID in the same row is not, the wild
1062            portion of expObjectConditional must match the wildcarding
1063            of the rest of the expression.  If no object in the
1064            expression is wildcarded but expObjectConditional is, use
1065            the lexically first instance (if any) of
1066            expObjectConditional.
1067
1068            If the value of expObjectConditional is 0.0 operation is
1069            as if the value pointed to by expObjectConditional is a
1070            non-zero (true) value.
1071
1072            Note that expObjectConditional can not trivially use an
1073            object of syntax TruthValue, since the underlying value is
1074            not 0 or 1."
1075    DEFVAL          { zeroDotZero }
1076    ::= { expObjectEntry 8 }
1077
1078expObjectConditionalWildcard OBJECT-TYPE
1079    SYNTAX          TruthValue
1080    MAX-ACCESS      read-create
1081    STATUS          current
1082    DESCRIPTION
1083            "A true value indicates the expObjectConditional of this
1084            row is a wildcard object. False indicates that
1085            expObjectConditional is fully instanced.
1086
1087            NOTE: The simplest implementations of this MIB may not allow
1088            wildcards."
1089    DEFVAL          { false }
1090    ::= { expObjectEntry 9 }
1091
1092expObjectStatus OBJECT-TYPE
1093    SYNTAX          RowStatus
1094    MAX-ACCESS      read-create
1095    STATUS          current
1096    DESCRIPTION
1097            "The control that allows creation/deletion of entries.
1098
1099            Objects in this table may be changed while expObjectStatus
1100            is in any state."
1101    ::= { expObjectEntry 10 }
1102
1103-- Expression Value Table
1104expValueTable OBJECT-TYPE
1105    SYNTAX          SEQUENCE OF ExpValueEntry
1106    MAX-ACCESS      not-accessible
1107    STATUS          current
1108    DESCRIPTION     "A table of values from evaluated expressions."
1109    ::= { expValue 1 }
1110
1111expValueEntry OBJECT-TYPE
1112    SYNTAX          ExpValueEntry
1113    MAX-ACCESS      not-accessible
1114    STATUS          current
1115    DESCRIPTION
1116            "A single value from an evaluated expression.  For a given
1117            instance, only one 'Val' object in the conceptual row will
1118            be instantiated, that is, the one with the appropriate type
1119            for the value.  For values that contain no objects of
1120            expObjectSampleType 'deltaValue', reading a value from the
1121            table causes the evaluation of the expression for that
1122            value.  For those that contain a 'deltaValue' the value
1123            read is as of the last delta interval.
1124
1125            If in the attempt to evaluate the expression one or more
1126            of the necessary objects is not available, the corresponding
1127            entry in this table is effectively not instantiated.
1128
1129            To maintain security of MIB information, expression
1130            evaluation must take place using security credentials for
1131            the implied Gets of the objects in the expression.  For
1132            expressions with no deltaValue those security credentials
1133            are the ones that came with the Get* for the value.  For
1134            expressions with a deltaValue the ongoing expression
1135            evaluation is under the security credentials of the
1136            creator of the corresponding expNameEntry."
1137    INDEX           {
1138                        expExpressionIndex,
1139                        expValueInstance
1140                    }
1141    ::= { expValueTable 1 }
1142
1143ExpValueEntry ::= SEQUENCE {
1144    expValueInstance        OBJECT IDENTIFIER,
1145    expValueCounter32Val    Counter32,
1146    expValueUnsigned32Val   Unsigned32,
1147    expValueInteger32Val    Integer32,
1148    expValueIpAddressVal    IpAddress,
1149    expValueOctetStringVal  OCTET STRING,
1150    expValueOidVal          OBJECT IDENTIFIER,
1151    expValueCounter64Val    Counter64
1152}
1153
1154expValueInstance OBJECT-TYPE
1155    SYNTAX          OBJECT IDENTIFIER
1156    MAX-ACCESS      not-accessible
1157    STATUS          current
1158    DESCRIPTION
1159            "The final instance portion of a value's OID according to
1160            the wildcarding in instances of expObjectID for the
1161            expression.  The prefix of this OID fragment is 0.0,
1162            leading to the following behavior.
1163
1164            If there is no wildcarding, the value is 0.0.0.  In other
1165            words, there is one value which standing alone would have
1166            been a scalar with a 0 at the end of its OID.
1167
1168            If there is wildcarding, the value is 0.0 followed by
1169            a value that the wildcard can take, thus defining one value
1170            instance for each real, possible value of the wildcard.
1171            So, for example, if the wildcard worked out to be an
1172            ifIndex, there is an expValueInstance for each applicable
1173            ifIndex."
1174    ::= { expValueEntry 1 }
1175
1176expValueCounter32Val OBJECT-TYPE
1177    SYNTAX          Counter32
1178    MAX-ACCESS      read-only
1179    STATUS          current
1180    DESCRIPTION
1181            "The value when expExpressionValueType is 'counter32'."
1182    ::= { expValueEntry 2 }
1183
1184expValueUnsigned32Val OBJECT-TYPE
1185    SYNTAX          Unsigned32
1186    MAX-ACCESS      read-only
1187    STATUS          current
1188    DESCRIPTION
1189            "The value when expExpressionValueType is
1190            'unsignedOrGauge32' or 'timeTicks'."
1191    ::= { expValueEntry 3 }
1192
1193expValueInteger32Val OBJECT-TYPE
1194    SYNTAX          Integer32
1195    MAX-ACCESS      read-only
1196    STATUS          current
1197    DESCRIPTION
1198            "The value when expExpressionValueType is 'integer32'."
1199    ::= { expValueEntry 4 }
1200
1201expValueIpAddressVal OBJECT-TYPE
1202    SYNTAX          IpAddress
1203    MAX-ACCESS      read-only
1204    STATUS          current
1205    DESCRIPTION
1206            "The value when expExpressionValueType is 'ipAddress'."
1207    ::= { expValueEntry 5 }
1208
1209expValueOctetStringVal OBJECT-TYPE
1210    SYNTAX          OCTET STRING (SIZE (0..65535))
1211    MAX-ACCESS      read-only
1212    STATUS          current
1213    DESCRIPTION
1214            "The value when expExpressionValueType is 'octetString'."
1215    ::= { expValueEntry 6 }
1216
1217expValueOidVal OBJECT-TYPE
1218    SYNTAX          OBJECT IDENTIFIER
1219    MAX-ACCESS      read-only
1220    STATUS          current
1221    DESCRIPTION
1222            "The value when expExpressionValueType is 'objectId'."
1223    ::= { expValueEntry 7 }
1224
1225expValueCounter64Val OBJECT-TYPE
1226    SYNTAX          Counter64
1227    MAX-ACCESS      read-only
1228    STATUS          current
1229    DESCRIPTION
1230            "The value when expExpressionValueType is 'counter64'."
1231    ::= { expValueEntry 8 }
1232
1233-- Conformance
1234expressionMIBConformance OBJECT IDENTIFIER
1235    ::= { expressionMIB 3 }
1236
1237expressionMIBCompliances OBJECT IDENTIFIER
1238    ::= { expressionMIBConformance 1 }
1239
1240expressionMIBGroups OBJECT IDENTIFIER
1241    ::= { expressionMIBConformance 2 }
1242
1243-- Compliance
1244expressionMIBCompliance MODULE-COMPLIANCE
1245    STATUS          current
1246    DESCRIPTION
1247            "The compliance statement for entities which implement
1248            the Expression MIB."
1249    MODULE          -- this module
1250    MANDATORY-GROUPS {
1251                        expressionResourceGroup,
1252                        expressionDefinitionGroup,
1253                        expressionValueGroup
1254                    }
1255
1256    OBJECT          expResourceDeltaMinimum
1257    SYNTAX          Integer32 (-1 | 60..600)
1258    DESCRIPTION
1259            "Implementation need not allow deltas or it may implement
1260            them and restrict them to higher values."
1261
1262    OBJECT          expObjectSampleType
1263    WRITE-SYNTAX    INTEGER {
1264                        absoluteValue(1)
1265                    }
1266    DESCRIPTION     "Implementation need not allow deltas."
1267    ::= { expressionMIBCompliances 1 }
1268
1269-- Units of Conformance
1270expressionResourceGroup OBJECT-GROUP
1271    OBJECTS         {
1272                        expResourceDeltaMinimum,
1273                        expResourceDeltaWildcardInstanceMaximum,
1274                        expResourceDeltaWildcardInstances,
1275                        expResourceDeltaWildcardInstancesHigh,
1276                        expResourceDeltaWildcardInstanceResourceLacks
1277                    }
1278    STATUS          current
1279    DESCRIPTION     "Expression definition resource management."
1280    ::= { expressionMIBGroups 1 }
1281
1282expressionDefinitionGroup OBJECT-GROUP
1283    OBJECTS         {
1284                        expNameLastChange,
1285                        expNameHighestIndex,
1286                        expExpressionIndex,
1287                        expNameStatus,
1288                        expExpressionName,
1289                        expExpression,
1290                        expExpressionValueType,
1291                        expExpressionComment,
1292                        expExpressionDeltaInterval,
1293                        expExpressionPrefix,
1294                        expExpressionErrors,
1295                        expExpressionErrorTime,
1296                        expExpressionErrorIndex,
1297                        expExpressionError,
1298                        expExpressionInstance,
1299                        expExpressionOwner,
1300                        expObjectID,
1301                        expObjectIDWildcard,
1302                        expObjectSampleType,
1303                        expObjectDeltaDiscontinuityID,
1304                        expObjectDiscontinuityIDWildcard,
1305                        expObjectDiscontinuityIDType,
1306                        expObjectConditional,
1307                        expObjectConditionalWildcard,
1308                        expObjectStatus
1309                    }
1310    STATUS          current
1311    DESCRIPTION     "Expression definition resource management."
1312    ::= { expressionMIBGroups 2 }
1313
1314expressionValueGroup OBJECT-GROUP
1315    OBJECTS         {
1316                        expValueCounter32Val,
1317                        expValueUnsigned32Val,
1318                        expValueInteger32Val,
1319                        expValueIpAddressVal,
1320                        expValueOctetStringVal,
1321                        expValueOidVal,
1322                        expValueCounter64Val
1323                    }
1324    STATUS          current
1325    DESCRIPTION     "Expression definition resource management."
1326    ::= { expressionMIBGroups 3 }
1327
1328END
1329
1330
1331