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