DISMAN-EXPRESSION-MIB.txt
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:42k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. DISMAN-EXPRESSION-MIB DEFINITIONS ::= BEGIN
  2. IMPORTS
  3.     MODULE-IDENTITY, OBJECT-TYPE,
  4.     Integer32, Gauge32, Unsigned32,
  5.     Counter32, Counter64, IpAddress,
  6.     TimeTicks, mib-2, zeroDotZero  FROM SNMPv2-SMI
  7.     RowStatus, TruthValue, TimeStamp    FROM SNMPv2-TC
  8.     sysUpTime                 FROM SNMPv2-MIB
  9.     SnmpAdminString           FROM SNMP-FRAMEWORK-MIB
  10.     MODULE-COMPLIANCE, OBJECT-GROUP     FROM SNMPv2-CONF;
  11. dismanExpressionMIB MODULE-IDENTITY
  12.     LAST-UPDATED "200010160000Z" -- 16 October 2000
  13.     ORGANIZATION "IETF Distributed Management Working Group"
  14.     CONTACT-INFO "Ramanathan Kavasseri
  15.                   Cisco Systems, Inc.
  16.                   170 West Tasman Drive,
  17.                   San Jose CA 95134-1706.
  18.                   Phone: +1 408 527 2446
  19.                   Email: ramk@cisco.com"
  20.     DESCRIPTION
  21.      "The MIB module for defining expressions of MIB objects for
  22.      management purposes."
  23. -- Revision History
  24.        REVISION     "200010160000Z" -- 16 October 2000
  25.        DESCRIPTION  "This is the initial version of this MIB.
  26.                     Published as RFC 2982"
  27.     ::= { mib-2 90 }
  28. dismanExpressionMIBObjects OBJECT IDENTIFIER ::=
  29.                                             { dismanExpressionMIB 1 }
  30. expResource    OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 1 }
  31. expDefine OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 2 }
  32. expValue  OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 3 }
  33. --
  34. -- Resource Control
  35. --
  36. expResourceDeltaMinimum OBJECT-TYPE
  37.     SYNTAX      Integer32 (-1 | 1..600)
  38.     UNITS       "seconds"
  39.     MAX-ACCESS  read-write
  40.     STATUS      current
  41.     DESCRIPTION
  42.      "The minimum expExpressionDeltaInterval this system will
  43.      accept.  A system may use the larger values of this minimum to
  44.      lessen the impact of constantly computing deltas.  For larger
  45.      delta sampling intervals the system samples less often and
  46.      suffers less overhead.  This object provides a way to enforce
  47.      such lower overhead for all expressions created after it is
  48.      set.
  49.      The value -1 indicates that expResourceDeltaMinimum is
  50.      irrelevant as the system will not accept 'deltaValue' as a
  51.      value for expObjectSampleType.
  52.      Unless explicitly resource limited, a system's value for
  53.      this object should be 1, allowing as small as a 1 second
  54.      interval for ongoing delta sampling.
  55.      Changing this value will not invalidate an existing setting
  56.      of expObjectSampleType."
  57.     ::= { expResource 1 }
  58. expResourceDeltaWildcardInstanceMaximum OBJECT-TYPE
  59.     SYNTAX      Unsigned32
  60.     UNITS       "instances"
  61.     MAX-ACCESS  read-write
  62.     STATUS      current
  63.     DESCRIPTION
  64.      "For every instance of a deltaValue object, one dynamic instance
  65.      entry is needed for holding the instance value from the previous
  66.      sample, i.e. to maintain state.
  67.      This object limits maximum number of dynamic instance entries
  68.      this system will support for wildcarded delta objects in
  69.      expressions. For a given delta expression, the number of
  70.      dynamic instances is the number of values that meet all criteria
  71.      to exist times the number of delta values in the expression.
  72.      A value of 0 indicates no preset limit, that is, the limit
  73.      is dynamic based on system operation and resources.
  74.      Unless explicitly resource limited, a system's value for
  75.      this object should be 0.
  76.      Changing this value will not eliminate or inhibit existing delta
  77.      wildcard instance objects but will prevent the creation of more
  78.      such objects.
  79.      An attempt to allocate beyond the limit results in expErrorCode
  80.      being tooManyWildcardValues for that evaluation attempt."
  81.     ::= { expResource 2 }
  82. expResourceDeltaWildcardInstances OBJECT-TYPE
  83.     SYNTAX      Gauge32
  84.     UNITS       "instances"
  85.     MAX-ACCESS  read-only
  86.     STATUS      current
  87.     DESCRIPTION
  88.      "The number of currently active instance entries as
  89.      defined for expResourceDeltaWildcardInstanceMaximum."
  90.     ::= { expResource 3 }
  91. expResourceDeltaWildcardInstancesHigh OBJECT-TYPE
  92.     SYNTAX      Gauge32
  93.     UNITS       "instances"
  94.     MAX-ACCESS  read-only
  95.     STATUS      current
  96.     DESCRIPTION
  97.      "The highest value of expResourceDeltaWildcardInstances
  98.      that has occurred since initialization of the managed
  99.      system."
  100.     ::= { expResource 4 }
  101. expResourceDeltaWildcardInstanceResourceLacks OBJECT-TYPE
  102.     SYNTAX      Counter32
  103.     UNITS       "instances"
  104.     MAX-ACCESS  read-only
  105.     STATUS      current
  106.     DESCRIPTION
  107.      "The number of times this system could not evaluate an
  108.      expression because that would have created a value instance in
  109.      excess of expResourceDeltaWildcardInstanceMaximum."
  110.     ::= { expResource 5 }
  111. --
  112. -- Definition
  113. --
  114. -- Expression Definition Table
  115. --
  116. expExpressionTable OBJECT-TYPE
  117.     SYNTAX      SEQUENCE OF ExpExpressionEntry
  118.     MAX-ACCESS  not-accessible
  119.     STATUS      current
  120.     DESCRIPTION
  121.      "A table of expression definitions."
  122.     ::= { expDefine 1 }
  123. expExpressionEntry OBJECT-TYPE
  124.     SYNTAX      ExpExpressionEntry
  125.     MAX-ACCESS  not-accessible
  126.     STATUS      current
  127.     DESCRIPTION
  128.      "Information about a single expression.  New expressions
  129.      can be created using expExpressionRowStatus.
  130.      To create an expression first create the named entry in this
  131.      table.  Then use expExpressionName to populate expObjectTable.
  132.      For expression evaluation to succeed all related entries in
  133.      expExpressionTable and expObjectTable must be 'active'.  If
  134.      these conditions are not met the corresponding values in
  135.      expValue simply are not instantiated.
  136.      Deleting an entry deletes all related entries in expObjectTable
  137.      and expErrorTable.
  138.      Because of the relationships among the multiple tables for an
  139.      expression (expExpressionTable, expObjectTable, and
  140.      expValueTable) and the SNMP rules for independence in setting
  141.      object values, it is necessary to do final error checking when
  142.      an expression is evaluated, that is, when one of its instances
  143.      in expValueTable is read or a delta interval expires.  Earlier
  144.      checking need not be done and an implementation may not impose
  145.      any ordering on the creation of objects related to an
  146.      expression.
  147.      To maintain security of MIB information, when creating a new row in
  148.      this table, the managed system must record the security credentials
  149.      of the requester.  These security credentials are the parameters
  150.      necessary as inputs to isAccessAllowed from the Architecture for
  151.      Describing SNMP Management Frameworks.  When obtaining the objects
  152.      that make up the expression, the system must (conceptually) use
  153.      isAccessAllowed to ensure that it does not violate security.
  154.      The evaluation of the expression takes place under the
  155.      security credentials of the creator of its expExpressionEntry.
  156.      Values of read-write objects in this table may be changed
  157.      at any time."
  158.     INDEX       { expExpressionOwner, expExpressionName }
  159.     ::= { expExpressionTable 1 }
  160. ExpExpressionEntry ::= SEQUENCE {
  161.     expExpressionOwner           SnmpAdminString,
  162.     expExpressionName             SnmpAdminString,
  163.     expExpression                OCTET STRING,
  164.     expExpressionValueType       INTEGER,
  165.     expExpressionComment         SnmpAdminString,
  166.     expExpressionDeltaInterval   Integer32,
  167.     expExpressionPrefix           OBJECT IDENTIFIER,
  168.     expExpressionErrors          Counter32,
  169.     expExpressionEntryStatus     RowStatus
  170. }
  171. expExpressionOwner OBJECT-TYPE
  172.    SYNTAX      SnmpAdminString (SIZE(0..32))
  173.    MAX-ACCESS  not-accessible
  174.    STATUS      current
  175.    DESCRIPTION
  176.      "The owner of this entry. The exact semantics of this
  177.      string are subject to the security policy defined by the
  178.      security administrator."
  179.     ::= { expExpressionEntry 1 }
  180. expExpressionName OBJECT-TYPE
  181.     SYNTAX      SnmpAdminString (SIZE (1..32))
  182.     MAX-ACCESS  not-accessible
  183.     STATUS      current
  184.     DESCRIPTION
  185.      "The name of the expression.  This is locally unique, within
  186.      the scope of an expExpressionOwner."
  187.     ::= { expExpressionEntry 2 }
  188. expExpression OBJECT-TYPE
  189.     SYNTAX      OCTET STRING (SIZE (1..1024))
  190.     MAX-ACCESS  read-create
  191.     STATUS      current
  192.     DESCRIPTION
  193.      "The expression to be evaluated.  This object is the same
  194.      as a DisplayString (RFC 1903) except for its maximum length.
  195.      Except for the variable names the expression is in ANSI C
  196.      syntax.  Only the subset of ANSI C operators and functions
  197.      listed here is allowed.
  198.      Variables are expressed as a dollar sign ('$') and an
  199.      integer that corresponds to an expObjectIndex.  An
  200.      example of a valid expression is:
  201.           ($1-$5)*100
  202.      Expressions must not be recursive, that is although an expression
  203.      may use the results of another expression, it must not contain
  204.      any variable that is directly or indirectly a result of its own
  205.      evaluation. The managed system must check for recursive
  206.      expressions.
  207.      The only allowed operators are:
  208.           ( )
  209.           - (unary)
  210.           + - * / %
  211.           & | ^ << >> ~
  212.           ! && || == != > >= < <=
  213.      Note the parentheses are included for parenthesizing the
  214.      expression, not for casting data types.
  215.      The only constant types defined are:
  216.           int (32-bit signed)
  217.           long (64-bit signed)
  218.           unsigned int
  219.           unsigned long
  220.           hexadecimal
  221.           character
  222.           string
  223.           oid
  224.      The default type for a positive integer is int unless it is too
  225.      large in which case it is long.
  226.      All but oid are as defined for ANSI C.  Note that a
  227.      hexadecimal constant may end up as a scalar or an array of
  228.      8-bit integers.  A string constant is enclosed in double
  229.      quotes and may contain back-slashed individual characters
  230.      as in ANSI C.
  231.      An oid constant comprises 32-bit, unsigned integers and at
  232.      least one period, for example:
  233.           0.
  234.           .0
  235.           1.3.6.1
  236.      No additional leading or trailing subidentifiers are automatically
  237.      added to an OID constant.  The constant is taken as expressed.
  238.      Integer-typed objects are treated as 32- or 64-bit, signed
  239.      or unsigned integers, as appropriate.  The results of
  240.      mixing them are as for ANSI C, including the type of the
  241.      result.  Note that a 32-bit value is thus promoted to 64 bits
  242.      only in an operation with a 64-bit value.  There is no
  243.      provision for larger values to handle overflow.
  244.      Relative to SNMP data types, a resulting value becomes
  245.      unsigned when calculating it uses any unsigned value,
  246.      including a counter.  To force the final value to be of
  247.      data type counter the expression must explicitly use the
  248.      counter32() or counter64() function (defined below).
  249.      OCTET STRINGS and OBJECT IDENTIFIERs are treated as
  250.      one-dimensioned arrays of unsigned 8-bit integers and
  251.      unsigned 32-bit integers, respectively.
  252.      IpAddresses are treated as 32-bit, unsigned integers in
  253.      network byte order, that is, the hex version of 255.0.0.0 is
  254.      0xff000000.
  255.      Conditional expressions result in a 32-bit, unsigned integer
  256.      of value 0 for false or 1 for true. When an arbitrary value
  257.      is used as a boolean 0 is false and non-zero is true.
  258.      Rules for the resulting data type from an operation, based on
  259.      the operator:
  260.      For << and >> the result is the same as the left hand operand.
  261.      For &&, ||, ==, !=, <, <=, >, and >= the result is always
  262.      Unsigned32.
  263.      For unary - the result is always Integer32.
  264.      For +, -, *, /, %, &, |, and ^ the result is promoted according
  265.      to the following rules, in order from most to least preferred:
  266.           If left hand and right hand operands are the same type,
  267.           use that.
  268.           If either side is Counter64, use that.
  269.           If either side is IpAddress, use that.
  270.           If either side is TimeTicks, use that.
  271.           If either side is Counter32, use that.
  272.           Otherwise use Unsigned32.
  273.      The following rules say what operators apply with what data
  274.      types.  Any combination not explicitly defined does not work.
  275.      For all operators any of the following can be the left hand or
  276.      right hand operand: Integer32, Counter32, Unsigned32, Counter64.
  277.      The operators +, -, *, /, %, <, <=, >, and >= work with
  278.      TimeTicks.
  279.      The operators &, |, and ^ work with IpAddress.
  280.      The operators << and >> work with IpAddress but only as the
  281.      left hand operand.
  282.      The + operator performs a concatenation of two OCTET STRINGs or
  283.      two OBJECT IDENTIFIERs.
  284.      The operators &, | perform bitwise operations on OCTET STRINGs.
  285.      If the OCTET STRING happens to be a DisplayString the results
  286.      may be meaningless, but the agent system does not check this as
  287.      some such systems do not have this information.
  288.      The operators << and >> perform bitwise operations on OCTET
  289.      STRINGs appearing as the left hand operand.
  290.      The only functions defined are:
  291.           counter32
  292.           counter64
  293.           arraySection
  294.           stringBegins
  295.           stringEnds
  296.           stringContains
  297.           oidBegins
  298.           oidEnds
  299.           oidContains
  300.           average
  301.           maximum
  302.           minimum
  303.           sum
  304.           exists
  305.      The following function definitions indicate their parameters by
  306.      naming the data type of the parameter in the parameter's position
  307.      in the parameter list.  The parameter must be of the type indicated
  308.      and generally may be a constant, a MIB object, a function, or an
  309.      expression.
  310.      counter32(integer) - wrapped around an integer value counter32
  311.      forces Counter32 as a data type.
  312.      counter64(integer) - similar to counter32 except that the
  313.      resulting data type is 'counter64'.
  314.      arraySection(array, integer, integer) - selects a piece of an
  315.      array (i.e. part of an OCTET STRING or OBJECT IDENTIFIER).  The
  316.      integer arguments are in the range 0 to 4,294,967,295.  The
  317.      first is an initial array index (one-dimensioned) and the second
  318.      is an ending array index.  A value of 0 indicates first or last
  319.      element, respectively.  If the first element is larger than the
  320.      array length the result is 0 length.  If the second integer is
  321.      less than or equal to the first, the result is 0 length.  If the
  322.      second is larger than the array length it indicates last
  323.      element.
  324.      stringBegins/Ends/Contains(octetString, octetString) - looks for
  325.      the second string (which can be a string constant) in the first
  326.      and returns the one-dimensioned arrayindex where the match began.
  327.      A return value of 0 indicates no match (i.e. boolean false).
  328.      oidBegins/Ends/Contains(oid, oid) - looks for the second OID
  329.      (which can be an OID constant) in the first and returns the
  330.      the one-dimensioned index where the match began. A return value
  331.      of 0 indicates no match (i.e. boolean false).
  332.      average/maximum/minimum(integer) - calculates the average,
  333.      minimum, or maximum value of the integer valued object over
  334.      multiple sample times.  If the object disappears for any
  335.      sample period, the accumulation and the resulting value object
  336.      cease to exist until the object reappears at which point the
  337.      calculation starts over.
  338.      sum(integerObject*) - sums all available values of the
  339.      wildcarded integer object, resulting in an integer scalar.  Must
  340.      be used with caution as it wraps on overflow with no
  341.      notification.
  342.      exists(anyTypeObject) - verifies the object instance exists. A
  343.      return value of 0 indicates NoSuchInstance (i.e. boolean
  344.      false)."
  345.     ::= { expExpressionEntry 3 }
  346. expExpressionValueType OBJECT-TYPE
  347.     SYNTAX      INTEGER { counter32(1), unsigned32(2), timeTicks(3),
  348.                  integer32(4), ipAddress(5), octetString(6),
  349.                  objectId(7), counter64(8) }
  350.     MAX-ACCESS  read-create
  351.     STATUS      current
  352.     DESCRIPTION
  353.      "The type of the expression value.  One and only one of the
  354.      value objects in expValueTable will be instantiated to match
  355.      this type.
  356.      If the result of the expression can not be made into this type,
  357.      an invalidOperandType error will occur."
  358.     DEFVAL      { counter32 }
  359.     ::= { expExpressionEntry 4 }
  360. expExpressionComment OBJECT-TYPE
  361.     SYNTAX      SnmpAdminString
  362.     MAX-ACCESS  read-create
  363.     STATUS      current
  364.     DESCRIPTION
  365.      "A comment to explain the use or meaning of the expression."
  366.     DEFVAL      { ''H }
  367.     ::= { expExpressionEntry 5 }
  368. expExpressionDeltaInterval OBJECT-TYPE
  369.     SYNTAX      Integer32 (0..86400)
  370.     UNITS       "seconds"
  371.     MAX-ACCESS  read-create
  372.     STATUS      current
  373.     DESCRIPTION
  374.      "Sampling interval for objects in this expression with
  375.      expObjectSampleType 'deltaValue'.
  376.      This object has no effect if the the expression has no
  377.      deltaValue objects.
  378.      A value of 0 indicates no automated sampling.  In this case
  379.      the delta is the difference from the last time the expression
  380.      was evaluated.  Note that this is subject to unpredictable
  381.      delta times in the face of retries or multiple managers.
  382.      A value greater than zero is the number of seconds between
  383.      automated samples.
  384.      Until the delta interval has expired once the delta for the
  385.      object is effectively not instantiated and evaluating
  386.      the expression has results as if the object itself were not
  387.      instantiated.
  388.      Note that delta values potentially consume large amounts of
  389.      system CPU and memory.  Delta state and processing must
  390.      continue constantly even if the expression is not being used.
  391.      That is, the expression is being evaluated every delta interval,
  392.      even if no application is reading those values.  For wildcarded
  393.      objects this can be substantial overhead.
  394.      Note that delta intervals, external expression value sampling
  395.      intervals and delta intervals for expressions within other
  396.      expressions can have unusual interactions as they are impossible
  397.      to synchronize accurately.  In general one interval embedded
  398.      below another must be enough shorter that the higher sample
  399.      sees relatively smooth, predictable behavior.  So, for example,
  400.      to avoid the higher level getting the same sample twice, the
  401.      lower level should sample at least twice as fast as the higher
  402.      level does."
  403.     DEFVAL      { 0 }
  404.     ::= { expExpressionEntry 6 }
  405. expExpressionPrefix OBJECT-TYPE
  406.     SYNTAX      OBJECT IDENTIFIER
  407.     MAX-ACCESS  read-only
  408.     STATUS      current
  409.     DESCRIPTION
  410.      "An object prefix to assist an application in determining
  411.      the instance indexing to use in expValueTable, relieving the
  412.      application of the need to scan the expObjectTable to
  413.      determine such a prefix.
  414.      See expObjectTable for information on wildcarded objects.
  415.      If the expValueInstance portion of the value OID may
  416.      be treated as a scalar (that is, normally, 0) the value of
  417.      expExpressionPrefix is zero length, that is, no OID at all.
  418.      Note that zero length implies a null OID, not the OID 0.0.
  419.      Otherwise, the value of expExpressionPrefix is the expObjectID
  420.      value of any one of the wildcarded objects for the expression.
  421.      This is sufficient, as the remainder, that is, the instance
  422.      fragment relevant to instancing the values, must be the same for
  423.      all wildcarded objects in the expression."
  424.     ::= { expExpressionEntry 7 }
  425. expExpressionErrors OBJECT-TYPE
  426.     SYNTAX      Counter32
  427.     MAX-ACCESS  read-only
  428.     STATUS      current
  429.     DESCRIPTION
  430.      "The number of errors encountered while evaluating this
  431.      expression.
  432.      Note that an object in the expression not being accessible,
  433.      is not considered an error. An example of an inaccessible
  434.      object is when the object is excluded from the view of the
  435.      user whose security credentials are used in the expression
  436.      evaluation. In such cases, it is a legitimate condition
  437.      that causes the corresponding expression value not to be
  438.      instantiated."
  439.     ::= { expExpressionEntry 8 }
  440. expExpressionEntryStatus OBJECT-TYPE
  441.     SYNTAX      RowStatus
  442.     MAX-ACCESS  read-create
  443.     STATUS      current
  444.     DESCRIPTION
  445.      "The control that allows creation and deletion of entries."
  446.     ::= { expExpressionEntry 9 }
  447. --
  448. -- Expression Error Table
  449. --
  450. expErrorTable OBJECT-TYPE
  451.     SYNTAX      SEQUENCE OF ExpErrorEntry
  452.     MAX-ACCESS  not-accessible
  453.     STATUS      current
  454.     DESCRIPTION
  455.      "A table of expression errors."
  456.     ::= { expDefine 2 }
  457. expErrorEntry OBJECT-TYPE
  458.     SYNTAX      ExpErrorEntry
  459.     MAX-ACCESS  not-accessible
  460.     STATUS      current
  461.     DESCRIPTION
  462.      "Information about errors in processing an expression.
  463.      Entries appear in this table only when there is a matching
  464.      expExpressionEntry and then only when there has been an
  465.      error for that expression as reflected by the error codes
  466.      defined for expErrorCode."
  467.     INDEX       { expExpressionOwner, expExpressionName }
  468.     ::= { expErrorTable 1 }
  469. ExpErrorEntry ::= SEQUENCE {
  470.     expErrorTime       TimeStamp,
  471.     expErrorIndex      Integer32,
  472.     expErrorCode       INTEGER,
  473.     expErrorInstance   OBJECT IDENTIFIER
  474. }
  475. expErrorTime OBJECT-TYPE
  476.     SYNTAX      TimeStamp
  477.     MAX-ACCESS  read-only
  478.     STATUS      current
  479.     DESCRIPTION
  480.      "The value of sysUpTime the last time an error caused a
  481.      failure to evaluate this expression."
  482.     ::= { expErrorEntry 1 }
  483. expErrorIndex OBJECT-TYPE
  484.     SYNTAX      Integer32
  485.     MAX-ACCESS  read-only
  486.     STATUS      current
  487.     DESCRIPTION
  488.      "The one-dimensioned character array index into
  489.      expExpression for where the error occurred.  The value
  490.      zero indicates irrelevance."
  491.     ::= { expErrorEntry 2 }
  492. expErrorCode OBJECT-TYPE
  493.     SYNTAX      INTEGER {
  494.           invalidSyntax(1),
  495.           undefinedObjectIndex(2),
  496.           unrecognizedOperator(3),
  497.           unrecognizedFunction(4),
  498.           invalidOperandType(5),
  499.           unmatchedParenthesis(6),
  500.           tooManyWildcardValues(7),
  501.           recursion(8),
  502.           deltaTooShort(9),
  503.           resourceUnavailable(10),
  504.           divideByZero(11)
  505.           }
  506.     MAX-ACCESS  read-only
  507.     STATUS      current
  508.     DESCRIPTION
  509.      "The error that occurred.  In the following explanations the
  510.      expected timing of the error is in parentheses.  'S' means
  511.      the error occurs on a Set request.  'E' means the error
  512.      occurs on the attempt to evaluate the expression either due to
  513.      Get from expValueTable or in ongoing delta processing.
  514.      invalidSyntax       the value sent for expExpression is not
  515.                     valid Expression MIB expression syntax
  516.                     (S)
  517.      undefinedObjectIndex     an object reference ($n) in
  518.                     expExpression does not have a matching
  519.                     instance in expObjectTable (E)
  520.      unrecognizedOperator     the value sent for expExpression held an
  521.                     unrecognized operator (S)
  522.      unrecognizedFunction     the value sent for expExpression held an
  523.                     unrecognized function name (S)
  524.      invalidOperandType  an operand in expExpression is not the
  525.                     right type for the associated operator
  526.                     or result (SE)
  527.      unmatchedParenthesis     the value sent for expExpression is not
  528.                     correctly parenthesized (S)
  529.      tooManyWildcardValues    evaluating the expression exceeded the
  530.                     limit set by
  531.                     expResourceDeltaWildcardInstanceMaximum
  532.                     (E)
  533.      recursion      through some chain of embedded
  534.                     expressions the expression invokes itself
  535.                     (E)
  536.      deltaTooShort       the delta for the next evaluation passed
  537.                     before the system could evaluate the
  538.                     present sample (E)
  539.      resourceUnavailable some resource, typically dynamic memory,
  540.                     was unavailable (SE)
  541.      divideByZero        an attempt to divide by zero occurred
  542.                     (E)
  543.      For the errors that occur when the attempt is made to set
  544.      expExpression Set request fails with the SNMP error code
  545.      'wrongValue'.  Such failures refer to the most recent failure to
  546.      Set expExpression, not to the present value of expExpression
  547.      which must be either unset or syntactically correct.
  548.      Errors that occur during evaluation for a Get* operation return
  549.      the SNMP error code 'genErr' except for 'tooManyWildcardValues'
  550.      and 'resourceUnavailable' which return the SNMP error code
  551.      'resourceUnavailable'."
  552.     ::= { expErrorEntry 3 }
  553. expErrorInstance OBJECT-TYPE
  554.     SYNTAX      OBJECT IDENTIFIER
  555.     MAX-ACCESS  read-only
  556.     STATUS      current
  557.     DESCRIPTION
  558.      "The expValueInstance being evaluated when the error
  559.      occurred.  A zero-length indicates irrelevance."
  560.     ::= { expErrorEntry 4 }
  561. --
  562. -- Object Table
  563. --
  564. expObjectTable OBJECT-TYPE
  565.     SYNTAX      SEQUENCE OF ExpObjectEntry
  566.     MAX-ACCESS  not-accessible
  567.     STATUS      current
  568.     DESCRIPTION
  569.      "A table of object definitions for each expExpression.
  570.      Wildcarding instance IDs:
  571.      It is legal to omit all or part of the instance portion for
  572.      some or all of the objects in an expression. (See the
  573.      DESCRIPTION of expObjectID for details.  However, note that
  574.      if more than one object in the same expression is wildcarded
  575.      in this way, they all must be objects where that portion of
  576.      the instance is the same.  In other words, all objects may be
  577.      in the same SEQUENCE or in different SEQUENCEs but with the
  578.      same semantic index value (e.g., a value of ifIndex)
  579.      for the wildcarded portion."
  580.     ::= { expDefine 3 }
  581. expObjectEntry OBJECT-TYPE
  582.     SYNTAX      ExpObjectEntry
  583.     MAX-ACCESS  not-accessible
  584.     STATUS      current
  585.     DESCRIPTION
  586.      "Information about an object.  An application uses
  587.      expObjectEntryStatus to create entries in this table while
  588.      in the process of defining an expression.
  589.      Values of read-create objects in this table may be
  590.      changed at any time."
  591.     INDEX       { expExpressionOwner, expExpressionName, expObjectIndex }
  592.     ::= { expObjectTable 1 }
  593. ExpObjectEntry ::= SEQUENCE {
  594.     expObjectIndex                     Unsigned32,
  595.     expObjectID                        OBJECT IDENTIFIER,
  596.     expObjectIDWildcard                TruthValue,
  597.     expObjectSampleType                INTEGER,
  598.     expObjectDeltaDiscontinuityID      OBJECT IDENTIFIER,
  599.     expObjectDiscontinuityIDWildcard   TruthValue,
  600.     expObjectDiscontinuityIDType       INTEGER,
  601.     expObjectConditional               OBJECT IDENTIFIER,
  602.     expObjectConditionalWildcard       TruthValue,
  603.     expObjectEntryStatus               RowStatus
  604. }
  605. expObjectIndex OBJECT-TYPE
  606.     SYNTAX      Unsigned32 (1..4294967295)
  607.     MAX-ACCESS  not-accessible
  608.     STATUS      current
  609.     DESCRIPTION
  610.      "Within an expression, a unique, numeric identification for an
  611.      object.  Prefixed with a dollar sign ('$') this is used to
  612.      reference the object in the corresponding expExpression."
  613.     ::= { expObjectEntry 1 }
  614. expObjectID OBJECT-TYPE
  615.     SYNTAX      OBJECT IDENTIFIER
  616.     MAX-ACCESS  read-create
  617.     STATUS      current
  618.     DESCRIPTION
  619.      "The OBJECT IDENTIFIER (OID) of this object.  The OID may be
  620.      fully qualified, meaning it includes a complete instance
  621.      identifier part (e.g., ifInOctets.1 or sysUpTime.0), or it
  622.      may not be fully qualified, meaning it may lack all or part
  623.      of the instance identifier.  If the expObjectID is not fully
  624.      qualified, then expObjectWildcard must be set to true(1).
  625.      The value of the expression will be multiple
  626.      values, as if done for a GetNext sweep of the object.
  627.      An object here may itself be the result of an expression but
  628.      recursion is not allowed.
  629.      NOTE:  The simplest implementations of this MIB may not allow
  630.      wildcards."
  631.     ::= { expObjectEntry 2 }
  632. expObjectIDWildcard  OBJECT-TYPE
  633.     SYNTAX      TruthValue
  634.     MAX-ACCESS  read-create
  635.     STATUS      current
  636.     DESCRIPTION
  637.         "A true value indicates the expObjecID of this row is a wildcard
  638.         object. False indicates that expObjectID is fully instanced.
  639.         If all expObjectWildcard values for a given expression are FALSE,
  640.         expExpressionPrefix will reflect a scalar object (i.e. will
  641.         be 0.0).
  642.         NOTE:  The simplest implementations of this MIB may not allow
  643.         wildcards."
  644.     DEFVAL      { false }
  645.     ::= { expObjectEntry 3 }
  646. expObjectSampleType OBJECT-TYPE
  647.     SYNTAX      INTEGER { absoluteValue(1), deltaValue(2),
  648.                           changedValue(3) }
  649.     MAX-ACCESS  read-create
  650.     STATUS      current
  651.     DESCRIPTION
  652.      "The method of sampling the selected variable.
  653.      An 'absoluteValue' is simply the present value of the object.
  654.      A 'deltaValue' is the present value minus the previous value,
  655.      which was sampled expExpressionDeltaInterval seconds ago.
  656.      This is intended primarily for use with SNMP counters, which are
  657.      meaningless as an 'absoluteValue', but may be used with any
  658.      integer-based value.
  659.      A 'changedValue' is a boolean for whether the present value is
  660.      different from the previous value.  It is applicable to any data
  661.      type and results in an Unsigned32 with value 1 if the object's
  662.      value is changed and 0 if not.  In all other respects it is as a
  663.      'deltaValue' and all statements and operation regarding delta
  664.      values apply to changed values.
  665.      When an expression contains both delta and absolute values
  666.      the absolute values are obtained at the end of the delta
  667.      period."
  668.     DEFVAL      { absoluteValue }
  669.     ::= { expObjectEntry 4 }
  670. sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }
  671. expObjectDeltaDiscontinuityID OBJECT-TYPE
  672.     SYNTAX      OBJECT IDENTIFIER
  673.     MAX-ACCESS  read-create
  674.     STATUS      current
  675.     DESCRIPTION
  676.      "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or
  677.      DateAndTime object that indicates a discontinuity in the value
  678.      at expObjectID.
  679.      This object is instantiated only if expObjectSampleType is
  680.      'deltaValue' or 'changedValue'.
  681.      The OID may be for a leaf object (e.g. sysUpTime.0) or may
  682.      be wildcarded to match expObjectID.
  683.      This object supports normal checking for a discontinuity in a
  684.      counter.  Note that if this object does not point to sysUpTime
  685.      discontinuity checking must still check sysUpTime for an overall
  686.      discontinuity.
  687.      If the object identified is not accessible no discontinuity
  688.      check will be made."
  689.     DEFVAL      { sysUpTimeInstance }
  690.     ::= { expObjectEntry 5 }
  691. expObjectDiscontinuityIDWildcard OBJECT-TYPE
  692.      SYNTAX      TruthValue
  693.      MAX-ACCESS  read-create
  694.      STATUS      current
  695.      DESCRIPTION
  696.      "A true value indicates the expObjectDeltaDiscontinuityID of
  697.      this row is a wildcard object.  False indicates that
  698.      expObjectDeltaDiscontinuityID is fully instanced.
  699.      This object is instantiated only if expObjectSampleType is
  700.      'deltaValue' or 'changedValue'.
  701.      NOTE:  The simplest implementations of this MIB may not allow
  702.      wildcards."
  703.     DEFVAL      { false }
  704.      ::= { expObjectEntry 6 }
  705. expObjectDiscontinuityIDType OBJECT-TYPE
  706.      SYNTAX      INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) }
  707.      MAX-ACCESS  read-create
  708.      STATUS      current
  709.      DESCRIPTION
  710.      "The value 'timeTicks' indicates the expObjectDeltaDiscontinuityID
  711.      of this row is of syntax TimeTicks.  The value 'timeStamp' indicates
  712.      syntax TimeStamp.  The value 'dateAndTime indicates syntax
  713.      DateAndTime.
  714.      This object is instantiated only if expObjectSampleType is
  715.      'deltaValue' or 'changedValue'."
  716.     DEFVAL      { timeTicks }
  717.      ::= { expObjectEntry 7 }
  718. expObjectConditional OBJECT-TYPE
  719.     SYNTAX      OBJECT IDENTIFIER
  720.     MAX-ACCESS  read-create
  721.     STATUS      current
  722.     DESCRIPTION
  723.      "The OBJECT IDENTIFIER (OID) of an object that overrides
  724.      whether the instance of expObjectID is to be considered
  725.      usable.  If the value of the object at expObjectConditional
  726.      is 0 or not instantiated, the object at expObjectID is
  727.      treated as if it is not instantiated.  In other words,
  728.      expObjectConditional is a filter that controls whether or
  729.      not to use the value at expObjectID.
  730.      The OID may be for a leaf object (e.g. sysObjectID.0) or may be
  731.      wildcarded to match expObjectID.  If expObject is wildcarded and
  732.      expObjectID in the same row is not, the wild portion of
  733.      expObjectConditional must match the wildcarding of the rest of
  734.      the expression.  If no object in the expression is wildcarded
  735.      but expObjectConditional is, use the lexically first instance
  736.      (if any) of expObjectConditional.
  737.      If the value of expObjectConditional is 0.0 operation is
  738.      as if the value pointed to by expObjectConditional is a
  739.      non-zero (true) value.
  740.      Note that expObjectConditional can not trivially use an object
  741.      of syntax TruthValue, since the underlying value is not 0 or 1."
  742.     DEFVAL      { zeroDotZero }
  743.     ::= { expObjectEntry 8 }
  744.  expObjectConditionalWildcard  OBJECT-TYPE
  745.      SYNTAX      TruthValue
  746.      MAX-ACCESS  read-create
  747.      STATUS      current
  748.      DESCRIPTION
  749.      "A true value indicates the expObjectConditional of this row is
  750.      a wildcard object. False indicates that expObjectConditional is
  751.      fully instanced.
  752.      NOTE: The simplest implementations of this MIB may not allow
  753.      wildcards."
  754.     DEFVAL      { false }
  755.      ::= { expObjectEntry 9 }
  756. expObjectEntryStatus OBJECT-TYPE
  757.     SYNTAX      RowStatus
  758.     MAX-ACCESS  read-create
  759.     STATUS      current
  760.     DESCRIPTION
  761.      "The control that allows creation/deletion of entries.
  762.      Objects in this table may be changed while
  763.      expObjectEntryStatus is in any state."
  764.     ::= { expObjectEntry 10 }
  765. --
  766. -- Expression Value Table
  767. --
  768. expValueTable OBJECT-TYPE
  769.     SYNTAX      SEQUENCE OF ExpValueEntry
  770.     MAX-ACCESS  not-accessible
  771.     STATUS      current
  772.     DESCRIPTION
  773.      "A table of values from evaluated expressions."
  774.     ::= { expValue 1 }
  775. expValueEntry OBJECT-TYPE
  776.     SYNTAX      ExpValueEntry
  777.     MAX-ACCESS  not-accessible
  778.     STATUS      current
  779.     DESCRIPTION
  780.      "A single value from an evaluated expression.  For a given
  781.      instance, only one 'Val' object in the conceptual row will be
  782.      instantiated, that is, the one with the appropriate type for
  783.      the value.  For values that contain no objects of
  784.      expObjectSampleType 'deltaValue' or 'changedValue', reading a
  785.      value from the table causes the evaluation of the expression
  786.      for that value.  For those that contain a 'deltaValue' or
  787.      'changedValue' the value read is as of the last sampling
  788.      interval.
  789.      If in the attempt to evaluate the expression one or more
  790.      of the necessary objects is not available, the corresponding
  791.      entry in this table is effectively not instantiated.
  792.      To maintain security of MIB information, when creating a new
  793.      row in this table, the managed system must record the security
  794.      credentials of the requester.  These security credentials are
  795.      the parameters necessary as inputs to isAccessAllowed from
  796.      [RFC2571]. When obtaining the objects that make up the
  797.      expression, the system must (conceptually) use isAccessAllowed to
  798.      ensure that it does not violate security.
  799.      The evaluation of that expression takes place under the
  800.      security credentials of the creator of its expExpressionEntry.
  801.      To maintain security of MIB information, expression evaluation must
  802.      take place using security credentials for the implied Gets of the
  803.      objects in the expression as inputs (conceptually) to
  804.      isAccessAllowed from the Architecture for Describing SNMP
  805.      Management Frameworks.  These are the security credentials of the
  806.      creator of the corresponding expExpressionEntry."
  807.     INDEX       { expExpressionOwner, expExpressionName,
  808.                   IMPLIED expValueInstance }
  809.     ::= { expValueTable 1 }
  810. ExpValueEntry ::= SEQUENCE {
  811.     expValueInstance          OBJECT IDENTIFIER,
  812.     expValueCounter32Val      Counter32,
  813.     expValueUnsigned32Val     Unsigned32,
  814.     expValueTimeTicksVal      TimeTicks,
  815.     expValueInteger32Val      Integer32,
  816.     expValueIpAddressVal      IpAddress,
  817.     expValueOctetStringVal    OCTET STRING,
  818.     expValueOidVal            OBJECT IDENTIFIER,
  819.     expValueCounter64Val      Counter64
  820. }
  821. expValueInstance OBJECT-TYPE
  822.     SYNTAX      OBJECT IDENTIFIER
  823.     MAX-ACCESS  not-accessible
  824.     STATUS      current
  825.     DESCRIPTION
  826.      "The final instance portion of a value's OID according to
  827.      the wildcarding in instances of expObjectID for the
  828.      expression.  The prefix of this OID fragment is 0.0,
  829.      leading to the following behavior.
  830.      If there is no wildcarding, the value is 0.0.0.  In other
  831.      words, there is one value which standing alone would have
  832.      been a scalar with a 0 at the end of its OID.
  833.      If there is wildcarding, the value is 0.0 followed by
  834.      a value that the wildcard can take, thus defining one value
  835.      instance for each real, possible value of the wildcard.
  836.      So, for example, if the wildcard worked out to be an ifIndex,
  837.      there is an expValueInstance for each applicable ifIndex."
  838.     ::= { expValueEntry 1 }
  839. expValueCounter32Val OBJECT-TYPE
  840.     SYNTAX      Counter32
  841.     MAX-ACCESS  read-only
  842.     STATUS      current
  843.     DESCRIPTION
  844.      "The value when expExpressionValueType is 'counter32'."
  845.     ::= { expValueEntry 2 }
  846. expValueUnsigned32Val OBJECT-TYPE
  847.     SYNTAX      Unsigned32
  848.     MAX-ACCESS  read-only
  849.     STATUS      current
  850.     DESCRIPTION
  851.      "The value when expExpressionValueType is 'unsigned32'."
  852.     ::= { expValueEntry 3 }
  853. expValueTimeTicksVal OBJECT-TYPE
  854.     SYNTAX      TimeTicks
  855.     MAX-ACCESS  read-only
  856.     STATUS      current
  857.     DESCRIPTION
  858.      "The value when expExpressionValueType is 'timeTicks'."
  859.     ::= { expValueEntry 4 }
  860. expValueInteger32Val OBJECT-TYPE
  861.     SYNTAX      Integer32
  862.     MAX-ACCESS  read-only
  863.     STATUS      current
  864.     DESCRIPTION
  865.      "The value when expExpressionValueType is 'integer32'."
  866.     ::= { expValueEntry 5 }
  867. expValueIpAddressVal OBJECT-TYPE
  868.     SYNTAX      IpAddress
  869.     MAX-ACCESS  read-only
  870.     STATUS      current
  871.     DESCRIPTION
  872.      "The value when expExpressionValueType is 'ipAddress'."
  873.     ::= { expValueEntry 6 }
  874. expValueOctetStringVal OBJECT-TYPE
  875.     SYNTAX      OCTET STRING -- (SIZE (0..65536))
  876.     MAX-ACCESS  read-only
  877.     STATUS      current
  878.     DESCRIPTION
  879.      "The value when expExpressionValueType is 'octetString'."
  880.     ::= { expValueEntry 7 }
  881. expValueOidVal OBJECT-TYPE
  882.     SYNTAX      OBJECT IDENTIFIER
  883.     MAX-ACCESS  read-only
  884.     STATUS      current
  885.     DESCRIPTION
  886.      "The value when expExpressionValueType is 'objectId'."
  887.     ::= { expValueEntry 8 }
  888. expValueCounter64Val OBJECT-TYPE
  889.     SYNTAX      Counter64
  890.     MAX-ACCESS  read-only
  891.     STATUS      current
  892.     DESCRIPTION
  893.      "The value when expExpressionValueType is 'counter64'."
  894.     ::= { expValueEntry 9 }
  895. --
  896. -- Conformance
  897. --
  898. dismanExpressionMIBConformance OBJECT IDENTIFIER ::=
  899.     { dismanExpressionMIB 3 }
  900. dismanExpressionMIBCompliances OBJECT IDENTIFIER ::=
  901.     { dismanExpressionMIBConformance 1 }
  902. dismanExpressionMIBGroups      OBJECT IDENTIFIER ::=
  903.     { dismanExpressionMIBConformance 2 }
  904. -- Compliance
  905. dismanExpressionMIBCompliance MODULE-COMPLIANCE
  906.      STATUS current
  907.      DESCRIPTION
  908.           "The compliance statement for entities which implement
  909.           the Expression MIB."
  910.      MODULE    -- this module
  911.           MANDATORY-GROUPS {
  912.                dismanExpressionResourceGroup,
  913.                dismanExpressionDefinitionGroup,
  914.                dismanExpressionValueGroup
  915.           }
  916.      OBJECT         expResourceDeltaMinimum
  917.      SYNTAX         Integer32 (-1 | 60..600)
  918.      DESCRIPTION
  919.           "Implementation need not allow deltas or it may
  920.           implement them and restrict them to higher values."
  921.      OBJECT         expObjectSampleType
  922.      WRITE-SYNTAX   INTEGER { absoluteValue(1) }
  923.      DESCRIPTION
  924.           "Implementation may disallow deltas calculation or
  925.           change detection."
  926.      OBJECT         expObjectIDWildcard
  927.      WRITE-SYNTAX   INTEGER { false(2) }
  928.      DESCRIPTION
  929.           "Implementation may allow wildcards."
  930.      OBJECT         expObjectDiscontinuityIDWildcard
  931.      WRITE-SYNTAX   INTEGER { false(2) }
  932.      DESCRIPTION
  933.           "Implementation need not allow wildcards."
  934.      OBJECT          expObjectConditionalWildcard
  935.      WRITE-SYNTAX   INTEGER { false(2) }
  936.      DESCRIPTION
  937.           "Implementation need not allow deltas wildcards."
  938.      ::= { dismanExpressionMIBCompliances 1 }
  939. -- Units of Conformance
  940. dismanExpressionResourceGroup OBJECT-GROUP
  941.      OBJECTS {
  942.           expResourceDeltaMinimum,
  943.           expResourceDeltaWildcardInstanceMaximum,
  944.           expResourceDeltaWildcardInstances,
  945.           expResourceDeltaWildcardInstancesHigh,
  946.           expResourceDeltaWildcardInstanceResourceLacks
  947.      }
  948.      STATUS current
  949.      DESCRIPTION
  950.           "Expression definition resource management."
  951.      ::= { dismanExpressionMIBGroups 1 }
  952. dismanExpressionDefinitionGroup OBJECT-GROUP
  953.      OBJECTS {
  954.           expExpression,
  955.           expExpressionValueType,
  956.           expExpressionComment,
  957.           expExpressionDeltaInterval,
  958.           expExpressionPrefix,
  959.           expExpressionErrors,
  960.           expExpressionEntryStatus,
  961.           expErrorTime,
  962.           expErrorIndex,
  963.           expErrorCode,
  964.           expErrorInstance,
  965.           expObjectID,
  966.           expObjectIDWildcard,
  967.           expObjectSampleType,
  968.           expObjectDeltaDiscontinuityID,
  969.           expObjectDiscontinuityIDWildcard,
  970.           expObjectDiscontinuityIDType,
  971.           expObjectConditional,
  972.           expObjectConditionalWildcard,
  973.           expObjectEntryStatus
  974.      }
  975.      STATUS current
  976.      DESCRIPTION
  977.           "Expression definition."
  978.      ::= { dismanExpressionMIBGroups 2 }
  979. dismanExpressionValueGroup OBJECT-GROUP
  980.      OBJECTS {
  981.           expValueCounter32Val,
  982.           expValueUnsigned32Val,
  983.           expValueTimeTicksVal,
  984.           expValueInteger32Val,
  985.           expValueIpAddressVal,
  986.           expValueOctetStringVal,
  987.           expValueOidVal,
  988.           expValueCounter64Val
  989.      }
  990.      STATUS current
  991.      DESCRIPTION
  992.           "Expression value."
  993.      ::= { dismanExpressionMIBGroups 3 }
  994. END