RFC1229-MIB DEFINITIONS ::= BEGIN


--        Extensions to MIB-II's Generic Interface Table

IMPORTS
        experimental, Counter         FROM RFC1155-SMI
        DisplayString, PhysAddress    FROM RFC1213-MIB
        OBJECT-TYPE                   FROM RFC-1212;



ifExtensions  OBJECT IDENTIFIER ::= { experimental 6 }


--   Generic Interface Extension Table
--
--  This group of objects is mandatory for all types of
--  subnetwork interface.

ifExtnsTable  OBJECT-TYPE
        SYNTAX SEQUENCE OF IfExtnsEntry
        ACCESS not-accessible
        STATUS mandatory
        DESCRIPTION
               "A list of interfaces extension entries.
                The number of entries is given by the value
                of ifNumber, defined in [4,6]."
        ::= { ifExtensions 1 }

ifExtnsEntry  OBJECT-TYPE
        SYNTAX IfExtnsEntry
        ACCESS not-accessible
        STATUS mandatory
        DESCRIPTION
     "An extension to the interfaces entry,
                defined in [4,6], containing additional
                objects at the subnetwork layer and below
                for a particular interface."
        INDEX  { ifExtnsIfIndex }
        ::= { ifExtnsTable 1 }

IfExtnsEntry ::=
        SEQUENCE {
            ifExtnsIfIndex
                INTEGER,
            ifExtnsChipSet
                OBJECT IDENTIFIER,
            ifExtnsRevWare
                DisplayString,
            ifExtnsMulticastsTransmittedOks
                Counter,
            ifExtnsBroadcastsTransmittedOks
                Counter,
            ifExtnsMulticastsReceivedOks
                Counter,
            ifExtnsBroadcastsReceivedOks
                Counter,
            ifExtnsPromiscuous
                INTEGER
        }

ifExtnsIfIndex  OBJECT-TYPE
        SYNTAX INTEGER
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "The value of this object identifies the
                interface for which this entry contains
                extended management information.  The value
                of this object for a particular interface
                has the same value as the ifIndex object,
                defined in [4,6], for the same interface."
        ::= { ifExtnsEntry 1 }

ifExtnsChipSet  OBJECT-TYPE
        SYNTAX OBJECT IDENTIFIER
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "This object identifies the hardware chip
                set being used in the interface.  The
                assignment of OBJECT IDENTIFIERs to various
                types of hardware chip sets is managed
                by the IANA.  If the hardware chip set is
                unknown, the object identifier

                unknownChipSet OBJECT IDENTIFIER ::= { 0 0 }

                is returned.  Note that unknownChipSet is a
                syntactically valid object identifier, and
                any conformant implementation of ASN.1 and
                the BER must be able to generate and
                recognize this value."
        ::= { ifExtnsEntry 2 }

ifExtnsRevWare  OBJECT-TYPE
        SYNTAX DisplayString (SIZE (0..255))
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "An arbitrary octet string that describes
                the firmware version of this interface.
                It is intended that this should be human
                readable.  It must only contain ASCII
                printable characters.  Typically this
                will be the firmware version of the main
                interface software."
        ::= { ifExtnsEntry 3 }

ifExtnsMulticastsTransmittedOks OBJECT-TYPE
        SYNTAX Counter
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "The count of frames successfully
                transmitted to a subnetwork or link-layer
                multicast destination address other than a
                broadcast address.  For a MAC layer protocol,
                this includes both Group and Functional
                addresses."
        ::= { ifExtnsEntry 4 }

ifExtnsBroadcastsTransmittedOks OBJECT-TYPE
        SYNTAX Counter
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "The count of frames successfully
                transmitted to a subnetwork or link-layer
                broadcast addresses.  It does not include
                frames sent to a multicast address."
        ::= { ifExtnsEntry 5 }

ifExtnsMulticastsReceivedOks OBJECT-TYPE
        SYNTAX Counter
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "The count of frames successfully received
                that are directed to an active subnetwork
                or link-layer multicast address (for a MAC
                layer protocol, this includes both Group and
                Functional addresses). This does not include
                frames directed to a broadcast address, nor
                frames received with errors."
        ::= { ifExtnsEntry 6 }

ifExtnsBroadcastsReceivedOks OBJECT-TYPE
        SYNTAX Counter
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "The count of frames successfully received
                that are directed to a subnetwork or
                link-layer broadcast address.  This does not
                include frames received with errors."
        ::= { ifExtnsEntry 7 }

ifExtnsPromiscuous  OBJECT-TYPE
        SYNTAX INTEGER {
                    true(1),
                    false(2)
               }
        ACCESS read-only  -- Note: agent implementors are
                          -- encouraged to extend this
                          -- access to read-write if that
                          -- makes sense in their agent.
        STATUS mandatory
        DESCRIPTION
               "This object has a value of false(2) if
                this interface only accepts packets/frames
                that are addressed to this station. This
                object has a value of true(1) when the
                station accepts all packets/frames
                transmitted on the media.  The value
                true(1) is only legal on certain types of
                media.  If legal, setting this object to a
                value of true(1) may require the interface
                to be reset before becoming effective."
        ::= { ifExtnsEntry 8 }

--
--    Generic Interface Test Table
--
-- This group of objects is optional, but if the table is
-- implemented, all objects in the table must be implemented.

ifExtnsTestTable   OBJECT-TYPE

        SYNTAX  SEQUENCE OF IfExtnsTestEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "This table contains one entry per interface."
        ::= { ifExtensions 2 }

ifExtnsTestEntry OBJECT-TYPE
        SYNTAX  IfExtnsTestEntry
        ACCESS  not-accessible
        STATUS  mandatory
        DESCRIPTION
                "An entry containing objects for invoking
                 tests on an interface."
        INDEX   { ifExtnsTestIfIndex }
        ::= { ifExtnsTestTable 1 }

IfExtnsTestEntry ::=
        SEQUENCE {
            ifExtnsTestIfIndex
                INTEGER,
            ifExtnsTestCommunity
                OCTET STRING,
            ifExtnsTestRequestId
                INTEGER,
            ifExtnsTestType
                OBJECT IDENTIFIER,
            ifExtnsTestResult
                INTEGER,
            ifExtnsTestCode
                OBJECT IDENTIFIER
        }

ifExtnsTestIfIndex  OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
               "The value of this object identifies the
                interface for which this entry contains
                information on interface tests.  The value
                of this object for a particular interface
                has the same value as the ifIndex object,
                defined in [4,6], for the same interface."
        ::= { ifExtnsTestEntry 1 }

ifExtnsTestCommunity  OBJECT-TYPE
        SYNTAX  OCTET STRING
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
               "This object contains the name of the SNMP
                authentication community [5] which was used
                to authenticate the SNMP Message which invoked
                the current or most recent test on this
                interface.  If the authentication community
                is unknown or undefined, this value contains
                the zero-length string."
        ::= { ifExtnsTestEntry 2 }

ifExtnsTestRequestId  OBJECT-TYPE
        SYNTAX  INTEGER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
               "This object contains the value of the
                request-id field in the SNMP PDU [5] which
                invoked the current or most recent test on
                this interface.  If the request-id is
                unknown or undefined, this value contains
                the value zero."
        ::= { ifExtnsTestEntry 3 }

ifExtnsTestType  OBJECT-TYPE
        SYNTAX  OBJECT IDENTIFIER
        ACCESS  read-write
        STATUS  mandatory
        DESCRIPTION
               "A control variable used to start and stop
                operator-initiated interface tests.
                    Most OBJECT IDENTIFIER values assigned
                to tests are defined elsewhere, in associ-
                ation with specific types of interface.
                However, this document assigns a value for
                a full-duplex loopback test, and defines the
                special meanings of the subject identifier:

                  noTest  OBJECT IDENTIFIER ::= { 0 0 }

                When the value noTest is written to this
                object, no action is taken unless a test is
                in progress, in which case the test is
                aborted.  Writing any other value to this
                object is only valid when no test is
                currently in progress, in which case the
                indicated test is initiated.
                    Note that noTest is a syntactically valid
                object identifier, and any conformant
                implementation of ASN.1 and BER must be able
                to generate and recognize this value.
                    When read, this object always returns
                the most recent value that ifExtnsTestType
                was set to.  If it has not been set since
                the last initialization of the network
                management subsystem on the agent, a value
                of noTest is returned."
        ::= { ifExtnsTestEntry 4 }

wellKnownTests OBJECT IDENTIFIER ::= { ifExtensions 4 }

--  full-duplex loopback test
testFullDuplexLoopBack OBJECT IDENTIFIER ::=
                                        { wellKnownTests 1 }

ifExtnsTestResult  OBJECT-TYPE
        SYNTAX  INTEGER {
                    none(1),        -- no test yet requested
                    success(2),
                    inProgress(3),
                    notSupported(4),
                    unAbleToRun(5), -- due to state of system
                    aborted(6),
                    failed(7)
                }
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
               "This object contains the result of the most
                recently requested test, or the value
                none(1) if no tests have been requested since
                the last reset.  Note that this facility
                provides no provision for saving the results
                of one test when starting another, as could
                be required if used by multiple managers
                concurrently."
        ::= { ifExtnsTestEntry 5 }

ifExtnsTestCode  OBJECT-TYPE
        SYNTAX  OBJECT IDENTIFIER
        ACCESS  read-only
        STATUS  mandatory
        DESCRIPTION
               "This object contains a code which contains
                more specific information on the test result,
                for example an error-code after a failed
                test.  Error codes and other values this
                object may take are specific to the type of
                interface and/or test.  However, one subject
                identifier:

                testCodeUnknown  OBJECT IDENTIFIER ::= { 0 0 }

                for use if no additional result code is
                available.
                    Note that testCodeUnknown is a
                syntactically valid object identifier, and
                any conformant implementation of ASN.1 and
                the BER must be able to generate and
                recognize this value."
        ::= { ifExtnsTestEntry 6 }


--   Generic Receive Address Table
--
-- This group of objects is mandatory for all types of
-- interfaces which can receive packets/frames addressed to
-- more than one address.

ifExtnsRcvAddrTable  OBJECT-TYPE
        SYNTAX SEQUENCE OF IfExtnsRcvAddrEntry
        ACCESS not-accessible
        STATUS mandatory
        DESCRIPTION
               "This table contains an entry for each
                address (broadcast, multicast, or uni-cast)
                for which the system will receive packets/
                frames on a particular interface.  When an
                interface is operating in promiscuous mode,
                entries are only required for those addresses
                for which the system would receive frames
                were it not operating in promiscuous mode."
        ::= { ifExtensions 3 }

ifExtnsRcvAddrEntry  OBJECT-TYPE
        SYNTAX IfExtnsRcvAddrEntry
        ACCESS not-accessible
        STATUS mandatory
        DESCRIPTION
               "A list of objects identifying an address
                for which the system will accept packets/
                frames on a particular interface."
        INDEX  { ifExtnsRcvAddrIfIndex, ifExtnsRcvAddress }
        ::= { ifExtnsRcvAddrTable 1 }

IfExtnsRcvAddrEntry ::=
        SEQUENCE {
            ifExtnsRcvAddrIfIndex
                INTEGER,
            ifExtnsRcvAddress
                PhysAddress,
            ifExtnsRcvAddrStatus
                INTEGER
        }

ifExtnsRcvAddrIfIndex  OBJECT-TYPE
        SYNTAX INTEGER
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "The value of ifIndex, defined in [4,6], of an
                interface which recognizes this entry's
                address."
        ::= { ifExtnsRcvAddrEntry 1 }

ifExtnsRcvAddress OBJECT-TYPE
        SYNTAX PhysAddress
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
               "An address for which the system will accept
                packets/frames on this entry's interface."
        ::= { ifExtnsRcvAddrEntry 2 }

ifExtnsRcvAddrStatus OBJECT-TYPE
        SYNTAX INTEGER {
                   other(1),
                   invalid(2),
                   volatile(3),
                   nonVolatile(4)
               }
        ACCESS read-write
        STATUS mandatory
        DESCRIPTION
               "This object has the value nonVolatile(4)
                for those entries in the table which are
                valid and will not be deleted by the next
                restart of the managed system.  Entries
                having the value volatile(3) are valid
                and exist, but have not been saved, so
                that will not exist after the next
                restart of the managed system.  Entries
                having the value other(1) are valid and
                exist but are not classified as to whether
                they will continue to exist after the next
                restart.  Entries having the value invalid(2)
                are invalid and do not represent an address
                for which an interface accepts frames.
                    Setting an object instance to one of
                the values other(1), volatile(3), or
                nonVolatile(4) causes the corresponding
                entry to exist or continue to exist, and
                to take on the respective status as regards
                the next restart of the managed system.
                    Setting an object instance to the value
                invalid(2) causes the corresponding entry
                to become invalid or cease to exist.
                    It is an implementation-specific matter
                as to whether the agent removes an
                invalidated entry from the table.
                Accordingly, management stations must be
                prepared to receive tabular information
                from agents that corresponds to entries not
                currently in use.  Proper interpretation of
                such entries requires examination of the
                relevant ifExtnsRcvAddrStatus object
                instance."
        DEFVAL  { volatile }
        ::= { ifExtnsRcvAddrEntry 3 }

END
