idnits 2.17.1 draft-ietf-disman-express-mib-v2-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 1 longer page, the longest (page 18) being 60 lines Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 43 instances of too long lines in the document, the longest one being 2 characters in excess of 72. == There are 1 instance of lines with non-RFC2606-compliant FQDNs in the document. == There are 2 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 1179 has weird spacing: '...andType an op...' == Line 1184 has weird spacing: '...dValues eva...' == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 2003) is 7621 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'MIBEventMIB' is mentioned on line 145, but not defined == Unused Reference: 'RFC1903' is defined on line 1827, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2571 (Obsoleted by RFC 3411) ** Downref: Normative reference to an Informational RFC: RFC 1215 ** Downref: Normative reference to an Historic RFC: RFC 1157 ** Downref: Normative reference to an Historic RFC: RFC 1901 ** Obsolete normative reference: RFC 1906 (Obsoleted by RFC 3417) ** Obsolete normative reference: RFC 2572 (Obsoleted by RFC 3412) ** Obsolete normative reference: RFC 2574 (Obsoleted by RFC 3414) ** Obsolete normative reference: RFC 1905 (Obsoleted by RFC 3416) ** Obsolete normative reference: RFC 2573 (Obsoleted by RFC 3413) ** Obsolete normative reference: RFC 2575 (Obsoleted by RFC 3415) ** Obsolete normative reference: RFC 2570 (Obsoleted by RFC 3410) ** Obsolete normative reference: RFC 1903 (Obsoleted by RFC 2579) -- Possible downref: Non-RFC (?) normative reference: ref. 'PracPersp' Summary: 17 errors (**), 0 flaws (~~), 10 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Disman Working Group R. Kavasseri 3 Internet Draft Cisco Systems, Inc. 4 Document: draft-ietf-disman-express-mib-v2-02.txt B. Stewart 5 Expiration Date: December 2003 Retired 6 June 2003 8 Distributed Management Expression MIB 10 Status of this Memo 12 This document is an Internet-Draft and is in full conformance with 13 all provisions of Section 10 of RFC2026. 15 Internet-Drafts are working documents of the Internet Engineering 16 Task Force (IETF), its areas, and its working groups. Note that 17 other groups may also distribute working documents as Internet- 18 Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six months 21 and may be updated, replaced, or obsoleted by other documents at any 22 time. It is inappropriate to use Internet-Drafts as reference 23 material or to cite them other than as ``work in progress.'' 25 The list of current Internet-Drafts can be accessed at 26 http://www.ietf.org/ietf/1id-abstracts.txt 28 The list of Internet-Draft Shadow Directories can be accessed at 29 http://www.ietf.org/shadow.html. 31 Distribution of this document is unlimited. Please send comments to 32 the Distributed Management Working Group, . 34 Copyright Notice 36 Copyright (C) The Internet Society (2003). All Rights Reserved. 38 Abstract 40 This memo defines a portion of the Management Information Base (MIB) 41 for use with network management protocols in the Internet community. 42 In particular, it describes managed objects used for managing 43 expressions of MIB objects. The results of these expressions become 44 MIB objects usable like any other MIB object, such as for the test 45 condition for declaring an event. 47 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 48 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 49 document are to be interpreted as described in RFC 2119. 51 Table of Contents 53 1 The SNMP Management Framework ............................... 2 54 2 Overview .................................................... 3 55 2.1 Usage ..................................................... 4 56 2.2 Persistence ............................................... 4 57 2.3 Operation ................................................. 4 58 2.3.1 Sampling ................................................ 5 59 2.3.2 Wildcards ............................................... 5 60 2.3.3 Evaluation .............................................. 5 61 2.3.4 Value Identification .................................... 6 62 2.4 Subsets ................................................... 6 63 2.4.1 No Wildcards ............................................ 6 64 2.4.2 No Deltas ............................................... 7 65 2.5 Structure ................................................. 7 66 2.5.1 Resource ................................................ 7 67 2.5.2 Definition .............................................. 7 68 2.5.3 Value ................................................... 8 69 2.6 Examples .................................................. 8 70 2.6.1 Wildcarding ............................................. 8 71 2.6.2 Calculation and Conditional ............................. 10 72 3 Definitions ................................................. 12 73 4 Intellectual Property ....................................... 36 74 5 Acknowledgements ............................................ 37 75 6 References .................................................. 37 76 7 Security Considerations ..................................... 38 77 8 Author's Address ............................................ 40 78 9 Editor's Address ............................................ 40 79 10 Full Copyright Statement ................................... 41 81 1. The SNMP Management Framework 83 The SNMP Management Framework presently consists of five major 84 components: 86 o An overall architecture, described in RFC 2571 [RFC2571]. 88 o Mechanisms for describing and naming objects and events for the 89 purpose of management. The first version of this Structure of 90 Management Information (SMI) is called SMIv1 and described in 91 STD 16, RFC 1155 [RFC1155], STD 16, RFC 1212 [RFC1212] and RFC 92 1215 [RFC1215]. The second version, called SMIv2, is described 93 in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and 94 STD 58, RFC 2580 [RFC2580]. 96 o Message protocols for transferring management information. The 97 first version of the SNMP message protocol is called SNMPv1 and 98 described in STD 15, RFC 1157 [RFC1157]. A second version of 99 the SNMP message protocol, which is not an Internet standards 100 track protocol, is called SNMPv2c and described in RFC 1901 101 [RFC1901] and RFC 1906 [RFC1906]. The third version of the 102 message protocol is called SNMPv3 and described in RFC 1906 103 [RFC1906], RFC 2572 [RFC2572] and RFC 2574 [RFC2574]. 105 o Protocol operations for accessing management information. The 106 first set of protocol operations and associated PDU formats is 107 described in STD 15, RFC 1157 [RFC1157]. A second set of 108 protocol operations and associated PDU formats is described in 109 RFC 1905 [RFC1905]. 111 o A set of fundamental applications described in RFC 2573 112 [RFC2573] and the view-based access control mechanism described 113 in RFC 2575 [RFC2575]. 115 A more detailed introduction to the current SNMP Management Framework 116 can be found in RFC 2570 [RFC2570]. 118 Managed objects are accessed via a virtual information store, termed 119 the Management Information Base or MIB. Objects in the MIB are 120 defined using the mechanisms defined in the SMI. 122 This memo specifies a MIB module that is compliant to the SMIv2. A 123 MIB conforming to the SMIv1 can be produced through the appropriate 124 translations. The resulting translated MIB must be semantically 125 equivalent, except where objects or events are omitted because no 126 translation is possible (use of Counter64). Some machine readable 127 information in SMIv2 will be converted into textual descriptions in 128 SMIv1 during the translation process. However, this loss of machine 129 readable information is not considered to change the semantics of the 130 MIB. 132 2. Overview 134 Users of MIBs often desire MIB objects that MIB designers have not 135 provided. Furthermore, such needs vary from one management 136 philosophy to another. Rather than fill more and more MIBs with 137 standardized objects, the Expression MIB supports externally defined 138 expressions of existing MIB objects. 140 In the Expression MIB the results of an evaluated expression are MIB 141 objects that may be used like any other MIB objects. These custom- 142 defined objects are thus usable anywhere any other MIB object can be 143 used. For example, they can be used by a management application 144 directly or referenced from another MIB, such as the Event MIB 145 [MIBEventMIB]. They can even be used by the Expression MIB itself, 146 forming expressions of expressions. 148 The Expression MIB is instrumentation for a relatively powerful, 149 complex, high-level application, considerably different from simple 150 instrumentation for a communication driver or a protocol. The MIB is 151 appropriate in a relatively powerful, resource-rich managed system 152 and not necessarily in a severely limited environment. 154 Nevertheless, due to dependencies from the Event MIB [RFC2981] and 155 the need to support as low-end a system as possible, the Expression 156 MIB can be somewhat stripped down for lower-power, lower-resource 157 implementations, as described in the Subsets section, below. 159 Implementation of the Expression MIB in a managed system led to the 160 addition of objects that may not have been necessary in an 161 application environment with complete knowledge of compiled MIB 162 definitions. This is appropriate since implementation must be 163 possible within typical managed systems with some constraints on 164 system resources. 166 2.1. Usage 168 On managed systems that can afford the overhead, the Expression MIB 169 is a way to create new, customized MIB objects for monitoring. 170 Although these can save some network traffic and overhead on 171 management systems, that is often not a good tradeoff for objects 172 that are simply to be recorded or displayed. 174 An example of a use of the Expression MIB would be to provide custom 175 objects for the Event MIB [RFC2981]. A complex expression can 176 evaluate to a rate of flow or a boolean and thus be subject to 177 testing as an event trigger, resulting in an SNMP notification. 178 Without these capabilities such monitoring would be limited to the 179 objects in predefined MIBs. The Expression MIB thus supports 180 powerful tools for the network manager faced with the monitoring of 181 large, complex systems that can support a significant level of self 182 management. 184 2.2. Persistence 186 Although like most MIBs this one has no explicit controls for the 187 persistence of the values set in configuring an expression, a robust, 188 polite implementation would certainly not force its managing 189 applications to reconfigure it whenever it resets. 191 Again, as with most MIBs, it is implementation specific how a system 192 provides and manages such persistence. To speculate, one could 193 imagine, for example, that persistence depended on the context in 194 which the expression was configured, or perhaps system-specific 195 characteristics of the expression's owner. Or perhaps everything in 196 a MIB such as this one, which is clearly aimed at persistent 197 configuration, is automatically part of a system's other persistent 198 configuration. 200 2.3. Operation 201 Most of the operation of the MIB is described or implied in the 202 object definitions but a few highlights bear mentioning here. 204 2.3.1. Sampling 206 The MIB supports three types of object sampling for the MIB objects 207 that make up the expression: absolute, delta, and changed. 209 Absolute samples are simply the value of the MIB object at the time 210 it is sampled. 212 Absolute samples are not sufficient for expressions of counters, as 213 counters have meaning only as a delta (difference) from one sample to 214 the next. Thus objects may be sampled as deltas. Delta sampling 215 requires the application to maintain state for the value at the last 216 sample, and to do continuous sampling whether or not anyone is 217 looking at the results. It thus creates constant overhead. 219 Changed sampling is a simple fallout of delta sampling where rather 220 than a difference the result is a boolean indicating whether or not 221 the object changed value since the last sample. 223 2.3.2. Wildcards 225 Wildcards allow the application of a single expression to multiple 226 instances of the same MIB object. The definer of the expression 227 indicates this choice and provides a partial object identifier, with 228 some or all of the instance portion left off. The application then 229 does the equivalent of GetNext to obtain the object values, thus 230 discovering the instances. 232 All wildcarded objects in an expression must have the same semantics 233 for the missing portion of their object identifiers. Otherwise, any 234 successful evaluation of the wildcarded expression would be the 235 result of the accidental matching of the wildcarded portion of the 236 object identifiers in the expression. Such an evaluation will likely 237 produce results which are not meaningful. 239 The expression can be evaluated only for those instances where all 240 the objects in the expression are available with the same value for 241 the wildcarded portion of the instance. 243 2.3.3. Evaluation 245 There are two important aspects of evaluation that may not be 246 obvious: what objects and when. 248 What objects get used in the evaluation depends on the type of 249 request and whether or not the expression contains wildcarded 250 objects. If the request was a Get, that locks down the instances to 251 be used. If the request was a GetNext or GetBulk, the application 252 must work its way up to the next full set of objects for the 253 expression. 255 Evaluation of expressions happens at two possible times, depending on 256 the sampling method (delta or absolute) used to evaluate the 257 expression. 259 If there are no delta or change values in an expression, the 260 evaluation occurs on demand, i.e. when a requester attempts to read 261 the value of the expression. In this case all requesters get a 262 freshly calculated value. 264 For expressions with delta or change values, evaluation goes on 265 continuously, every sample period. In this case requesters get the 266 value as of the last sample period. For any given sample period of a 267 given expression, only those instances exist that provided a full set 268 of object values. It may be possible that a delta expression which 269 was evaluated successfully for one sample period may not be 270 successfully evaluated in the next sample period. This may, for 271 example, be due to missing instances for some or all of the objects 272 in the expression. In such cases, the value from the previous sample 273 period (with the successful evaluation) must not be carried forward 274 to the next sample period (with the failed evaluation). 276 2.3.4. Value Identification 278 Values resulting from expression evaluation are identified with a 279 combination of the object identifier (OID) for the data type from 280 expValueTable (such as expValueCounter32Val), the expression owner, 281 the expression name, and an OID fragment. 283 The OID fragment is not an entire OID beginning with iso.dod.org 284 (1.3.6). Rather it begins with 0.0. The remainder is either another 285 0 when there is no wildcarding or the instance that satisfied the 286 wildcard if there is wildcarding. 288 2.4. Subsets 290 To pare down the Expression MIBs complexity and use of resources an 291 implementor can leave out various parts. 293 2.4.1. No Wildcards 295 Leaving out wildcarding significantly reduces the complexity of 296 retrieving values to evaluate expressions and the processing required 297 to do so. Such an implementation would allow expressions made up of 298 individual MIB objects but would not be suitable for expressions 299 applied across large tables as each instance in the table would 300 require a separate expression definition. 302 Furthermore it would not be suitable for tables with arbitrary, 303 dynamic instances, as expressions definitions could not predict what 304 instance values to use. 306 An implementation without wildcards might be useful for a self- 307 managing system with small tables or few dynamic instances, or one 308 that can do calculations only for a few key objects. 310 2.4.2. No Deltas 312 Leaving out delta processing significantly reduces state that must be 313 kept and the burden of ongoing processing even when no one is looking 314 at the results. Unfortunately it also makes expressions on counters 315 unusable, as counters have meaning only as deltas. 317 An implementation without deltas might be useful for a severely 318 limited, self-managing system that has no need for expressions or 319 events on counters. Although conceivable, such systems would be 320 rare. 322 2.5. Structure 324 The MIB has the following sections: 326 o Resource -- management of the MIB's use of system resources. 328 o Definition -- definition of expressions. 330 o Value -- values of evaluated expressions. 332 2.5.1. Resource 334 The resource section has objects to manage resource usage by 335 wildcarded delta expressions, a potential major consumer of CPU and 336 memory. 338 2.5.2. Definition 340 The definition section contains the tables that define expressions. 342 The expression table, indexed by expression owner and expression 343 name, contains those parameters that apply to the entire expression, 344 such as the expression itself, the data type of the result, and the 345 sampling interval if it contains delta or change values. 347 The object table, indexed by expression owner, expression name and 348 object index within each expression, contains the parameters that 349 apply to the individual objects that go into the expression, 350 including the object identifier, sample type, discontinuity 351 indicator, and such. 353 2.5.3. Value 355 The value section contains the values of evaluated expressions. 357 The value table, indexed by expression owner, expression name and 358 instance fragment contains a "discriminated union" of evaluated 359 expression results. For a given expression only one of the columns 360 is instantiated, depending on the result data type for the 361 expression. The instance fragment is a constant or the final section 362 of the object identifier that filled in a wildcard. 364 2.6. Examples 366 The examples refer to tables and objects defined below in the MIB 367 itself. They may well make more sense after reading those 368 definitions. 370 2.6.1. Wildcarding 372 An expression may use wildcarded MIB objects that result in multiple 373 values for the expression. To specify a wildcarded MIB object a 374 management application leaves off part or all of the instance portion 375 of the object identifier, and sets expObjectWildcard to true(1) for 376 that object. For our example we'll use a counter of total blessings 377 from a table of people. Another table, indexed by town and person 378 has blessings just from that town. 380 So the index clauses are: 382 personEntry OBJECT-TYPE 383 ... 384 INDEX { personIndex } 386 And: 388 townPersonEntry OBJECT-TYPE 389 ... 390 INDEX { townIndex, personIndex } 392 In our friendly application we may have entered our expression as: 394 100 * townPersonBlessings.976.* / personBlessings.* 396 What goes in expExpression is: 398 100*$1/$2 400 For example purposes we'll use some slightly far-fetched OIDs. The 401 People MIB is 1.3.6.1.99.7 and the Town MIB is 1.3.6.1.99.11, so for 402 our two counters the OIDs are: 404 personBlessings 1.3.6.1.99.7.1.3.1.4 405 townPersonBlessings 1.3.6.1.99.11.1.2.1.9 407 The rule for wildcards is that all the wildcarded parts have to match 408 exactly. In this case that means we have to hardwire the town and 409 only the personIndex can be wildcarded. So our values for 410 expObjectID are: 412 1.3.6.1.99.7.1.3.1.4 413 1.3.6.1.99.11.1.2.1.9.976 415 We're hardwired to townIndex 976 and personIndex is allowed to vary. 417 The value of expExpressionPrefix can be either of those two counter 418 OIDs (including the instance fragment in the second case), since 419 either of them takes you to a MIB definition where you can look at 420 the INDEX clause and figure out what's been left off. What's been 421 left off doesn't have to work out to be the same object, but it does 422 have to work out to be the same values (semantics) for the result to 423 make sense. Note that the managed system can not typically check 424 such semantics and if given nonsense will return nonsense. 426 If we have people numbered 6, 19, and 42 in town number 976, the 427 successive values of expValueInstance will be: 429 0.0.6 430 0.0.19 431 0.0.42 433 So there will be three values in expValueTable, with those OIDs as 434 the expValueInstance part of their indexing. 436 2.6.2. Calculation and Conditional 438 The following formula for line utilization of a half-duplex link is 439 adapted from [PracPersp]. 441 utilization = (ifInOctets + ifOutOctets) * 800 / seconds / ifSpeed 443 The expression results in the percentage line utilization per second. 444 The total octets are multiplied by 8 to get bits and 100 to scale up 445 the percentage as an integer. 447 The following Expression MIB object values implement this as an 448 expression for all ifIndexes that directly represent actual hardware. 449 Since the octet counters are Counter32 values, they must be delta 450 sampled to be meaningful. The sample period is 6 seconds but for 451 accuracy and independence is calculated as a delta of sysUpTime. 453 The expObjectTable entry for ifInOctets has an expObjectConditional 454 that checks for being a hardware interface. Only one object in the 455 expression needs that check associated, since it applies to the whole 456 expression. Since ifConnectorPresent is a TruthValue with values of 457 1 or 2 rather than 0 and non-zero, it must also be in an expression 458 rather than used directly for the conditional. 460 The interface-specific discontinuity indicator is supplied only for 461 ifInOctets since invalidating that sample will invalidate an attempt 462 at evaluation, effectively invalidating ifOutOctets as well 463 (correctly, because it has the same indicator). 465 For notational clarity, in the rest of this document, a string in 466 quotes as part of the object instance indicates the value that would 467 actually be one subidentifier per byte. The objects all belong to 468 owner "me". 470 Also for clarity OIDs are expressed as the object descriptor and 471 instance. In fact they must be supplied numerically, with all 472 subidentifiers in place before the part for the particular object and 473 instance. 475 What the user would set in expExpressionTable: 477 expExpression.2."me".4."hard" = "$1==1" 478 expExpressionValueType.2."me".4."hard" = unsigned32 479 expExpressionEntryStatus.2."me"4."hard" = 'active' 480 expExpression.2."me".4."util" = "($1+$2)*800/$4/$3" 481 expExpressionValueType.2."me".4."util" = integer32 482 expExpressionDeltaInterval.2."me".4."util" = 6 483 expExpressionEntryStatus.2."me"4."util" = 'active' 485 What the user would set in expObjectTable: 487 expObjectID.2."me".4."hard".1 = ifConnectorPresent 488 expObjectWildcard.2."me".4."hard".1 = 'true' 489 expObjectSampleType.2."me".4."hard".1 = 'absoluteValue' 490 expObjectEntryStatus.2."me".4."hard".1 = 'active' 492 expObjectID.2."me".4."util".1 = ifInOctets 493 expObjectWildcard.2."me".4."util".1 = 'true' 494 expObjectSampleType.2."me".4."util".1 = 'deltaValue' 495 expObjectConditional.2."me".4."util".1 = 496 expValueUnsigned32Val.2."me".4."hard".0.0 497 expObjectConditionalWildcard.2."me".4."util".1 = 'true' 498 expObjectDiscontinuityID.2."me".4."util".1 = 499 ifCounterDiscontinuityTime 500 expObjectDiscontinuityIDWildcard.2."me".4."util".1 = 'true' 501 expObjectEntryStatus.2."me".4."util".1 = 'active' 503 expObjectID.2."me".4."util".2 = ifOutOctets 504 expObjectWildcard.2."me".4."util".2 = 'true' 505 expObjectSampleType.2."me".4."util".2 = 'deltaValue' 506 expObjectEntryStatus.2."me".4."util".2 = 'active' 508 expObjectID.2."me".4."util".3 = ifSpeed 509 expObjectWildcard.2."me".4."util".3 = 'true' 510 expObjectSampleType.2."me".4."util".3 = 'absoluteValue' 511 expObjectEntryStatus.2."me".4."util".3 = 'active' 513 expObjectID.2."me".4."util".4 = sysUpTime.0 514 expObjectWildcard.2."me".4."util".4 = 'false' 515 expObjectSampleType.2."me".4."util".4 = 'deltaValue' 516 expObjectEntryStatus.2."me".4."util".4 = 'active' 518 These settings will result in populating one column of expValueTable: 520 expValueInteger32Val.2."me".4."util".0.0.? 522 The subidentifier represented by "?" above represents one 523 subidentifier that takes on a value of ifIndex and identifies a row 524 for each ifIndex value where ifConnectorPresent is 'true' and the 525 interface was present for two samples to provide a delta. 527 This value could in turn be used as an event threshold [RFC2981] to 528 watch for overutilization of all hardware network connections. 530 3. Definitions 532 DISMAN-EXPRESSION-MIB DEFINITIONS ::= BEGIN 534 IMPORTS 535 MODULE-IDENTITY, OBJECT-TYPE, 536 Integer32, Gauge32, Unsigned32, 537 Counter32, Counter64, IpAddress, 538 TimeTicks, mib-2, zeroDotZero FROM SNMPv2-SMI 539 RowStatus, TruthValue, TimeStamp FROM SNMPv2-TC 540 sysUpTime FROM SNMPv2-MIB 541 SnmpAdminString FROM SNMP-FRAMEWORK-MIB 542 MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; 544 dismanExpressionMIB MODULE-IDENTITY 545 LAST-UPDATED "200306130000Z" -- 13 June 2003 546 ORGANIZATION "IETF Distributed Management Working Group" 547 CONTACT-INFO "Ramanathan Kavasseri 548 Cisco Systems, Inc. 549 170 West Tasman Drive, 550 San Jose CA 95134-1706. 551 Phone: +1 408 527 2446 552 Email: ramk@cisco.com" 553 DESCRIPTION 554 "The MIB module for defining expressions of MIB objects for 555 management purposes. 557 Copyright (C) The Internet Society 2003. This version of this 558 MIB module is part of RFC yyyy; see the RFC itself for full 559 legal notices." 560 -- RFC Ed.: replace yyyy with actual RFC number & remove this note 562 -- Revision History 563 REVISION "200306130000Z" -- 13 June 2003 564 DESCRIPTION "Added copyright statement to the MIB module 565 description." 567 REVISION "200111140000Z" -- 14 November 2001 568 DESCRIPTION "Updated the DESCRIPTION clause of 569 expValueIpAddressVal, 570 and removed the SIZE restriction of 571 expValueOctetStringVal." 573 REVISION "200010160000Z" -- 16 October 2000 574 DESCRIPTION "This is the initial version of this MIB. 575 Published as RFC 2982" 576 ::= { mib-2 90 } 578 dismanExpressionMIBObjects OBJECT IDENTIFIER ::= 579 { dismanExpressionMIB 1 } 581 expResource OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 1 } 582 expDefine OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 2 } 583 expValue OBJECT IDENTIFIER ::= { dismanExpressionMIBObjects 3 } 585 -- 586 -- Resource Control 587 -- 589 expResourceDeltaMinimum OBJECT-TYPE 590 SYNTAX Integer32 (-1 | 1..600) 591 UNITS "seconds" 592 MAX-ACCESS read-write 593 STATUS current 594 DESCRIPTION 595 "The minimum expExpressionDeltaInterval this system will 596 accept. A system may use the larger values of this minimum to 597 lessen the impact of constantly computing deltas. For larger 598 delta sampling intervals the system samples less often and 599 suffers less overhead. This object provides a way to enforce 600 such lower overhead for all expressions created after it is 601 set. 603 The value -1 indicates that expResourceDeltaMinimum is 604 irrelevant as the system will not accept 'deltaValue' as a 605 value for expObjectSampleType. 607 Unless explicitly resource limited, a system's value for 608 this object should be 1, allowing as small as a 1 second 609 interval for ongoing delta sampling. 611 Changing this value will not invalidate an existing setting 612 of expObjectSampleType." 613 ::= { expResource 1 } 615 expResourceDeltaWildcardInstanceMaximum OBJECT-TYPE 616 SYNTAX Unsigned32 617 UNITS "instances" 618 MAX-ACCESS read-write 619 STATUS current 620 DESCRIPTION 621 "For every instance of a deltaValue object, one dynamic instance 622 entry is needed for holding the instance value from the previous 623 sample, i.e. to maintain state. 625 This object limits maximum number of dynamic instance entries 626 this system will support for wildcarded delta objects in 627 expressions. For a given delta expression, the number of 628 dynamic instances is the number of values that meet all criteria 629 to exist times the number of delta values in the expression. 631 A value of 0 indicates no preset limit, that is, the limit 632 is dynamic based on system operation and resources. 634 Unless explicitly resource limited, a system's value for 635 this object should be 0. 637 Changing this value will not eliminate or inhibit existing delta 638 wildcard instance objects but will prevent the creation of more 639 such objects. 641 An attempt to allocate beyond the limit results in expErrorCode 642 being tooManyWildcardValues for that evaluation attempt." 643 ::= { expResource 2 } 645 expResourceDeltaWildcardInstances OBJECT-TYPE 646 SYNTAX Gauge32 647 UNITS "instances" 648 MAX-ACCESS read-only 649 STATUS current 650 DESCRIPTION 651 "The number of currently active instance entries as 652 defined for expResourceDeltaWildcardInstanceMaximum." 653 ::= { expResource 3 } 655 expResourceDeltaWildcardInstancesHigh OBJECT-TYPE 656 SYNTAX Gauge32 657 UNITS "instances" 658 MAX-ACCESS read-only 659 STATUS current 660 DESCRIPTION 661 "The highest value of expResourceDeltaWildcardInstances 662 that has occurred since initialization of the managed 663 system." 664 ::= { expResource 4 } 666 expResourceDeltaWildcardInstanceResourceLacks OBJECT-TYPE 667 SYNTAX Counter32 668 UNITS "instances" 669 MAX-ACCESS read-only 670 STATUS current 671 DESCRIPTION 672 "The number of times this system could not evaluate an 673 expression because that would have created a value instance in 674 excess of expResourceDeltaWildcardInstanceMaximum." 675 ::= { expResource 5 } 677 -- 679 -- Definition 680 -- 681 -- Expression Definition Table 682 -- 684 expExpressionTable OBJECT-TYPE 685 SYNTAX SEQUENCE OF ExpExpressionEntry 686 MAX-ACCESS not-accessible 687 STATUS current 688 DESCRIPTION 689 "A table of expression definitions." 690 ::= { expDefine 1 } 692 expExpressionEntry OBJECT-TYPE 693 SYNTAX ExpExpressionEntry 694 MAX-ACCESS not-accessible 695 STATUS current 696 DESCRIPTION 697 "Information about a single expression. New expressions 698 can be created using expExpressionEntryStatus. 700 To create an expression first create the named entry in this 701 table. Then use expExpressionName to populate expObjectTable. 702 For expression evaluation to succeed all related entries in 703 expExpressionTable and expObjectTable must be 'active'. If 704 these conditions are not met the corresponding values in 705 expValue simply are not instantiated. 707 Deleting an entry deletes all related entries in expObjectTable 708 and expErrorTable. 710 Because of the relationships among the multiple tables for an 711 expression (expExpressionTable, expObjectTable, and 712 expValueTable) and the SNMP rules for independence in setting 713 object values, it is necessary to do final error checking when 714 an expression is evaluated, that is, when one of its instances 715 in expValueTable is read or a delta interval expires. Earlier 716 checking need not be done and an implementation may not impose 717 any ordering on the creation of objects related to an 718 expression. 720 To maintain security of MIB information, when creating a new row in 721 this table, the managed system must record the security credentials 722 of the requester. These security credentials are the parameters 723 necessary as inputs to isAccessAllowed from the Architecture for 725 Describing SNMP Management Frameworks. When obtaining the objects 726 that make up the expression, the system must (conceptually) use 727 isAccessAllowed to ensure that it does not violate security. 729 The evaluation of the expression takes place under the 730 security credentials of the creator of its expExpressionEntry. 732 Values of read-write objects in this table may be changed 733 at any time." 734 INDEX { expExpressionOwner, expExpressionName } 735 ::= { expExpressionTable 1 } 737 ExpExpressionEntry ::= SEQUENCE { 738 expExpressionOwner SnmpAdminString, 739 expExpressionName SnmpAdminString, 740 expExpression OCTET STRING, 741 expExpressionValueType INTEGER, 742 expExpressionComment SnmpAdminString, 743 expExpressionDeltaInterval Integer32, 744 expExpressionPrefix OBJECT IDENTIFIER, 745 expExpressionErrors Counter32, 746 expExpressionEntryStatus RowStatus 747 } 749 expExpressionOwner OBJECT-TYPE 750 SYNTAX SnmpAdminString (SIZE(0..32)) 751 MAX-ACCESS not-accessible 752 STATUS current 753 DESCRIPTION 754 "The owner of this entry. The exact semantics of this 755 string are subject to the security policy defined by the 756 security administrator." 757 ::= { expExpressionEntry 1 } 759 expExpressionName OBJECT-TYPE 760 SYNTAX SnmpAdminString (SIZE (1..32)) 761 MAX-ACCESS not-accessible 762 STATUS current 763 DESCRIPTION 764 "The name of the expression. This is locally unique, within 765 the scope of an expExpressionOwner." 766 ::= { expExpressionEntry 2 } 768 expExpression OBJECT-TYPE 769 SYNTAX OCTET STRING (SIZE (1..1024)) 770 MAX-ACCESS read-create 771 STATUS current 772 DESCRIPTION 773 "The expression to be evaluated. This object is the same 774 as a DisplayString (RFC 1903) except for its maximum length. 776 Except for the variable names the expression is in ANSI C 777 syntax. Only the subset of ANSI C operators and functions 778 listed here is allowed. 780 Variables are expressed as a dollar sign ('$') and an 781 integer that corresponds to an expObjectIndex. An 782 example of a valid expression is: 784 ($1-$5)*100 786 Expressions must not be recursive, that is although an expression 787 may use the results of another expression, it must not contain 788 any variable that is directly or indirectly a result of its own 789 evaluation. The managed system must check for recursive 790 expressions. 792 The only allowed operators are: 794 ( ) 795 - (unary) 796 + - * / % 797 & | ^ << >> ~ 798 ! && || == != > >= < <= 800 Note the parentheses are included for parenthesizing the 801 expression, not for casting data types. 803 The only constant types defined are: 805 int (32-bit signed) 806 long (64-bit signed) 807 unsigned int 808 unsigned long 809 hexadecimal 810 character 811 string 812 oid 814 The default type for a positive integer is int unless it is too 815 large in which case it is long. 817 All but oid are as defined for ANSI C. Note that a 818 hexadecimal constant may end up as a scalar or an array of 819 8-bit integers. A string constant is enclosed in double 820 quotes and may contain back-slashed individual characters 821 as in ANSI C. 823 An oid constant comprises 32-bit, unsigned integers and at 824 least one period, for example: 826 0. 827 .0 828 1.3.6.1 830 No additional leading or trailing subidentifiers are automatically 831 added to an OID constant. The constant is taken as expressed. 833 Integer-typed objects are treated as 32- or 64-bit, signed 834 or unsigned integers, as appropriate. The results of 835 mixing them are as for ANSI C, including the type of the 836 result. Note that a 32-bit value is thus promoted to 64 bits 837 only in an operation with a 64-bit value. There is no 838 provision for larger values to handle overflow. 840 Relative to SNMP data types, a resulting value becomes 841 unsigned when calculating it uses any unsigned value, 842 including a counter. To force the final value to be of 843 data type counter the expression must explicitly use the 844 counter32() or counter64() function (defined below). 846 OCTET STRINGS and OBJECT IDENTIFIERs are treated as 847 one-dimensioned arrays of unsigned 8-bit integers and 848 unsigned 32-bit integers, respectively. 850 IpAddresses are treated as 32-bit, unsigned integers in 851 network byte order, that is, the hex version of 255.0.0.0 is 852 0xff000000. 854 Conditional expressions result in a 32-bit, unsigned integer 855 of value 0 for false or 1 for true. When an arbitrary value 856 is used as a boolean 0 is false and non-zero is true. 858 Rules for the resulting data type from an operation, based on 859 the operator: 861 For << and >> the result is the same as the left hand operand. 863 For &&, ||, ==, !=, <, <=, >, and >= the result is always 864 Unsigned32. 866 For unary - the result is always Integer32. 868 For +, -, *, /, %, &, |, and ^ the result is promoted according 869 to the following rules, in order from most to least preferred: 871 If left hand and right hand operands are the same type, 872 use that. 874 If either side is Counter64, use that. 876 If either side is IpAddress, use that. 878 If either side is TimeTicks, use that. 880 If either side is Counter32, use that. 882 Otherwise use Unsigned32. 884 The following rules say what operators apply with what data 885 types. Any combination not explicitly defined does not work. 887 For all operators any of the following can be the left hand or 888 right hand operand: Integer32, Counter32, Unsigned32, Counter64. 890 The operators +, -, *, /, %, <, <=, >, and >= work with 891 TimeTicks. 893 The operators &, |, and ^ work with IpAddress. 895 The operators << and >> work with IpAddress but only as the 896 left hand operand. 898 The + operator performs a concatenation of two OCTET STRINGs or 899 two OBJECT IDENTIFIERs. 901 The operators &, | perform bitwise operations on OCTET STRINGs. 902 If the OCTET STRING happens to be a DisplayString the results 903 may be meaningless, but the agent system does not check this as 904 some such systems do not have this information. 906 The operators << and >> perform bitwise operations on OCTET 907 STRINGs appearing as the left hand operand. 909 The only functions defined are: 911 counter32 912 counter64 913 arraySection 914 stringBegins 915 stringEnds 916 stringContains 917 oidBegins 918 oidEnds 919 oidContains 920 average 921 maximum 922 minimum 923 sum 924 exists 926 The following function definitions indicate their parameters by 927 naming the data type of the parameter in the parameter's position 928 in the parameter list. The parameter must be of the type indicated 929 and generally may be a constant, a MIB object, a function, or an 930 expression. 932 counter32(integer) - wrapped around an integer value counter32 933 forces Counter32 as a data type. 935 counter64(integer) - similar to counter32 except that the 936 resulting data type is 'counter64'. 938 arraySection(array, integer, integer) - selects a piece of an 939 array (i.e. part of an OCTET STRING or OBJECT IDENTIFIER). The 940 integer arguments are in the range 0 to 4,294,967,295. The 941 first is an initial array index (one-dimensioned) and the second 942 is an ending array index. A value of 0 indicates first or last 943 element, respectively. If the first element is larger than the 944 array length the result is 0 length. If the second integer is 945 less than or equal to the first, the result is 0 length. If the 946 second is larger than the array length it indicates last 947 element. 949 stringBegins/Ends/Contains(octetString, octetString) - looks for 950 the second string (which can be a string constant) in the first 951 and returns the one-dimensioned arrayindex where the match began. 952 A return value of 0 indicates no match (i.e. boolean false). 954 oidBegins/Ends/Contains(oid, oid) - looks for the second OID 955 (which can be an OID constant) in the first and returns the 956 the one-dimensioned index where the match began. A return value 957 of 0 indicates no match (i.e. boolean false). 959 average/maximum/minimum(integer) - calculates the average, 960 minimum, or maximum value of the integer valued object over 961 multiple sample times. If the object disappears for any 962 sample period, the accumulation and the resulting value object 963 cease to exist until the object reappears at which point the 964 calculation starts over. 966 sum(integerObject*) - sums all available values of the 967 wildcarded integer object, resulting in an integer scalar. Must 968 be used with caution as it wraps on overflow with no 969 notification. 971 exists(anyTypeObject) - verifies the object instance exists. A 972 return value of 0 indicates NoSuchInstance (i.e. boolean 973 false)." 974 ::= { expExpressionEntry 3 } 976 expExpressionValueType OBJECT-TYPE 977 SYNTAX INTEGER { counter32(1), unsigned32(2), timeTicks(3), 978 integer32(4), ipAddress(5), octetString(6), 979 objectId(7), counter64(8) } 980 MAX-ACCESS read-create 981 STATUS current 982 DESCRIPTION 983 "The type of the expression value. One and only one of the 984 value objects in expValueTable will be instantiated to match 985 this type. 987 If the result of the expression can not be made into this type, 988 an invalidOperandType error will occur." 989 DEFVAL { counter32 } 990 ::= { expExpressionEntry 4 } 992 expExpressionComment OBJECT-TYPE 993 SYNTAX SnmpAdminString 994 MAX-ACCESS read-create 995 STATUS current 996 DESCRIPTION 997 "A comment to explain the use or meaning of the expression." 998 DEFVAL { ''H } 999 ::= { expExpressionEntry 5 } 1001 expExpressionDeltaInterval OBJECT-TYPE 1002 SYNTAX Integer32 (0..86400) 1003 UNITS "seconds" 1004 MAX-ACCESS read-create 1005 STATUS current 1006 DESCRIPTION 1007 "Sampling interval for objects in this expression with 1008 expObjectSampleType 'deltaValue'. 1010 This object has no effect if the the expression has no 1011 deltaValue objects. 1013 A value of 0 indicates no automated sampling. In this case 1014 the delta is the difference from the last time the expression 1015 was evaluated. Note that this is subject to unpredictable 1016 delta times in the face of retries or multiple managers. 1018 A value greater than zero is the number of seconds between 1019 automated samples. 1021 Until the delta interval has expired once the delta for the 1022 object is effectively not instantiated and evaluating 1023 the expression has results as if the object itself were not 1024 instantiated. 1026 Note that delta values potentially consume large amounts of 1027 system CPU and memory. Delta state and processing must 1028 continue constantly even if the expression is not being used. 1029 That is, the expression is being evaluated every delta interval, 1030 even if no application is reading those values. For wildcarded 1031 objects this can be substantial overhead. 1033 Note that delta intervals, external expression value sampling 1034 intervals and delta intervals for expressions within other 1035 expressions can have unusual interactions as they are impossible 1036 to synchronize accurately. In general one interval embedded 1037 below another must be enough shorter that the higher sample 1038 sees relatively smooth, predictable behavior. So, for example, 1039 to avoid the higher level getting the same sample twice, the 1040 lower level should sample at least twice as fast as the higher 1041 level does." 1042 DEFVAL { 0 } 1043 ::= { expExpressionEntry 6 } 1045 expExpressionPrefix OBJECT-TYPE 1046 SYNTAX OBJECT IDENTIFIER 1047 MAX-ACCESS read-only 1048 STATUS current 1049 DESCRIPTION 1050 "An object prefix to assist an application in determining 1051 the instance indexing to use in expValueTable, relieving the 1052 application of the need to scan the expObjectTable to 1053 determine such a prefix. 1055 See expObjectTable for information on wildcarded objects. 1057 If the expValueInstance portion of the value OID may 1058 be treated as a scalar (that is, normally, 0) the value of 1059 expExpressionPrefix is zero length, that is, no OID at all. 1060 Note that zero length implies a null OID, not the OID 0.0. 1062 Otherwise, the value of expExpressionPrefix is the expObjectID 1063 value of any one of the wildcarded objects for the expression. 1064 This is sufficient, as the remainder, that is, the instance 1065 fragment relevant to instancing the values, must be the same for 1066 all wildcarded objects in the expression." 1067 ::= { expExpressionEntry 7 } 1069 expExpressionErrors OBJECT-TYPE 1070 SYNTAX Counter32 1071 MAX-ACCESS read-only 1072 STATUS current 1073 DESCRIPTION 1074 "The number of errors encountered while evaluating this 1075 expression. 1077 Note that an object in the expression not being accessible, 1078 is not considered an error. An example of an inaccessible 1079 object is when the object is excluded from the view of the 1080 user whose security credentials are used in the expression 1081 evaluation. In such cases, it is a legitimate condition 1082 that causes the corresponding expression value not to be 1083 instantiated." 1084 ::= { expExpressionEntry 8 } 1086 expExpressionEntryStatus OBJECT-TYPE 1087 SYNTAX RowStatus 1088 MAX-ACCESS read-create 1089 STATUS current 1090 DESCRIPTION 1091 "The control that allows creation and deletion of entries." 1092 ::= { expExpressionEntry 9 } 1094 -- 1095 -- Expression Error Table 1096 -- 1098 expErrorTable OBJECT-TYPE 1099 SYNTAX SEQUENCE OF ExpErrorEntry 1100 MAX-ACCESS not-accessible 1101 STATUS current 1102 DESCRIPTION 1103 "A table of expression errors." 1104 ::= { expDefine 2 } 1106 expErrorEntry OBJECT-TYPE 1107 SYNTAX ExpErrorEntry 1108 MAX-ACCESS not-accessible 1109 STATUS current 1110 DESCRIPTION 1111 "Information about errors in processing an expression. 1113 Entries appear in this table only when there is a matching 1114 expExpressionEntry and then only when there has been an 1115 error for that expression as reflected by the error codes 1116 defined for expErrorCode." 1117 INDEX { expExpressionOwner, expExpressionName } 1118 ::= { expErrorTable 1 } 1120 ExpErrorEntry ::= SEQUENCE { 1121 expErrorTime TimeStamp, 1122 expErrorIndex Integer32, 1123 expErrorCode INTEGER, 1124 expErrorInstance OBJECT IDENTIFIER 1125 } 1127 expErrorTime OBJECT-TYPE 1128 SYNTAX TimeStamp 1129 MAX-ACCESS read-only 1130 STATUS current 1131 DESCRIPTION 1132 "The value of sysUpTime the last time an error caused a 1133 failure to evaluate this expression." 1134 ::= { expErrorEntry 1 } 1136 expErrorIndex OBJECT-TYPE 1137 SYNTAX Integer32 1138 MAX-ACCESS read-only 1139 STATUS current 1140 DESCRIPTION 1141 "The one-dimensioned character array index into 1142 expExpression for where the error occurred. The value 1143 zero indicates irrelevance." 1144 ::= { expErrorEntry 2 } 1146 expErrorCode OBJECT-TYPE 1147 SYNTAX INTEGER { 1148 invalidSyntax(1), 1149 undefinedObjectIndex(2), 1150 unrecognizedOperator(3), 1151 unrecognizedFunction(4), 1152 invalidOperandType(5), 1153 unmatchedParenthesis(6), 1154 tooManyWildcardValues(7), 1155 recursion(8), 1156 deltaTooShort(9), 1157 resourceUnavailable(10), 1158 divideByZero(11) 1159 } 1160 MAX-ACCESS read-only 1161 STATUS current 1162 DESCRIPTION 1163 "The error that occurred. In the following explanations the 1164 expected timing of the error is in parentheses. 'S' means 1165 the error occurs on a Set request. 'E' means the error 1166 occurs on the attempt to evaluate the expression either due to 1167 Get from expValueTable or in ongoing delta processing. 1169 invalidSyntax the value sent for expExpression is not 1170 valid Expression MIB expression syntax 1171 (S) 1172 undefinedObjectIndex an object reference ($n) in 1173 expExpression does not have a matching 1174 instance in expObjectTable (E) 1175 unrecognizedOperator the value sent for expExpression held an 1176 unrecognized operator (S) 1177 unrecognizedFunction the value sent for expExpression held an 1178 unrecognized function name (S) 1179 invalidOperandType an operand in expExpression is not the 1180 right type for the associated operator 1181 or result (SE) 1182 unmatchedParenthesis the value sent for expExpression is not 1183 correctly parenthesized (S) 1184 tooManyWildcardValues evaluating the expression exceeded the 1185 limit set by 1186 expResourceDeltaWildcardInstanceMaximum 1187 (E) 1188 recursion through some chain of embedded 1189 expressions the expression invokes itself 1190 (E) 1191 deltaTooShort the delta for the next evaluation passed 1192 before the system could evaluate the 1193 present sample (E) 1194 resourceUnavailable some resource, typically dynamic memory, 1195 was unavailable (SE) 1196 divideByZero an attempt to divide by zero occurred 1197 (E) 1199 For the errors that occur when the attempt is made to set 1200 expExpression Set request fails with the SNMP error code 1201 'wrongValue'. Such failures refer to the most recent failure to 1202 Set expExpression, not to the present value of expExpression 1203 which must be either unset or syntactically correct. 1205 Errors that occur during evaluation for a Get* operation return 1206 the SNMP error code 'genErr' except for 'tooManyWildcardValues' 1207 and 'resourceUnavailable' which return the SNMP error code 1208 'resourceUnavailable'." 1209 ::= { expErrorEntry 3 } 1211 expErrorInstance OBJECT-TYPE 1212 SYNTAX OBJECT IDENTIFIER 1213 MAX-ACCESS read-only 1214 STATUS current 1215 DESCRIPTION 1216 "The expValueInstance being evaluated when the error 1217 occurred. A zero-length indicates irrelevance." 1218 ::= { expErrorEntry 4 } 1220 -- 1221 -- Object Table 1222 -- 1224 expObjectTable OBJECT-TYPE 1225 SYNTAX SEQUENCE OF ExpObjectEntry 1226 MAX-ACCESS not-accessible 1227 STATUS current 1228 DESCRIPTION 1229 "A table of object definitions for each expExpression. 1231 Wildcarding instance IDs: 1233 It is legal to omit all or part of the instance portion for 1234 some or all of the objects in an expression. (See the 1235 DESCRIPTION of expObjectID for details. However, note that 1236 if more than one object in the same expression is wildcarded 1237 in this way, they all must be objects where that portion of 1238 the instance is the same. In other words, all objects may be 1239 in the same SEQUENCE or in different SEQUENCEs but with the 1240 same semantic index value (e.g., a value of ifIndex) 1241 for the wildcarded portion." 1242 ::= { expDefine 3 } 1244 expObjectEntry OBJECT-TYPE 1245 SYNTAX ExpObjectEntry 1246 MAX-ACCESS not-accessible 1247 STATUS current 1248 DESCRIPTION 1249 "Information about an object. An application uses 1250 expObjectEntryStatus to create entries in this table while 1251 in the process of defining an expression. 1253 Values of read-create objects in this table may be 1254 changed at any time." 1255 INDEX { expExpressionOwner, expExpressionName, expObjectIndex } 1256 ::= { expObjectTable 1 } 1258 ExpObjectEntry ::= SEQUENCE { 1259 expObjectIndex Unsigned32, 1260 expObjectID OBJECT IDENTIFIER, 1261 expObjectIDWildcard TruthValue, 1262 expObjectSampleType INTEGER, 1263 expObjectDeltaDiscontinuityID OBJECT IDENTIFIER, 1264 expObjectDiscontinuityIDWildcard TruthValue, 1265 expObjectDiscontinuityIDType INTEGER, 1266 expObjectConditional OBJECT IDENTIFIER, 1267 expObjectConditionalWildcard TruthValue, 1268 expObjectEntryStatus RowStatus 1269 } 1271 expObjectIndex OBJECT-TYPE 1272 SYNTAX Unsigned32 (1..4294967295) 1273 MAX-ACCESS not-accessible 1274 STATUS current 1275 DESCRIPTION 1276 "Within an expression, a unique, numeric identification for an 1277 object. Prefixed with a dollar sign ('$') this is used to 1278 reference the object in the corresponding expExpression." 1279 ::= { expObjectEntry 1 } 1281 expObjectID OBJECT-TYPE 1282 SYNTAX OBJECT IDENTIFIER 1283 MAX-ACCESS read-create 1284 STATUS current 1285 DESCRIPTION 1286 "The OBJECT IDENTIFIER (OID) of this object. The OID may be 1287 fully qualified, meaning it includes a complete instance 1288 identifier part (e.g., ifInOctets.1 or sysUpTime.0), or it 1289 may not be fully qualified, meaning it may lack all or part 1290 of the instance identifier. If the expObjectID is not fully 1291 qualified, then expObjectWildcard must be set to true(1). 1292 The value of the expression will be multiple 1293 values, as if done for a GetNext sweep of the object. 1295 An object here may itself be the result of an expression but 1296 recursion is not allowed. 1298 NOTE: The simplest implementations of this MIB may not allow 1299 wildcards." 1300 ::= { expObjectEntry 2 } 1302 expObjectIDWildcard OBJECT-TYPE 1303 SYNTAX TruthValue 1304 MAX-ACCESS read-create 1305 STATUS current 1306 DESCRIPTION 1307 "A true value indicates the expObjecID of this row is a wildcard 1308 object. False indicates that expObjectID is fully instanced. 1309 If all expObjectWildcard values for a given expression are FALSE, 1310 expExpressionPrefix will reflect a scalar object (i.e. will 1311 be 0.0). 1313 NOTE: The simplest implementations of this MIB may not allow 1314 wildcards." 1315 DEFVAL { false } 1316 ::= { expObjectEntry 3 } 1318 expObjectSampleType OBJECT-TYPE 1319 SYNTAX INTEGER { absoluteValue(1), deltaValue(2), 1320 changedValue(3) } 1321 MAX-ACCESS read-create 1322 STATUS current 1323 DESCRIPTION 1324 "The method of sampling the selected variable. 1326 An 'absoluteValue' is simply the present value of the object. 1328 A 'deltaValue' is the present value minus the previous value, 1329 which was sampled expExpressionDeltaInterval seconds ago. 1330 This is intended primarily for use with SNMP counters, which are 1331 meaningless as an 'absoluteValue', but may be used with any 1332 integer-based value. 1334 A 'changedValue' is a boolean for whether the present value is 1335 different from the previous value. It is applicable to any data 1336 type and results in an Unsigned32 with value 1 if the object's 1337 value is changed and 0 if not. In all other respects it is as a 1338 'deltaValue' and all statements and operation regarding delta 1339 values apply to changed values. 1341 When an expression contains both delta and absolute values 1342 the absolute values are obtained at the end of the delta 1343 period." 1344 DEFVAL { absoluteValue } 1345 ::= { expObjectEntry 4 } 1347 sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } 1349 expObjectDeltaDiscontinuityID OBJECT-TYPE 1350 SYNTAX OBJECT IDENTIFIER 1351 MAX-ACCESS read-create 1352 STATUS current 1353 DESCRIPTION 1354 "The OBJECT IDENTIFIER (OID) of a TimeTicks, TimeStamp, or 1355 DateAndTime object that indicates a discontinuity in the value 1356 at expObjectID. 1358 This object is instantiated only if expObjectSampleType is 1359 'deltaValue' or 'changedValue'. 1361 The OID may be for a leaf object (e.g. sysUpTime.0) or may 1362 be wildcarded to match expObjectID. 1364 This object supports normal checking for a discontinuity in a 1365 counter. Note that if this object does not point to sysUpTime 1366 discontinuity checking must still check sysUpTime for an overall 1367 discontinuity. 1369 If the object identified is not accessible no discontinuity 1370 check will be made." 1371 DEFVAL { sysUpTimeInstance } 1372 ::= { expObjectEntry 5 } 1374 expObjectDiscontinuityIDWildcard OBJECT-TYPE 1375 SYNTAX TruthValue 1376 MAX-ACCESS read-create 1377 STATUS current 1378 DESCRIPTION 1379 "A true value indicates the expObjectDeltaDiscontinuityID of 1380 this row is a wildcard object. False indicates that 1381 expObjectDeltaDiscontinuityID is fully instanced. 1383 This object is instantiated only if expObjectSampleType is 1384 'deltaValue' or 'changedValue'. 1386 NOTE: The simplest implementations of this MIB may not allow 1387 wildcards." 1388 DEFVAL { false } 1389 ::= { expObjectEntry 6 } 1391 expObjectDiscontinuityIDType OBJECT-TYPE 1392 SYNTAX INTEGER { timeTicks(1), timeStamp(2), dateAndTime(3) } 1393 MAX-ACCESS read-create 1394 STATUS current 1395 DESCRIPTION 1396 "The value 'timeTicks' indicates the expObjectDeltaDiscontinuityID 1397 of this row is of syntax TimeTicks. The value 'timeStamp' indicates 1398 syntax TimeStamp. The value 'dateAndTime indicates syntax 1399 DateAndTime. 1401 This object is instantiated only if expObjectSampleType is 1402 'deltaValue' or 'changedValue'." 1403 DEFVAL { timeTicks } 1404 ::= { expObjectEntry 7 } 1406 expObjectConditional OBJECT-TYPE 1407 SYNTAX OBJECT IDENTIFIER 1408 MAX-ACCESS read-create 1409 STATUS current 1410 DESCRIPTION 1411 "The OBJECT IDENTIFIER (OID) of an object that overrides 1412 whether the instance of expObjectID is to be considered 1413 usable. If the value of the object at expObjectConditional 1414 is 0 or not instantiated, the object at expObjectID is 1415 treated as if it is not instantiated. In other words, 1416 expObjectConditional is a filter that controls whether or 1417 not to use the value at expObjectID. 1419 The OID may be for a leaf object (e.g. sysObjectID.0) or may be 1420 wildcarded to match expObjectID. If expObject is wildcarded and 1421 expObjectID in the same row is not, the wild portion of 1422 expObjectConditional must match the wildcarding of the rest of 1423 the expression. If no object in the expression is wildcarded 1424 but expObjectConditional is, use the lexically first instance 1425 (if any) of expObjectConditional. 1427 If the value of expObjectConditional is 0.0 operation is 1428 as if the value pointed to by expObjectConditional is a 1429 non-zero (true) value. 1431 Note that expObjectConditional can not trivially use an object 1432 of syntax TruthValue, since the underlying value is not 0 or 1." 1433 DEFVAL { zeroDotZero } 1434 ::= { expObjectEntry 8 } 1436 expObjectConditionalWildcard OBJECT-TYPE 1437 SYNTAX TruthValue 1438 MAX-ACCESS read-create 1439 STATUS current 1440 DESCRIPTION 1442 "A true value indicates the expObjectConditional of this row is 1443 a wildcard object. False indicates that expObjectConditional is 1444 fully instanced. 1446 NOTE: The simplest implementations of this MIB may not allow 1447 wildcards." 1448 DEFVAL { false } 1449 ::= { expObjectEntry 9 } 1451 expObjectEntryStatus OBJECT-TYPE 1452 SYNTAX RowStatus 1453 MAX-ACCESS read-create 1454 STATUS current 1455 DESCRIPTION 1456 "The control that allows creation/deletion of entries. 1458 Objects in this table may be changed while 1459 expObjectEntryStatus is in any state." 1460 ::= { expObjectEntry 10 } 1462 -- 1463 -- Expression Value Table 1464 -- 1466 expValueTable OBJECT-TYPE 1467 SYNTAX SEQUENCE OF ExpValueEntry 1468 MAX-ACCESS not-accessible 1469 STATUS current 1470 DESCRIPTION 1471 "A table of values from evaluated expressions." 1472 ::= { expValue 1 } 1474 expValueEntry OBJECT-TYPE 1475 SYNTAX ExpValueEntry 1476 MAX-ACCESS not-accessible 1477 STATUS current 1478 DESCRIPTION 1479 "A single value from an evaluated expression. For a given 1480 instance, only one 'Val' object in the conceptual row will be 1481 instantiated, that is, the one with the appropriate type for 1482 the value. For values that contain no objects of 1483 expObjectSampleType 'deltaValue' or 'changedValue', reading a 1484 value from the table causes the evaluation of the expression 1485 for that value. For those that contain a 'deltaValue' or 1486 'changedValue' the value read is as of the last sampling 1487 interval. 1489 If in the attempt to evaluate the expression one or more 1490 of the necessary objects is not available, the corresponding 1491 entry in this table is effectively not instantiated. 1493 To maintain security of MIB information, when creating a new 1494 row in this table, the managed system must record the security 1495 credentials of the requester. These security credentials are 1496 the parameters necessary as inputs to isAccessAllowed from 1497 [RFC2571]. When obtaining the objects that make up the 1498 expression, the system must (conceptually) use isAccessAllowed to 1499 ensure that it does not violate security. 1501 The evaluation of that expression takes place under the 1502 security credentials of the creator of its expExpressionEntry. 1504 To maintain security of MIB information, expression evaluation must 1505 take place using security credentials for the implied Gets of the 1506 objects in the expression as inputs (conceptually) to 1507 isAccessAllowed from the Architecture for Describing SNMP 1508 Management Frameworks. These are the security credentials of the 1509 creator of the corresponding expExpressionEntry." 1510 INDEX { expExpressionOwner, expExpressionName, 1511 IMPLIED expValueInstance } 1512 ::= { expValueTable 1 } 1514 ExpValueEntry ::= SEQUENCE { 1515 expValueInstance OBJECT IDENTIFIER, 1516 expValueCounter32Val Counter32, 1517 expValueUnsigned32Val Unsigned32, 1518 expValueTimeTicksVal TimeTicks, 1519 expValueInteger32Val Integer32, 1520 expValueIpAddressVal IpAddress, 1521 expValueOctetStringVal OCTET STRING, 1522 expValueOidVal OBJECT IDENTIFIER, 1523 expValueCounter64Val Counter64 1524 } 1526 expValueInstance OBJECT-TYPE 1527 SYNTAX OBJECT IDENTIFIER 1528 MAX-ACCESS not-accessible 1529 STATUS current 1530 DESCRIPTION 1531 "The final instance portion of a value's OID according to 1532 the wildcarding in instances of expObjectID for the 1533 expression. The prefix of this OID fragment is 0.0, 1534 leading to the following behavior. 1536 If there is no wildcarding, the value is 0.0.0. In other 1537 words, there is one value which standing alone would have 1538 been a scalar with a 0 at the end of its OID. 1540 If there is wildcarding, the value is 0.0 followed by 1541 a value that the wildcard can take, thus defining one value 1542 instance for each real, possible value of the wildcard. 1543 So, for example, if the wildcard worked out to be an ifIndex, 1544 there is an expValueInstance for each applicable ifIndex." 1545 ::= { expValueEntry 1 } 1547 expValueCounter32Val OBJECT-TYPE 1548 SYNTAX Counter32 1549 MAX-ACCESS read-only 1550 STATUS current 1551 DESCRIPTION 1552 "The value when expExpressionValueType is 'counter32'." 1553 ::= { expValueEntry 2 } 1555 expValueUnsigned32Val OBJECT-TYPE 1556 SYNTAX Unsigned32 1557 MAX-ACCESS read-only 1558 STATUS current 1559 DESCRIPTION 1560 "The value when expExpressionValueType is 'unsigned32'." 1561 ::= { expValueEntry 3 } 1563 expValueTimeTicksVal OBJECT-TYPE 1564 SYNTAX TimeTicks 1565 MAX-ACCESS read-only 1566 STATUS current 1567 DESCRIPTION 1568 "The value when expExpressionValueType is 'timeTicks'." 1569 ::= { expValueEntry 4 } 1571 expValueInteger32Val OBJECT-TYPE 1572 SYNTAX Integer32 1573 MAX-ACCESS read-only 1574 STATUS current 1575 DESCRIPTION 1576 "The value when expExpressionValueType is 'integer32'." 1577 ::= { expValueEntry 5 } 1579 expValueIpAddressVal OBJECT-TYPE 1580 SYNTAX IpAddress 1581 MAX-ACCESS read-only 1582 STATUS current 1583 DESCRIPTION 1584 "The value when expExpressionValueType is 'ipAddress'. 1586 This object type is necessary to support values represented 1587 using the IpAddress type, which is limited to IPv4. IPv6 1588 addressess are represented using the OCTET STRING type, and 1589 would thus show up as instances of expValueOctetStringVal." 1590 ::= { expValueEntry 6 } 1592 expValueOctetStringVal OBJECT-TYPE 1593 SYNTAX OCTET STRING 1594 MAX-ACCESS read-only 1595 STATUS current 1596 DESCRIPTION 1597 "The value when expExpressionValueType is 'octetString'." 1598 ::= { expValueEntry 7 } 1600 expValueOidVal OBJECT-TYPE 1601 SYNTAX OBJECT IDENTIFIER 1602 MAX-ACCESS read-only 1603 STATUS current 1604 DESCRIPTION 1605 "The value when expExpressionValueType is 'objectId'." 1606 ::= { expValueEntry 8 } 1608 expValueCounter64Val OBJECT-TYPE 1609 SYNTAX Counter64 1610 MAX-ACCESS read-only 1611 STATUS current 1612 DESCRIPTION 1613 "The value when expExpressionValueType is 'counter64'." 1614 ::= { expValueEntry 9 } 1616 -- 1617 -- Conformance 1618 -- 1620 dismanExpressionMIBConformance OBJECT IDENTIFIER ::= 1621 { dismanExpressionMIB 3 } 1622 dismanExpressionMIBCompliances OBJECT IDENTIFIER ::= 1623 { dismanExpressionMIBConformance 1 } 1624 dismanExpressionMIBGroups OBJECT IDENTIFIER ::= 1625 { dismanExpressionMIBConformance 2 } 1627 -- Compliance 1629 dismanExpressionMIBCompliance MODULE-COMPLIANCE 1630 STATUS current 1631 DESCRIPTION 1632 "The compliance statement for entities which implement 1633 the Expression MIB." 1634 MODULE -- this module 1635 MANDATORY-GROUPS { 1636 dismanExpressionResourceGroup, 1637 dismanExpressionDefinitionGroup, 1638 dismanExpressionValueGroup 1639 } 1641 OBJECT expResourceDeltaMinimum 1642 SYNTAX Integer32 (-1 | 60..600) 1643 DESCRIPTION 1644 "Implementation need not allow deltas or it may 1645 implement them and restrict them to higher values." 1647 OBJECT expObjectSampleType 1648 WRITE-SYNTAX INTEGER { absoluteValue(1) } 1649 DESCRIPTION 1650 "Implementation may disallow deltas calculation or 1651 change detection." 1653 OBJECT expObjectIDWildcard 1654 WRITE-SYNTAX INTEGER { false(2) } 1655 DESCRIPTION 1656 "Implementation may allow wildcards." 1658 OBJECT expObjectDiscontinuityIDWildcard 1659 WRITE-SYNTAX INTEGER { false(2) } 1660 DESCRIPTION 1661 "Implementation need not allow wildcards." 1663 OBJECT expObjectConditionalWildcard 1664 WRITE-SYNTAX INTEGER { false(2) } 1665 DESCRIPTION 1666 "Implementation need not allow deltas wildcards." 1668 ::= { dismanExpressionMIBCompliances 1 } 1670 -- Units of Conformance 1672 dismanExpressionResourceGroup OBJECT-GROUP 1673 OBJECTS { 1674 expResourceDeltaMinimum, 1675 expResourceDeltaWildcardInstanceMaximum, 1676 expResourceDeltaWildcardInstances, 1677 expResourceDeltaWildcardInstancesHigh, 1678 expResourceDeltaWildcardInstanceResourceLacks 1679 } 1680 STATUS current 1681 DESCRIPTION 1682 "Expression definition resource management." 1683 ::= { dismanExpressionMIBGroups 1 } 1685 dismanExpressionDefinitionGroup OBJECT-GROUP 1686 OBJECTS { 1687 expExpression, 1688 expExpressionValueType, 1689 expExpressionComment, 1690 expExpressionDeltaInterval, 1691 expExpressionPrefix, 1692 expExpressionErrors, 1693 expExpressionEntryStatus, 1695 expErrorTime, 1696 expErrorIndex, 1697 expErrorCode, 1698 expErrorInstance, 1700 expObjectID, 1701 expObjectIDWildcard, 1702 expObjectSampleType, 1703 expObjectDeltaDiscontinuityID, 1704 expObjectDiscontinuityIDWildcard, 1705 expObjectDiscontinuityIDType, 1706 expObjectConditional, 1707 expObjectConditionalWildcard, 1708 expObjectEntryStatus 1709 } 1710 STATUS current 1711 DESCRIPTION 1712 "Expression definition." 1713 ::= { dismanExpressionMIBGroups 2 } 1715 dismanExpressionValueGroup OBJECT-GROUP 1716 OBJECTS { 1717 expValueCounter32Val, 1718 expValueUnsigned32Val, 1719 expValueTimeTicksVal, 1720 expValueInteger32Val, 1721 expValueIpAddressVal, 1722 expValueOctetStringVal, 1723 expValueOidVal, 1724 expValueCounter64Val 1725 } 1726 STATUS current 1727 DESCRIPTION 1728 "Expression value." 1729 ::= { dismanExpressionMIBGroups 3 } 1731 END 1733 4. Intellectual Property 1735 The IETF takes no position regarding the validity or scope of any 1736 intellectual property or other rights that might be claimed to 1737 pertain to the implementation or use of the technology described in 1738 this document or the extent to which any license under such rights 1739 might or might not be available; neither does it represent that it 1740 has made any effort to identify any such rights. Information on the 1741 IETF's procedures with respect to rights in standards-track and 1742 standards- related documentation can be found in BCP-11. Copies of 1743 claims of rights made available for publication and any assurances of 1744 licenses to be made available, or the result of an attempt made to 1745 obtain a general license or permission for the use of such 1746 proprietary rights by implementors or users of this specification can 1747 be obtained from the IETF Secretariat. 1749 The IETF invites any interested party to bring to its attention any 1750 copyrights, patents or patent applications, or other proprietary 1751 rights which may cover technology that may be required to practice 1752 this standard. Please address the information to the IETF Executive 1753 Director. 1755 5. Acknowledgements 1757 This MIB contains considerable contributions from the Distributed 1758 Management Design Team (Andy Bierman, Maria Greene, Bob Stewart, and 1759 Steve Waldbusser), and colleagues at Cisco who did the first 1760 implementation. 1762 6. References 1764 [RFC2571] Harrington, D., Presuhn, R. and B. Wijnen, "An 1765 Architecture Describing SNMP Management Frameworks", RFC 1766 2571, April 1999. 1768 [RFC1155] Rose, M. and K. McCloghrie, "Structure and Identification 1769 of Management Information for TCP/IP-based Internets", 1770 STD 16, RFC 1155, May 1990. 1772 [RFC1212] Rose, M. and K. McCloghrie, "Concise MIB Definitions", 1773 STD 16, RFC 1212, March 1991. 1775 [RFC1215] Rose, M., "A Convention for Defining Traps for use with 1776 the SNMP", RFC 1215, March 1991. 1778 [RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., 1779 Rose, M. and S. Waldbusser, "Structure of Management 1780 Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1781 1999. 1783 [RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., 1784 Rose, M. and S. Waldbusser, "Textual Conventions for 1785 SMIv2", STD 58, RFC 2579, April 1999. 1787 [RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., 1788 Rose, M. and S. Waldbusser, "Conformance Statements for 1789 SMIv2", STD 58, RFC 2580, April 1999. 1791 [RFC1157] Case, J., Fedor, M., Schoffstall, M. and J. Davin, 1792 "Simple Network Management Protocol", STD 15, RFC 1157, 1793 May 1990. 1795 [RFC1901] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, 1796 "Introduction to Community-based SNMPv2", RFC 1901, 1797 January 1996. 1799 [RFC1906] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, 1800 "Transport Mappings for Version 2 of the Simple Network 1801 Management Protocol (SNMPv2)", RFC 1906, January 1996. 1803 [RFC2572] Case, J., Harrington D., Presuhn R. and B. Wijnen, 1804 "Message Processing and Dispatching for the Simple 1805 Network Management Protocol (SNMP)", RFC 2572, April 1806 1999. 1808 [RFC2574] Blumenthal, U. and B. Wijnen, "User-based Security Model 1809 (USM) for version 3 of the Simple Network Management 1810 Protocol (SNMPv3)", RFC 2574, April 1999. 1812 [RFC1905] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, 1813 "Protocol Operations for Version 2 of the Simple Network 1814 Management Protocol (SNMPv2)", RFC 1905, January 1996. 1816 [RFC2573] Levi, D., Meyer, P. and B. Stewart, "SNMPv3 1817 Applications", RFC 2573, April 1999. 1819 [RFC2575] Wijnen, B., Presuhn, R. and K. McCloghrie, "View-based 1820 Access Control Model (VACM) for the Simple Network 1821 Management Protocol (SNMP)", RFC 2575, April 1999. 1823 [RFC2570] Case, J., Mundy, R., Partain, D. and B. Stewart, 1824 "Introduction to Version 3 of the Internet-standard 1825 Network Management Framework", RFC 2570, April 1999. 1827 [RFC1903] Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, 1828 "Coexistence between Version 1 and version 2 of the 1829 Internet-standard Network Management Framework", RFC 1830 1903, January 1996. 1832 [RFC2981] Stewart, B., "Event MIB", RFC 2981, October 2000. 1834 [PracPersp] Leinwand, A. and K. Fang, "Network Management: A 1835 Practical Perspective", Addison-Wesley Publishing 1836 Company, Inc., 1993. 1838 7. Security Considerations 1839 Expression MIB security involves two perspectives: protection of 1840 expressions from tampering or unauthorized use of resources, and 1841 protection of the objects used to calculate the expressions. 1843 Security of expression definitions and results depends on the 1844 expression owner (expExpressionOwner). With view-based access 1845 control [RFC2575] a network manager can control who has what level of 1846 access to what expressions. 1848 Access control for the objects within the expression depends on the 1849 security credentials of the expression creator. These are the 1850 security credentials used to get the objects necessary to evaluate 1851 the expression. They are the security credentials that were used to 1852 set the expExpressionEntryStatus object for that expression to 1853 'active', as recorded by the managed system. 1855 This means that the results of an expression could potentially be 1856 made available to someone who does not have access to the raw data 1857 that went into them. This could be either legitimate or a security 1858 violation, depending on the specific situation and security policy. 1860 To facilitate the provisioning of access control by a security 1861 administrator for this MIB itself using the View-Based Access Control 1862 Model (VACM) defined in RFC 2575 [RFC2575] for tables in which 1863 multiple users may need to independently create or modify entries, 1864 the initial index is used as an "owner index". Such an initial index 1865 has a syntax of SnmpAdminString, and can thus be trivially mapped to 1866 a securityName or groupName as defined in VACM, in accordance with a 1867 security policy. 1869 All entries in related tables belonging to a particular user will 1870 have the same value for this initial index. For a given user's 1871 entries in a particular table, the object identifiers for the 1872 information in these entries will have the same subidentifiers 1873 (except for the "column" subidentifier) up to the end of the encoded 1874 owner index. To configure VACM to permit access to this portion of 1875 the table, one would create vacmViewTreeFamilyTable entries with the 1876 value of vacmViewTreeFamilySubtree including the owner index portion, 1877 and vacmViewTreeFamilyMask "wildcarding" the column subidentifier. 1878 More elaborate configurations are possible. 1880 8. Author's Address 1882 Bob Stewart 1883 Cisco Systems, Inc. 1884 170 West Tasman Drive 1885 San Jose, CA 95134-1706 1886 U.S.A. 1888 9. Editor's Address 1890 Ramanathan Kavasseri 1891 Cisco Systems, Inc. 1892 170 West Tasman Drive 1893 San Jose, CA 95134-1706 1894 U.S.A. 1896 Phone: +1 408 527 2446 1897 EMail: ramk@cisco.com 1899 10. Full Copyright Statement 1901 Copyright (C) The Internet Society (2003). All Rights Reserved. 1903 This document and translations of it may be copied and furnished to 1904 others, and derivative works that comment on or otherwise explain it 1905 or assist in its implementation may be prepared, copied, published 1906 and distributed, in whole or in part, without restriction of any 1907 kind, provided that the above copyright notice and this paragraph are 1908 included on all such copies and derivative works. However, this 1909 document itself may not be modified in any way, such as by removing 1910 the copyright notice or references to the Internet Society or other 1911 Internet organizations, except as needed for the purpose of 1912 developing Internet standards in which case the procedures for 1913 copyrights defined in the Internet Standards process must be 1914 followed, or as required to translate it into languages other than 1915 English. 1917 The limited permissions granted above are perpetual and will not be 1918 revoked by the Internet Society or its successors or assigns. 1920 This document and the information contained herein is provided on an 1921 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 1922 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 1923 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 1924 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 1925 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.