smilint output for ./CHECK-MIB


Message Severities
SeverityCount
error1
warning2
Message Types
TypeCount
group-objects-notification (error)1
type-without-format (warning)2

Messages:

CHECK-MIB

   1: -- extracted from draft-nunzi-check-mib-00.txt
   2: -- at Tue Dec 23 06:16:17 2003
   3: 
   4:    CHECK-MIB DEFINITIONS ::= BEGIN
   5: 
   6:    IMPORTS
   7:        MODULE-IDENTITY, OBJECT-TYPE,
   8:        NOTIFICATION-TYPE, mib-2,
   9:        Unsigned32, TimeTicks, zeroDotZero
  10:            FROM SNMPv2-SMI                  -- RFC2578
  11: 
  12:        StorageType, RowStatus,
  13:        TimeInterval, TimeStamp,
  14:        TEXTUAL-CONVENTION
  15:            FROM SNMPv2-TC                   -- RFC2579
  16: 
  17:        MODULE-COMPLIANCE, OBJECT-GROUP
  18:            FROM SNMPv2-CONF                 -- RFC2580
  19: 
  20:        SnmpAdminString
  21:            FROM SNMP-FRAMEWORK-MIB;         -- RFC3411
  22: 
  23:    checkMIB MODULE-IDENTITY
  24:        LAST-UPDATED "200312191313Z"  -- December 19, 2003
  25:        ORGANIZATION "IETF Distributed Management man Working Group"
  26:        CONTACT-INFO
  27:           "Editor:
  28:              Giorgio Nunzi
  29:              NEC Europe Ltd.
  30:              Network Laboratories
  31:              Kurfuersten-Anlage 36
  32:              69221 Heidelberg
  33:              Germany
  34:              Tel: +49 6221 90511-39
  35:              Email: nunzi@netlab.nec.de"
  36:        DESCRIPTION
  37:            "This MIB module defines a set of objects that allow
  38:             to define a health check procedure on a managed node.
  39:             The health check procedure is performed through a sequence
  40:             of simple comparison operations on some managed objects
  41:             against a control value.  The result of the health check
  42:             is accumulated into a single managed object that can be
  43:             read by a manager to discover the status of the whole
  44:             set of managed objects instead of retrieving all the single
  45:             values controlled during the health check procedure.
  46: 
  47:             The main purpose of the CHECK-MIB is increasing scalability
  48:             of network management applications by moving check
  49:             operations from the management station to managed nodes.
  50: 
  51:             There are five groups of managed objects defined
  52:             by this MIB module:
  53:               - objects describing capabilities
  54:                 of the CHECK-MIB implementation;
  55:               - objects controlling the operational
  56:                 status of the health check procedure;
  57:               - objects defining the checks in
  58:                 the checkResultTable;
  59:               - objects defining the operations for each of
  60:                 the configured checks in the checkRuleTable;
  61:               - objects providing information about
  62:                 failed checks."
  63:        REVISION    "200312191313Z"  -- December 19, 2003
  64:        DESCRIPTION "Initial version"
  65:        ::= { mib-2 7777 }
  66:    -- 7777 to be assigned by IANA.
  67: 
  68:    RuleValue ::= TEXTUAL-CONVENTION
  69:        DISPLAY-HINT "1x"
  70:        STATUS      current
  71:        DESCRIPTION
  72:            "The control value compared with the value of a monitored
  73:             object.  This value encodes all the object types
  74:             defined by the SMIv2, except the Opaque, with the
  75:             following rules:
  76:             - INTEGER, Integer32, Unsigned32, TimeTicks, Counter32,
  77:               Gauge32: the integer value is encoded with 4 octets in
  78:               network-byte order;
  79:             - Counter64: the integer value is encoded with 8 octets
  80:               in network-byte order;
  81:             - IpAddress: the address value is encoded with a 4 in
  82:               network-byte order;
  83:             - OBJECT IDENTIFIER: each sub-identifier is encoded with
  84:               4 octets in network-order and the whole OID is encoded
  85:               as a sequence of sub-identifiers starting from the
  86:               top-level;
  87:             - BITS: all the named bits in the bitstring, commencing
  88:               with the first bit and proceeding to the last bit, are
  89:               placed in bits 8 (high order bit) to 1 (low order bit)
  90:               of the first octet, followed by bits 8 to 1 of each
  91:               subsequent octet in turn, followed by as many bits as
  92:               are needed of the final subsequent octet, commencing
  93:               with bit 8.  Remaining bits, if any, of the final octet
  94:               are set to zero on generation and ignored while
  95:               performing a check;
  96:             - OCTET STRING: the string is encoded as it is."
  97:        SYNTAX OCTET STRING
  98: 
  99:    SeverityConfigured ::= TEXTUAL-CONVENTION
  99: warning - warning: type `SeverityConfigured' has no format specification
 100:        STATUS      current
 101:        DESCRIPTION
 102:            "The severity value measures the gravity of a failure of a
 103:             rule or a result. A low value indicates a minor failure,
 104:             while a high value indicates a sever failure. The scale of
 105:             the severity is arbitrary chosen by the manager
 106:             application.
 107:             This textual convention represents the value of a severity
 108:             which is configured by the manager."
 109:        SYNTAX Unsigned32 (0..4294967293)
 110: 
 111:    SeverityReturned ::= TEXTUAL-CONVENTION
 111: warning - warning: type `SeverityReturned' has no format specification
 112:        STATUS      current
 113:        DESCRIPTION
 114:            "The severity value measures the gravity of a failure of a
 115:             rule or a result. A low value indicates a minor failure,
 116:             while a high value indicates a sever failure. The scale of
 117:             the severity is arbitrary chosen by the manager
 118:             application.
 119:             This textual convention represents the value of a severity
 120:             which is set by the device after the performance of a rule.
 121:             If the rule has been correctly performed, the value is
 122:             equal to the severity configured for the rule.  If the rule
 123:             has not been performed because the monitored object
 124:             couldn't be accessed, then this values is set to
 125:             4294967295.  If the rule has not been performed due to a
 126:             lack of resources, then this value is set to 4294967294."
 127:        SYNTAX Unsigned32
 128: 
 129:    --
 130:    -- main components of this MIB module
 131:    --
 132: 
 133:    checkObjects       OBJECT IDENTIFIER ::= { checkMIB 1 }
 134:    checkNotifications OBJECT IDENTIFIER ::= { checkMIB 2 }
 135:    checkConformance   OBJECT IDENTIFIER ::= { checkMIB 3 }
 136: 
 137:    --
 138:    -- Capabilities group
 139:    --
 140:    -- The capabilities group contains a set of managed
 141:    -- objects describing the capabilities of the CHECK-MIB
 142:    -- implementation.
 143:    --
 144: 
 145:    checkCapabilities        OBJECT IDENTIFIER ::= { checkObjects 1 }
 146: 
 147:    checkCapabMinCheckInterval OBJECT-TYPE
 148:        SYNTAX      TimeTicks
 149:        UNITS       "centi-seconds"
 150:        MAX-ACCESS  read-only
 151:        STATUS      current
 152:        DESCRIPTION
 153:            "The minimum interval that can be scheduled between two
 154:             performances of the same check defined in the
 155:             checkResultTable using the object checkResultInterval.
 156: 
 157:             This value is the minimum value allowed for the object
 158:             checkResultInterval of the checkResultTable."
 159:        ::= { checkCapabilities 1 }
 160: 
 161:    checkCapabMaxResults OBJECT-TYPE
 162:        SYNTAX      Unsigned32
 163:        MAX-ACCESS  read-only
 164:        STATUS      current
 165:        DESCRIPTION
 166:            "The maximum number of entries supported in the
 167:             checkResultTable.  A value of 0 indicates that
 168:             there is no fixed limitation.
 169: 
 170:             Creating a new row in the checkResultTable with the
 171:             object checkResultRowStatus after the maximum number
 172:             of entries supported, leads to a resourceUnavailable
 173:             error."
 174:        ::= { checkCapabilities 2 }
 175: 
 176:    checkCapabMaxRules OBJECT-TYPE
 177:        SYNTAX      Unsigned32
 178:        MAX-ACCESS  read-only
 179:        STATUS      current
 180:        DESCRIPTION
 181:            "The maximum number of entries supported in the
 182:            checkRuleTable.  A value of 0 indicates that there
 183:            is no fixed limitation.
 184: 
 185:            Creating a new row in the checkRuleTable with the
 186:            object checkRuleRowStatus after the maximum number
 187:            of entries supported, leads to a resourceUnavailable
 188:            error."
 189:        ::= { checkCapabilities 3 }
 190: 
 191:    --
 192:    -- Control group
 193:    --
 194:    -- The control group contains managed objects controlling
 195:    -- the operational status of the check MIB implementation.
 196:    --
 197: 
 198:    checkControl       OBJECT IDENTIFIER ::= { checkObjects 2 }
 199: 
 200:    checkCtrlAdminStatus OBJECT-TYPE
 201:        SYNTAX  INTEGER {
 202:                    up(1),       -- performing checks
 203:                    silent(2),   -- no notifications sent
 204:                    down(3)      -- all checks disabled
 205:                }
 206:        MAX-ACCESS  read-write
 207:        STATUS      current
 208:        DESCRIPTION
 209:           "The desidered state of the checking engine of the
 210:            Check MIB implementation.  Setting this object to up(1)
 211:            indicates a request for performing all checks as defined
 212:            in the checkResultTable and the checkRuleTable performed.
 213:            Setting this object to silent(2) indicates that all the
 214:            checks defined in checkResultTable must be performed, but
 215:            no notification must be sent by the Check MIB
 216:            implementation.  Setting this object to down(3) indicates
 217:            a request for performing o more tests.
 218: 
 219:            When retrieved, the object returns the last value written
 220:            to it, except after system boot when it returns the value
 221:            up(1)."
 222:            DEFVAL { up }
 223:        ::= { checkControl 1 }
 224: 
 225:    checkCtrlOperStatus OBJECT-TYPE
 226:        SYNTAX  INTEGER {
 227:                    up(1),       -- performing checks
 228:                    silent(2),   -- no notifications sent
 229:                    down(3),     -- all checks disabled
 230:                    flushing(4)  -- finishing checks already started
 231:                }
 232:        MAX-ACCESS  read-only
 233:        STATUS      current
 234:        DESCRIPTION
 235:           "The current operational state of the Check MIB
 236:            implementation. The up(1) state indicates that all checks
 237:            defined in the checkResultTable and the checkRuleTable are
 238:            performed.  The silent(2) state indicates that all checks
 239:            are performed as defined in the checkResultTable and the
 240:            checkRuleTable, but no notification is sent by the Check
 241:            MIB implementation.  The down(3) state indicates that no
 242:            check is performed.  The flushing(4) state indicates that
 243:            the checkCtrlAdminStatus has been set to down(3) and the
 244:            managed node is completing the performance of checks that
 245:            were scheduled before checkCtrlAdminStatus was set to
 246:            down(3).  If the value of checkCtrlAdminStatus does not
 247:            change again before these checks are completed, then the
 248:            value of checkCtrlOperStatus will change to down(3) after
 249:            the checks are completed.
 250: 
 251:            After a system re-initialization, the Check MIB
 252:            implementation starts up with this object set to up(1)."
 253:        ::= { checkControl 2 }
 254: 
 255:    --
 256:    -- Result group
 257:    --
 258:    -- The Result group contains the objects to define the checks
 259:    -- performed on the managed node.  The checks are organized
 260:    -- in the checkResultTable.
 261:    --
 262: 
 263:    checkResultTable OBJECT-TYPE
 264:        SYNTAX      SEQUENCE OF CheckResultEntry
 265:        MAX-ACCESS  not-accessible
 266:        STATUS      current
 267:        DESCRIPTION
 268:            "This table contains the definitions of the checks
 269:             to be performed by the Check MIB implementation.
 270: 
 271:             Each row defines one check and contains the
 272:             parameters controlling the performance of the check
 273:             as well as the result of the check.
 274: 
 275:             The operations performed by each check are defined as
 276:             rules in the checkRuleTable."
 277:        ::= { checkObjects 3 }
 278: 
 279:    checkResultEntry OBJECT-TYPE
 280:        SYNTAX      CheckResultEntry
 281:        MAX-ACCESS  not-accessible
 282:        STATUS      current
 283:        DESCRIPTION
 284:            "An entry defining a check.  Each entry is indexed by
 285:            the string checkResultName, which represents the name
 286:            of the check.  An entry can be created with the object
 287:            checkResultRowStatus only with the createAndWait operation.
 288:            A check is never performed if its entry is in the
 289:            notInService status.   Objects in an entry marked as
 290:            read-create can be modified only when the entry is in
 291:            notInService status."
 292:        INDEX { checkResultName }
 293:        ::= { checkResultTable 1 }
 294: 
 295:    CheckResultEntry ::= SEQUENCE {
 296:        checkResultName                 SnmpAdminString,
 297:        checkResultSeverity             SeverityReturned,
 298:        checkResultSize                 Unsigned32,
 299:        checkResultTime                 TimeStamp,
 300:        checkResultInterval             TimeInterval,
 301:        checkResultSeverityThreshold    SeverityConfigured,
 302:        checkResultStorageType          StorageType,
 303:        checkResultRowStatus            RowStatus
 304:    }
 305: 
 306:    checkResultName OBJECT-TYPE
 307:        SYNTAX      SnmpAdminString (SIZE (0..32))
 308:        MAX-ACCESS  not-accessible
 309:        STATUS      current
 310:        DESCRIPTION
 311:            "A name describing the check.  Since the name serves as
 312:             table index, it must be unique for each row in the table.
 313:             The name of a check is chosen arbitrary by the manager
 314:             creating the row in the checkResultTable, but some
 315:             suggestions are given to offer a common semantic
 316:             among different managers.
 317: 
 318:             The name should give a brief description of the check
 319:             defined in the row.  In particular it is recommended
 320:             that the name indicates:
 321:               - the name of the manager who defined the row.
 322:               - a label describing the check."
 323:        ::= { checkResultEntry 1 }
 324: 
 325:    checkResultSeverity OBJECT-TYPE
 326:        SYNTAX      SeverityReturned
 327:        MAX-ACCESS  read-only
 328:        STATUS      current
 329:        DESCRIPTION
 330:            "Each time the check defined by this entry (and the
 331:             corresponding entries of the checkRuleTable) is performed,
 332:             this object is set to to the maximum value of all
 333:             checkRuleSeverity objects in corresponding entries of the
 334:             checkRuleTable for which the check failed.  If the check
 335:             passes for all corresponding rules, then the value of
 336:             object checkResultSeverity is 0.
 337: 
 338:             If the object checkResultInterval contains the value 0,
 339:             then the check is performed when the value of
 340:             checkResultSeverity is retrieved by a manager.  If the
 341:             object checkResultInterval contains a value greater than 0,
 342:             then the check is performed automatically by the managed
 343:             node and a read access by a manager just returns the value
 344:             computed at the last scheduled check.
 345: 
 346:             Each time object checkResultSeverity is set, the value of
 347:             object checkResultTime in the corresponding entry is
 348:             set to the current time, and the value of object
 349:             checkResultSize is set to the number of corresponding
 350:             entries in the checkRuleTable for which the check failed.
 351: 
 352:             If no check has been performed so far, then the value
 353:             of this object is 0."
 354:        ::= { checkResultEntry 2 }
 355: 
 356:    checkResultSize OBJECT-TYPE
 357:        SYNTAX      Unsigned32
 358:        MAX-ACCESS  read-only
 359:        STATUS      current
 360:        DESCRIPTION
 361:            "The number of rules defined in corresponding entries of the
 362:             checkFailureTable for which the check failed when it was
 363:             performed last.
 364: 
 365:             If no check has been performed so far, then the value
 366:             of this object is 0."
 367:        ::= { checkResultEntry 3 }
 368: 
 369:    checkResultTime OBJECT-TYPE
 370:        SYNTAX      TimeStamp
 371:        MAX-ACCESS  read-only
 372:        STATUS      current
 373:        DESCRIPTION
 374:            "A timestamp indicating the time when the last performance
 375:             of the check defined in this row was completed.
 376: 
 377:             If no check has been performed so far, then the value of
 378:             this object is 0.  Note that 0 is a valid timestamp."
 379:        ::= { checkResultEntry 4 }
 380: 
 381:    checkResultInterval OBJECT-TYPE
 382:        SYNTAX      TimeInterval
 383:        UNITS       "centi-seconds"
 384:        MAX-ACCESS  read-create
 385:        STATUS      current
 386:        DESCRIPTION
 387:            "The interval between two performances of the check
 388:             defined in this row.
 389: 
 390:             When this object is set to a value greater than 0,
 391:             then the check is performed regularly with the number
 392:             of centi-seconds indicated by this object between two
 393:             performances.  When this object is successfully set
 394:             to a value greater than 0, then the check is not
 395:             performed immediately. The first check is performed
 396:             after the number of centi-seconds specified by the
 397:             new value of the object.  If a performance is scheduled
 398:             to start before the previous one  has been completed,
 399:             then the previous check will be completed and the
 400:             scheduled check will be skipped.
 401: 
 402:             If the number of this object is 0, then the check is
 403:             performed only on request when the value of the object
 404:             checkResultSeverity is retrieved by a manager.
 405: 
 406:             A set operation on this object may lead to an
 407:             inconsistentValue error in two cases:
 408:             - if the vale passed is greater than 0 but less
 409:               than the value of checkCapabMinCheckInterval;
 410:             - if the value passed is greater than 0 and the
 411:               check defined in this row includes rules with
 412:               delta operations."
 413:        DEFVAL { 0 }
 414:        ::= { checkResultEntry 5 }
 415: 
 416:    checkResultSeverityThreshold OBJECT-TYPE
 417:        SYNTAX      SeverityConfigured
 418:        MAX-ACCESS  read-only
 419:        STATUS      current
 420:        DESCRIPTION
 421:            "This object serves for sending notifications in
 422:             case of failures occurred in the check defined
 423:             in this row.
 424: 
 425:             If the value of this object is set to 0, then no
 426:             notification is sent to the manager even if some
 427:             rule defined for the check fails.
 428:             Otherwise, if the performance of a check leads to
 429:             a value of the object checkResultSeverity that is
 430:             equal to or greater than the value of the object
 431:             checkResultSeverityThreshold, then a notification
 432:             is sent.  The notification is an instance of
 433:             checkResultFailed."
 434:        DEFVAL { 0 }
 435:        ::= { checkResultEntry 6 }
 436: 
 437:    checkResultStorageType OBJECT-TYPE
 438:        SYNTAX      StorageType
 439:        MAX-ACCESS  read-create
 440:        STATUS      current
 441:        DESCRIPTION
 442:            "The value of this object indicates the storage type
 443:             of this entry in the checkResultTable and of all
 444:             corresponding entries in the checkRuleTable.  The value
 445:             of this object indicates whether the entries are stored
 446:             in volatile memory and lost upon reboot or if they
 447:             are backed up by non-volatile or permanent storage.
 448: 
 449:             If checkResultStorageType has the value permanent(4),
 450:             then all objects whose MAX-ACCESS value is read-write
 451:             can be modified, but the row cannot be deleted.  All the
 452:             objects in corresponding entries of the checkRuleTable
 453:             whose MAX-ACCESS is read-create are instead read-only with
 454:             the exception of the checkRuleRowStatus.
 455:             Attempts to set this object to permanent(4) will always
 456:             fail with an inconsistentValue error."
 457:        DEFVAL { volatile }
 458:        ::= { checkResultEntry 7 }
 459: 
 460:    checkResultRowStatus OBJECT-TYPE
 461:        SYNTAX      RowStatus
 462:        MAX-ACCESS  read-create
 463:        STATUS      current
 464:        DESCRIPTION
 465:            "This object allows to create and delete rows in the
 466:             table. The value createAndGo(4) is not allowed and an
 467:             wrongValue error is returned when attempting to set it.
 468: 
 469:             Objects of the same row can be modified only when
 470:             checkResultRowStatus has the notInService(2) value and
 471:             set operations on objects of a row in active(1) status
 472:             result to inconsistentValue.  A change of the value of the
 473:             checkResultRowStatus object is propagated to the
 474:             checkRuleRowStatus of all the related entries in the
 475:             checkRuleTable (those indexed by the same checkResultName);
 476:             if the change of the value of a checkRuleRowStatus object
 477:             results in an inconsistentValue error, then this error is
 478:             returned to the manager while setting the value of this
 479:             checkResultRowStatus.
 480: 
 481:             An attempt to set the value of this object to active(1),
 482:             causes the following actions:
 483:             - all the related entries in the checkRuleTable become
 484:               active; if an attempt to activate an entry results in
 485:               an inconsistentValue error, then this error is returned
 486:               to the manager and further action is taken;
 487:             - all the objects of this row become read-only, with the
 488:               exception of checkResultRowStatus;
 489:             - if the value of checkResultInterval is greater than 0,
 490:               then the timer to schedule the performances of the
 491:               check starts immediately, but the first check will be
 492:               performed only but after the time specified by
 493:               checkResultInterval; for rules defining delta operations
 494:               the values of managed objects to be checked are read
 495:               immediately, so that delta operations can be computed at
 496:               the first scheduled check.
 497:             - if the value of checkResultInterval is equal to 0, then
 498:               retrieving the value of checkResultSeverity forces the
 499:               performance of the check.
 500:             When a row is put in the notInService status, then the
 501:             following actions are taken:
 502:             - all the objects of the row marked as read-create can be
 503:               modified;
 504:             - all the related entries in the checkRuleTable become
 505:               notInService;
 506:             - all scheduled future checks are canceled.
 507:             - retrieving the value of checkResultSeverity returns
 508:               always the value computed at the last check.
 509:             When a row is deleted, then if an alarm was configured, it
 510:             is removed, and all the related entries in checkRuleTable
 511:             are deleted (eventually freeing the resources allocated
 512:             for delta operations defined by those rules).
 513: 
 514:             Creating a new row when the table reached the maximum
 515:             number of entries defined in checkCapabMaxResults
 516:             results in a resourceUnavailable error."
 517:        ::= { checkResultEntry 8 }
 518:    --
 519:    -- Check Rule group
 520:    --
 521:    -- The Rule group contains the objects to define the operations
 522:    -- performed for each check.  The operations are organized
 523:    -- in the checkRuleTable.
 524:    --
 525: 
 526:    checkRuleTable OBJECT-TYPE
 527:        SYNTAX      SEQUENCE OF CheckRuleEntry
 528:        MAX-ACCESS  not-accessible
 529:        STATUS      current
 530:        DESCRIPTION
 531:            "This table contains the definitions of the operations
 532:             performed for checks defined in the checkResultTable.
 533: 
 534:             Each row defines an operation on the value of a managed
 535:             object.  The operation consists in a comparison of the
 536:             value of the managed object with a control value specified
 537:             in checkRuleValue.  The relationship expected between the
 538:             two values is indicated by checkRuleOperation.
 539:             It is possible to reference in a single rule either a
 540:             single instances object or all the instance of a columnar
 541:             object of a table.
 542: 
 543:             For each operation, a severity is set which indicates
 544:             the gravity of the failure of the comparison operation.
 545: 
 546:             The storage type of entries in this table is determined
 547:             by the value of object checkResultStorageType in the
 548:             corresponding entry of the checkResultTable."
 549:        ::= { checkObjects 4 }
 550: 
 551:    checkRuleEntry OBJECT-TYPE
 552:        SYNTAX      CheckRuleEntry
 553:        MAX-ACCESS  not-accessible
 554:        STATUS      current
 555:        DESCRIPTION
 556:            "An entry defining a rule for a check defined
 557:             in the checkResultTable.  Each entry is indexed by:
 558:             1. the checkResultName of the check which includes
 559:                the operation defined by the entry;
 560:             2. the string checkRuleName, which represents the
 561:                name of the operation.
 562:             An entry can be created with the object
 563:             checkResultRowStatus only with the createAndWait operation.
 564:             A rule is never considered in the performance of the
 565:             check defined in the related checkResultEntry, if its
 566:             entry is in the notInService status.   Objects in an entry
 567:             can be modified only when the entry is in
 568:             notInService status."
 569:        INDEX { checkResultName, checkRuleName }
 570:        ::= { checkRuleTable 1 }
 571: 
 572:    CheckRuleEntry ::= SEQUENCE {
 573:        checkRuleName              SnmpAdminString,
 574:        checkRuleOid               OBJECT IDENTIFIER,
 575:        checkRuleValue             RuleValue,
 576:        checkRuleOperation         INTEGER,
 577:        checkRuleSeverity          SeverityConfigured,
 578:        checkRuleRowStatus         RowStatus
 579:    }
 580: 
 581:    checkRuleName OBJECT-TYPE
 582:        SYNTAX      SnmpAdminString (SIZE (0..32))
 583:        MAX-ACCESS  not-accessible
 584:        STATUS      current
 585:        DESCRIPTION
 586:            "A name describing the rule.  Since the name serves as
 587:             table index coupled with the value of checkResultName,
 588:             it must be unique per each row in the table
 589:             inside the scope of checkResultName.
 590:             The name of a rule is chosen by the manager creating
 591:             the row, but some suggestions are given to offer a
 592:             common semantic between different managers.
 593: 
 594:             The name should give a brief description of the rule
 595:             defined in the row.  In particular it is recommended
 596:             that the name indicates the name of the managed object
 597:             controlled by the rule."
 598:        ::= { checkRuleEntry 2 }
 599: 
 600:    checkRuleOid OBJECT-TYPE
 601:        SYNTAX      OBJECT IDENTIFIER
 602:        MAX-ACCESS  read-create
 603:        STATUS      current
 604:        DESCRIPTION
 605:            "The OID indicating the managed object to be checked.
 606:             The OID must be:
 607:             - the OID of an instance object: in this case the
 608:               rule is applied to that object;
 609:             - the OID of a columnar object (missing of the instance
 610:               sub-identifier): in this case the rule is applied to all
 611:               the instances of the columnar object.
 612: 
 613:             The validity of the OID is verified when the manager tries
 614:             to activate the row, following these actions:
 615:             - the agent should try to read the value of the object
 616:               referenced by the OID (like a snmp get operation); if the
 617:               value is read, the OID refers to a valid instance object
 618:               and the type of the object should be registered inside
 619:               the agent;
 620:             - if the object is not available, then the agent should try
 621:               to read the next object in the lexicographical order (like
 622:               a snmp get next operation); if the OID returned is a child
 623:               node of the checkRuleOid, then the latter is assumed to be
 624:               a columnar object and the type of the object read is
 625:               stored inside the agent;
 626:             - if no object could be found or the OID returned is not a
 627:               leaf of checkRuleOid, then an inconsistentValue error is
 628:               return to the attempt of activating the row.
 629:             When setting the OID of a columnar object, at least one
 630:             instance object must exist at the moment of the activation
 631:             of the row, so that the validity test of OID passes and the
 632:             row is activated.
 633: 
 634:             If the OID references an instance object that is removed or
 635:             become inaccessible after the row has been activated, then
 636:             rule automatically fails with a severity equal to
 637:             4294967295.  If the OID value references a columnar object
 638:             and no instance exists after the first performance, then
 639:             the rule doesn't fail."
 640:        DEFVAL { zeroDotZero }
 641:        ::= { checkRuleEntry 3 }
 642: 
 643:    checkRuleValue OBJECT-TYPE
 644:        SYNTAX      RuleValue
 645:        MAX-ACCESS  read-create
 646:        STATUS      current
 647:        DESCRIPTION
 648:            "The control value compared to the value of the managed
 649:             object indicated by checkRuleOid.
 650: 
 651:             The control value encoded in this object must be consistent
 652:             with the type of the object referenced by the checkRuleOid.
 653:             The control value is considered inconsistent if:
 654:             - the object type is INTEGER, Unsigned32, TimeTicks,
 655:               Gauge32, Counter32, IpAddress and the size of the
 656:               checkRuleValue is different from 4;
 657:             - the object type is Counter64 and the size of the
 658:               checkRuleValue is different from 8;
 659:             - the object type is OBJECT IDENTIFIER and the size of the
 660:               checkRuleValue is not a multiple of 4.
 661: 
 662:             The consistency between the control value and the object
 663:             type is verified when the rule is activated; if the
 664:             consistency test fails, the attempt to active the row
 665:             results in an inconsistentValue error."
 666:        DEFVAL { "" }
 667:        ::= { checkRuleEntry 4 }
 668: 
 669:    checkRuleOperation OBJECT-TYPE
 670:        SYNTAX      INTEGER {
 671:                        noOperation(0),
 672:                        unequal(1), equal(2),
 673:                        less(3), lessOrEqual(4),
 674:                        greater(5), greaterOrEqual(6),
 675:                        delta(7)
 676:                    }
 677:        MAX-ACCESS  read-write
 678:        STATUS      current
 679:        DESCRIPTION
 680:            "The value of this object specifies the comparison
 681:             operation to be performed between the value of the
 682:             managed object indicated by checkRuleOid and the
 683:             value indicated by checkRuleValue.  Some operations
 684:             cannot be applied to all the types of object. If
 685:             the value of the checkRuleOperation is inconsistent
 686:             with the type of the object indicated by checkRuleOid,
 687:             then an attempt to activate the row results in an
 688:             inconsistentValue error.
 689: 
 690:             The value 0 can be configured for all the object
 691:             types and means that no operation is performed and
 692:             the rule never fails.
 693: 
 694:             When the type of the object indicated by checkRuleOid
 695:             is IpAddress, BITS, OBJECT IDENTIFIER then only the value
 696:             equal(2) can be configured.  For the IpAddress, the value
 697:             of the object indicated by checkRuleOid is compared byte
 698:             by byte with the value of checkRuleValue and the rule
 699:             doesn't fail if all the bytes are matched.  For the
 700:             OBJECT IDENTIFIER, the rule doesn't fail if checkRuleValue
 701:             encodes an OID of the same dimension of the value of the
 702:             object indicated by checkRuleOid and the two OIDs are
 703:             equal.  For the BITS, the rule doesn't fail if the
 704:             checkRuleValue encodes a bitstring long at least as the
 705:             number of the named bits and all the named bits are
 706:             matched with that bitstring.
 707: 
 708:             When the type of the object indicated by checkRuleOid
 709:             is INTEGER, Integer32, Unsigned32, Counter32, Counter64,
 710:             TimeTicks, Gauge32, all the values from 1 to 6 can be
 711:             configured.  These values define simple mathematical
 712:             operations: the rule doesn't fail if the the value
 713:             of the object indicated by checkRuleOid is, respectively,
 714:             !=, =, <, <=, >, >= than the value of checkRuleValue.
 715: 
 716:             A value of of delta(7) can be configured only for
 717:             Counter32, Counter64, Gauge32; moreover it is permitted
 718:             only if the check including the rule is performed
 719:             automatically and thus its value of checkResultInterval
 720:             greater than 0, otherwise an inconsistentValue error is
 721:             returned.  For a delta operation, each time the rule is
 722:             performed, the difference between the actual value of the
 723:             managed object and its value at the last performance is
 724:             considered and the rule doesn't fail if the difference is
 725:             <= than the value of the checkRuleValue.  If the actual
 726:             value is less than the previous one, then the difference is
 727:             augmented with the value 4294967295, like as the managed
 728:             object reached its maximum value and it has been resetted.
 729: 
 730:             Each time the new value of the managed object must be
 731:             stored by the device in an internal buffer.  The buffer
 732:             must be handled so that when a new managed object is
 733:             controlled, a new entry is allocated for it.  If no more
 734:             entries are available, then the rule fails with severity
 735:             4294967294.
 736:             If a managed object for which an entry was previously
 737:             allocated, doesn't exist when a new execution of the delta
 738:             operation is performed, its entry should be removed.
 739:             When a new entry is allocated for a new managed object,
 740:             its value is stored in the entry, but the operation is not
 741:             computed and the rule doesn't fail; the delta operation
 742:             is normally computed only from the second time."
 743:        DEFVAL { noOperation }
 744:        ::= { checkRuleEntry 5 }
 745: 
 746:    checkRuleSeverity OBJECT-TYPE
 747:        SYNTAX      SeverityConfigured
 748:        MAX-ACCESS  read-create
 749:        STATUS      current
 750:        DESCRIPTION
 751:            "The severity of a failure of the operation specified by
 752:             the row for the whole check.
 753: 
 754:             A severity of 0 indicates that a failure of the
 755:             operation is irrelevant."
 756:        DEFVAL { 1 }
 757:        ::= { checkRuleEntry 6 }
 758: 
 759:    checkRuleRowStatus OBJECT-TYPE
 760:        SYNTAX      RowStatus
 761:        MAX-ACCESS  read-create
 762:        STATUS      current
 763:        DESCRIPTION
 764:            "The control to create and delete rows.  It is possible
 765:             to create new rules only for a check which is already
 766:             defined in the CHECK-MIB.  Creating a new row indexed
 767:             by a value of checkResultName which doesn't exist
 768:             already in any row of the checkResultTable results in a
 769:             inconsistentName error.  The value createAndGo(4) is not
 770:             allowed and an wrongValue error is returned when attempting
 771:             to set it.
 772: 
 773:             Objects of the same row can be modified only when
 774:             checkRuleRowStatus has the notInService(2) value and
 775:             set operations on objects of a row in active(1) status
 776:             result to inconsistentValue.
 777:             A row in the notInService status is not considered in the
 778:             performance of the check defined by the related entry in
 779:             the checkResultTable (the one indexed by the same
 780:             checkResultName).
 781: 
 782:             An attempt to set the value of this object to active(1),
 783:             causes the following actions:
 784:             - the validity of the value of checkRuleOid is verified;
 785:               if it fails, then an inconsistentValue error is returned;
 786:             - the consistency between the type of the object referenced
 787:               by checkRuleOid and the value of checkRuleOperation is
 788:               verified; if it fails, then an inconsistentValue error is
 789:               returned;
 790:             - the consistency between the type of the object referenced
 791:               by checkRuleOid and the value of checkRuleValue is
 792:               verified; if it fails, then an inconsistentValue error is
 793:               returned;
 794:             - if all the tests pass, the row is activated.
 795: 
 796:             An attempt to create a new row when the table has reached
 797:             the maximum number of entries defined in checkCapabMaxRules
 798:             results in a resourceUnavailable error.
 799:             An attempt to create a new row in the table with the
 800:             corresponding entry in the checkResultTable having the
 801:             storage type permanent(4) results in an inconsistentValue
 802:             error."
 803:        ::= { checkRuleEntry 7 }
 804: 
 805:    --
 806:    -- Failure group
 807:    --
 808:    -- The Failure group contains the object describing the failures
 809:    -- of a check.  The failures are organized in the checkFailureTable.
 810:    --
 811:    checkFailureTable OBJECT-TYPE
 812:        SYNTAX      SEQUENCE OF CheckFailureEntry
 813:        MAX-ACCESS  not-accessible
 814:        STATUS      current
 815:        DESCRIPTION
 816:            "This table lists all the rules defined in the
 817:             checkRuleTable, which failed at the last
 818:             time the check including them has been performed.
 819: 
 820:             Entries only describe objects for which the last check
 821:             failed. Failures in checks before the last one are not
 822:             indicated."
 823:        ::= { checkObjects 5 }
 824: 
 825:    checkFailureEntry OBJECT-TYPE
 826:        SYNTAX      CheckFailureEntry
 827:        MAX-ACCESS  not-accessible
 828:        STATUS      current
 829:        DESCRIPTION
 830:            "An entry referencing a failed rule.
 831: 
 832:             Each entry is indexed by:
 833:             1. the checkResultName of the check including
 834:                the rule failed;
 835:             2. the severity of the rule failed;
 836:             3. The checkRuleName of the rule failed.
 837: 
 838:             The manager, after having read a value of
 839:             checkResultSeverity of a check different from 0, can
 840:             directly read the rule failed with the maximum severity by
 841:             retrieving the checkFailureOid with a get_next command
 842:             without specifying the checkRuleName."
 843:        INDEX { checkResultName, checkFailureSeverity, checkRuleName }
 844:        ::= { checkFailureTable 1 }
 845: 
 846:    CheckFailureEntry ::= SEQUENCE {
 847:        checkFailureSeverity   SeverityReturned,
 848:        checkFailureOid        OBJECT IDENTIFIER
 849:    }
 850: 
 851:    checkFailureSeverity OBJECT-TYPE
 852:        SYNTAX      SeverityReturned
 853:        MAX-ACCESS  not-accessible
 854:        STATUS      current
 855:        DESCRIPTION
 856:            "The severity with which the rule failed."
 857:        ::= { checkFailureEntry 1}
 858: 
 859:    checkFailureOid OBJECT-TYPE
 860:        SYNTAX      OBJECT IDENTIFIER
 861:        MAX-ACCESS  read-only
 862:        STATUS      current
 863:        DESCRIPTION
 864:            "The OID of the managed object for which a rule
 865:             failed.
 866: 
 867:             This value contains the value of checkRuleOid
 868:             of the rule failed."
 869:        ::= { checkFailureEntry 2 }
 870: 
 871:    --
 872:    -- Notifications. The definition of checkEvent makes notification
 873:    -- registrations reversible (see STD 58, RFC 2578, Section 8.5).
 874:    --
 875: 
 876:    checkEvent OBJECT IDENTIFIER ::= { checkNotifications 0 }
 877: 
 878:    checkFailed NOTIFICATION-TYPE
 879:        OBJECTS     { checkResultSeverity }
 880:        STATUS      current
 881:        DESCRIPTION
 882:            "This notification can be generated to report
 883:             that a check failed.  The notification is generated each
 884:             time, the value of checkSeverityThreshold is greater than
 885:             0 and the performance of a check results in a value of
 886:             checkResultSeverity that is greater than or equal to the
 887:             value of checkSeverityThreshold.
 888: 
 889:             The notification contains the checkResultSeverity of
 890:             the check failed."
 891:        ::= { checkEvent 1 }
 892: 
 893:    --
 894:    -- Conformance information
 895:    --
 896: 
 897:    checkCompliances OBJECT IDENTIFIER ::= { checkConformance 1 }
 898:    checkGroups      OBJECT IDENTIFIER ::= { checkConformance 2 }
 899: 
 900:    --
 901:    -- Compliance statements
 902:    --
 903:    -- This is the CHECK-MIB compliance definition.
 904:    --
 905: 
 906:    checkCompliance MODULE-COMPLIANCE
 907:        STATUS      current
 908:        DESCRIPTION
 909:            "The compliance statement for SNMP entities that
 910:             implement the CHECK-MIB."
 911: 
 912:        MODULE      -- this module
 913:        MANDATORY-GROUPS {
 914:                checkCapabilitiesGroup,
 915:                checkControlGroup,
 916:                checkResultGroup,
 917:                checkRuleGroup,
 918:                checkFailureGroup,
 919:                checkNotificationsGroup
 920:        }
 921:        ::= { checkCompliances 1 }
 922: 
 923:    --
 924:    -- Groups statements
 925:    --
 926:    -- This is the definition of the objects group of the CHECK-MIB.
 927:    --
 928: 
 929:    checkCapabilitiesGroup OBJECT-GROUP
 930:        OBJECTS {
 931:            checkCapabMinCheckInterval,
 932:            checkCapabMaxResults,
 933:            checkCapabMaxRules
 934:        }
 935:        STATUS      current
 936:        DESCRIPTION
 937:            "A collection of objects providing information about
 938:             the capabilities of the CHECK-MIB implementation."
 939:        ::= { checkGroups 1 }
 940: 
 941:    checkControlGroup OBJECT-GROUP
 942:        OBJECTS {
 943:            checkCtrlAdminStatus,
 944:            checkCtrlOperStatus
 945:        }
 946:        STATUS      current
 947:        DESCRIPTION
 948:            "A collection of objects controlling the state of the
 949:             CHECK-MIB."
 950:        ::= { checkGroups 2 }
 951: 
 952:    checkResultGroup OBJECT-GROUP
 953:        OBJECTS {
 954:            checkResultSeverity,
 955:            checkResultSize,
 956:            checkResultTime,
 957:            checkResultInterval,
 958:            checkResultSeverityThreshold,
 959:            checkResultStorageType,
 960:            checkResultRowStatus
 961:        }
 962:        STATUS      current
 963:        DESCRIPTION
 964:            "A collection of objects defining a check."
 965:        ::= { checkGroups 3 }
 966: 
 967:    checkRuleGroup OBJECT-GROUP
 968:        OBJECTS {
 969:            checkRuleOid,
 970:            checkRuleValue,
 971:            checkRuleOperation,
 972:            checkRuleSeverity,
 973:            checkRuleRowStatus
 974:         }
 975:         STATUS      current
 976:         DESCRIPTION
 977:             "A collection of objects defining the operations
 978:              computed for each check."
 979:         ::= { checkGroups 4 }
 980: 
 981:    checkFailureGroup OBJECT-GROUP
 982:        OBJECTS {
 983:            checkFailureOid
 984:         }
 985:         STATUS      current
 986:         DESCRIPTION
 987:             "A collection of objects indicating managed objects
 988:              for which a check operation failed."
 989:         ::= { checkGroups 5 }
 990: 
 991:    checkNotificationsGroup OBJECT-GROUP
 991: error - object group `checkNotificationsGroup' includes notification `checkFailed'
 992:         OBJECTS {
 993:             checkFailed
 994:         }
 995:         STATUS    current
 996:         DESCRIPTION
 997:             "The notifications emitted by the CHECK-MIB."
 998:         ::= { checkGroups 6 }
 999: 
1000:    END
1001: 
1002: -- 
1003: --    Copyright (C) The Internet Society (2003). All Rights Reserved.
1004: -- 
1005: --    This document and translations of it may be copied and furnished to
1006: --    others, and derivative works that comment on or otherwise explain it
1007: --    or assist in its implmentation may be prepared, copied, published and
1008: --    distributed, in whole or in part, without restriction of any kind,
1009: --    provided that the above copyright notice and this paragraph are
1010: --    included on all such copies and derivative works.  However, this
1011: --    document itself may not be modified in any way, such as by removing
1012: --    the copyright notice or references to the Internet Society or other
1013: --    Internet organizations, except as needed for the  purpose of
1014: --    developing Internet standards in which case the procedures for
1015: --    copyrights defined in the Internet Standards process must be
1016: --    followed, or as required to translate it into languages other than
1017: --    English.
1018: -- 
1019: --    The limited permissions granted above are perpetual and will not be
1020: --    revoked by the Internet Society or its successors or assigns.
1021: -- 
1022: --    This document and the information contained herein is provided on an
1023: --    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
1024: --    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
1025: --    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
1026: --    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
1027: --    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1028: