Subject: snmpconf 18.Update capabilities table

From: Jon Saperia <[email-masked]>
Date: Tue, 10 Apr 2001 09:57:22 -0400

Before and during the IETF there was a lot of discussion about the
capabilities table and the capMatch function. I have exchanged some
email and talked with people about this since that time. This is for our
to do item 18 - capabilities table update.

There are now two quite small tables as presented at the IETF.

-- Capabilities table

pmCapabilitiesTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PmCapabilitiesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "The pmCapabilitiesTable lists the capabilities of a system so
         that policies can be differentially installed by management
         systems based on capabilities. The capMatch function uses
         entries in this table, and further modified by the
         pmCapabilitiesOverrideTable, to determine whether or not to
         apply policy actions based on whether the system has a
         particular capability. Capabilities are expressed at the system
         level. That is, entries appear in this table if any element in
         the system has the capability. An entry is removed from this
         table when the last element in the system that has the
         capability is removed."
    ::= { policyMgt 6 }

pmCapabilitiesEntry OBJECT-TYPE
    SYNTAX      PmCapabilitiesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "A capabilities entry holds an OID indicating support for a
         particular capability.  The semantics of the OID are
         defined in the description of pmCapabilitiesType.

         These capabilities need not be limited to those that represent
         MIB modules with one or more configurable objects. It may also
         be valuable to include entries for capabilities that do not
         include configuration objects since that information in
         combination with other entries in this table might be used by
         the management software to determine whether or not to install
         a policy.

         Vendor software may also add entries in this table to express
         capabilities from their private branch."
    INDEX       { pmCapabilitiesType }
    ::= { pmCapabilitiesTable 1 }

PmCapabilitiesEntry ::= SEQUENCE {
    pmCapabilitiesType               OBJECT IDENTIFIER
}

pmCapabilitiesType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	 "There are three types of OIDs that may be present in the
	 pmCapabilitiesType object:

	 1) The OID representing the highest level of compliance for the
	 MIB Module realized by the agent. This value should be from the
	 compliance statements for agents realizing MIB Modules that
	 have been written with them. In the case where multiple levels
	 of compliance are available for a MIB Module, the entry in this
	 table should reflect this highest level of support provided by
	 the agent.  An agent that implements the OSPF MIB module at the
	 highest level of compliance would have the value of
	 '1.3.6.1.2.1.14.15.2' in pmCapabilitiesType object. In the case
	 of software that realizes standard MIB modules that do not have
	 compliance statements, the base OID of the MIB Module should be
	 used instead. If the OSPF MIB Module had not been created with
	 compliance statement, then the correct value of the
	 pmCapabilitiesType would be '1.3.6.1.2.1.14'. In the cases
	 where multiple compliance statements in a MIB Module are
	 supported by the agent, and one compliance statement does not
	 by definition include the other, each of the compliance OIDs
	 would have entries in this table. 

         MIB Documents can contain more than one MIB Module. In the case
         of OSPF, there is a second MIB Module in that document that
         describes traps for the OSPF Version 2 Protocol. If the agent
         also realizes these functions, an entry will also exist for
         those capabilities in this table.

	 2) Vendors should install OIDs in this table that represent
	 vendor-specific capabilities. These capabilities can be
	 expressed just as those described above for standard MIB
	 Modules. In addition, vendors may install any OID they desire
	 from their registered branch. The OIDs may be at any level of
	 granularity, from the root of their entire branch to an
	 instance of a single OID. There is no restriction on the
	 number of registrations they may make, though care should be
	 taken to avoid unnecessary entries.

	 3) OIDs that represent one or a collection of capabilities
	 which could be any collection of MIB Objects or hardware or
	 software functions may be created in working groups and
	 registered with IANA. Other entities (e.g., vendors) may also
	 make registrations. Software will register these standard
	 capability OIDs as well as vendor specific OIDs."
    ::= { pmCapabilitiesEntry 1 }

-- Capabilities override table

pmCapabilitiesOverrideTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PmCapabilitiesOverrideEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "The pmCapabilitiesOverrideTable allows management stations to
         override entries that have been made in the pmCapabilitiesTable
         by native software on the managed system. This facility can be
         used to avoid the condition where managers in the network send
         policies to a system that has advertised a capability in the
         pmCapabilitiesTable but which should not be installed on this
         particular system. One case could be newly deployed equipment
         that is still in a trial state, or when resources are reserved
         for some other administrative reason. This table can also be
         used to override entries in the pmCapabilitiesTable through the
         use of the pmCapabilitiesOverrideState object. Capabilities can
         also be declared available in this table that were not
         registered in the pmCapabilitiesTable. A management application
         can make an entry in this table for any valid OID and declare
         the capability available by setting the
         pmCapabilitiesOverrideState for that row to valid(1)."
    ::= { policyMgt 7 }

pmCapabilitiesOverrideEntry OBJECT-TYPE
    SYNTAX      PmCapabilitiesOverrideEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "An entry in this table indicates whether a particular
         capability is valid or invalid."
    INDEX       { pmCapabilitiesOverrideType }
    ::= { pmCapabilitiesOverrideTable 1 }

PmCapabilitiesOverrideEntry ::= SEQUENCE {
    pmCapabilitiesOverrideType               OBJECT IDENTIFIER,
    pmCapabilitiesOverrideState		     INTEGER,
    pmCapabilitiesOverrideRowStatus	     RowStatus
}

pmCapabilitiesOverrideType OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
	 "This is the OID of the capability that is declared valid or
	 invalid by the pmCapabilitiesOverrideState value for this
	 row. Any valid OID as described in the pmCapabilitiesTable is
	 permitted in the pmCapabilitiesOverrideType object. This means
	 that capabilities can be expressed at any level from a specific
	 instance of an object to a table or entire module. There are no
	 restrictions on whether these objects are from standards track
	 MIB documents or in the private branch of the MIB.

         If an entry exists in this table for which there is a
         corresponding entry in the pmCapabilitiesTable, then this entry
         shall have precedence over the entry in the
         pmCapabilitiesTable. All such entries in this table must be
         preserved across reboots."
    ::= { pmCapabilitiesOverrideEntry 1 }

pmCapabilitiesOverrideState OBJECT-TYPE
    SYNTAX      INTEGER {
                    invalid(0),
                    valid(1)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
	 "A pmCapabilitiesOverrideState of invalid indicates that
	 management software should not send policies to this system for
	 the capability identified in the pmCapabilitiesOverrideType for
	 this row of the table. The capMatch function will always return
	 0 (false) for capabilities marked as invalid using this
	 object. This behavior is the same whether the capability
	 represented by the pmCapabilitiesOverrideType exists only in
	 this table, that is it was installed by an external management
	 application, or exists in this table as well as the
	 pmCapabilitiesTable. This would be the case when a manager
	 wanted to disable a capability that the native management
	 system found and registered in the pmCapabilitiesTable.

         An entry in this table that has a pmCapabilitiesOverrideState
         of valid should be treated as if it appeared in the
         pmCapabilitiesTable. If the entry also exists in the
         pmCapabilitiesTable in the pmCapabilitiesType object, and the
         value of this object is valid, then the system shall operate
         as if this entry did not exist and policy installations and
         executions will continue in a normal fashion."
    ::= { pmCapabilitiesOverrideEntry 2 }

pmCapabilitiesOverrideRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
         "The row status of this pmCapabilitiesOverrideEntry.
    ::= { pmCapabilitiesOverrideEntry 3 }

Thanks,
/jon

--
Jon Saperia		     [email-masked]
			     Phone: 617-744-1079
			     Fax:   617-249-0874
			     http://www.jdscons.com/