-- *****************************************************************
-- CISCO-IP-IF-MIB.my
--
-- September 2002, Jayakumar Kadirvelu
-- 
--
-- Copyright (c) 2002 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************
--
CISCO-IP-IF-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    ciscoMgmt
        FROM CISCO-SMI
    RowStatus, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    InetAddressPrefixLength,
    InetAddressType,
    InetAddress
        FROM INET-ADDRESS-MIB
    InterfaceIndex
        FROM IF-MIB;

ciscoIPIfMIB MODULE-IDENTITY
    LAST-UPDATED        "200210120000Z"
    ORGANIZATION        "Cisco Systems, Inc."
    CONTACT-INFO
       "Cisco Systems
        Customer Service
        Postal: 170 W Tasman Drive
        San Jose, CA  95134
        USA
        Tel: +1 800 553-NETS

        E-mail: cs-wbu@cisco.com"
    DESCRIPTION
        "The MIB module for configuring IP characteristics
         of the interfaces of a device."
    REVISION        "200210120000Z"
    DESCRIPTION
        "Added ciiIPIfAddressTable.
         Added ciiIPIfAddressChangeNotify notification.
         Deprecated ciscoIPIfMIBCompliance and added
         ciscoIPIfMIBCompliance1.
         Added ciscoIPIfAddressConfigurationGroup3, 
         ciscoIPIfAddressConfigurationGroup4, 
         ciscoIPIfNotificationGroup. 
         Added IpAddressCatagory  TC."
    REVISION        "200210100000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { ciscoMgmt 309 }

ciscoIPIfMIBNotifs        OBJECT IDENTIFIER ::= { ciscoIPIfMIB 0 }
ciscoIPIfMIBObjects       OBJECT IDENTIFIER ::= { ciscoIPIfMIB 1 }    
ciscoIPIfMIBConform       OBJECT IDENTIFIER ::= { ciscoIPIfMIB 2 }

ciiIPAddressConfiguration OBJECT IDENTIFIER
    ::=  { ciscoIPIfMIBObjects 1 }
ciiIPIfNotifications OBJECT IDENTIFIER
    ::=  { ciscoIPIfMIBNotifs 0 }



-- Textual Conventions
--
IpAddressCatagory ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION    "Represents the IP address category.
                     single(1) - Indicates that the IP addressing 
                                 information for this interface,
                                 has no primary/secondary category.

                     primary(2) - Indicates that this interface
                                  provides primary IP addressing
                                  information.

                     secondary(3) - Indicates that this interface
                                    provides a secondary IP 
                                    addressing information. There 
                                    may be more than one seconday
                                    IP addressing information for
                                    an interface. "
     SYNTAX         INTEGER { 
                     single(1), 
                     primary(2),
                     secondary(3)
                    }


--
-- IP Address Configuration objects
--

ciiIPAddressCategoryCap OBJECT-TYPE
    SYNTAX     BITS { single(0), primary(1), secondary(2) }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object indicates what types of IP address category can
         be configured on this device.

         single(0) means that each interface on the device can be
         assigned only one IP address.

         primary(1) means that each interface on the device can be
         assigned an IP address as the primary one.

         secondary(2) means that each interface on the device can be
         assigned an IP address as the secondary one.

         Devices which has the single(0) bit set to 1, should have 
         the primary(1) and secondary(2) bits set to 0.
         Likewise devices which have the primary(1) and/or 
         secondary(2) bits set to 1, should have the single(0)
         set to 0."

    ::= { ciiIPAddressConfiguration 1 }

ciiIPAddressTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CiiIPAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table of addressing information relevant to
         this entity's IP addresses. This is the enhancement of
         the ipAddrTable in IP-MIB."
    REFERENCE
        "RFC 2011"
 
    ::= { ciiIPAddressConfiguration 2 }

ciiIPAddressEntry OBJECT-TYPE
    SYNTAX     CiiIPAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The addressing information for one of this
         entity's IP addresses.
         
         The only way an entry can be created is by setting the
         ciiIPAddressStatus object to 'create and go' and the 
         only way an entry can be destroyed is by setting the
         ciiIPAddressStatus object to 'destroy'.

         Any column in the  entry may be modified anytime,
         when the value of ciiIPAddressStatus is 'active'."
    INDEX { ciiIPAddressType, ciiIPAddress } 
    ::= { ciiIPAddressTable 1 }

CiiIPAddressEntry ::= SEQUENCE {
    ciiIPAddressType          InetAddressType,
    ciiIPAddress              InetAddress,
    ciiIPAddressIfIndex       InterfaceIndex,
    ciiIPAddressPrefixLength  InetAddressPrefixLength, 
    ciiIPAddressBroadcast     InetAddress,
    ciiIPAddressCategory      IpAddressCatagory,
    ciiIPAddressStatus        RowStatus
    }

ciiIPAddressType OBJECT-TYPE
    SYNTAX    InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The type of Internet address for all the objects with SYNTAX
         InetAddress and InetAddressPrefixLength in this entry."
    ::= { ciiIPAddressEntry 1 }

ciiIPAddress OBJECT-TYPE 
    SYNTAX     InetAddress (SIZE (1..36))
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The IP address to which this entry's addressing 
         information pertains." 
    ::= { ciiIPAddressEntry 2 }

ciiIPAddressIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The index value which uniquely identifies the
         interface to which this entry is applicable. 
         ciiIPAddressIfIndex is the same as the ifIndex of the
         interface associated with this ciiIPAddressEntry." 
    ::= { ciiIPAddressEntry 3 }

ciiIPAddressPrefixLength OBJECT-TYPE 
    SYNTAX     InetAddressPrefixLength  
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The length of the prefix associated with the IP address 
         of this entry. 
         A value of zero causes all addresses to match.
         The type of address is specified by ciiIPAddressType of 
         this entry."
    ::= { ciiIPAddressEntry 4 }

ciiIPAddressBroadcast OBJECT-TYPE
    SYNTAX     InetAddress 
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The broadcast address associated with the
         IP address of  this entry.
         The type of address is specified by ciiIPAddressType of 
         this entry."
    ::= { ciiIPAddressEntry 5 }

ciiIPAddressCategory OBJECT-TYPE
    SYNTAX     IpAddressCatagory 
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "Indicates the IP address category of this entry.
         Setting of this object has to comply with the value of
         ciiIPAddressCategoryCap. " 
     ::= { ciiIPAddressEntry 6 }

ciiIPAddressStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object is used to manage creation and deletion of rows
         in this table.

         ciiIPAddressStatus must be set to 'creatAndGo' to create 
         an entry and set to 'destroy' to delete an entry.

         The value in any column may be modified any time even the
         value of this entry rowStatus object is 'active'.

         Caution has to be taken before destroying any entry. 
         Example: Need to change the IP address of an interface,
         which provides sole network connectivity.
         This has to be done by destroying the entry and creating
         a new one. The device would loose network connectivity
         after the entry is destroyed. In this case, the destroy 
         of the old entry and the creation on the new entry
         should be packed in the same PDU."

    ::= { ciiIPAddressEntry 7 }

--
-- ciiIPIfAddressTable
--

ciiIPIfAddressTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CiiIPIfAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table of addressing information relevant to
         this entity's IP addresses. This is the enhancement of
         the ipAddrTable in IP-MIB.
         This table is same as ciiIPAddressTable accept
         that ciiIPIfAddressIfIndex is part of the INDEX 
         clause.
         This table is used to configure an IP address on a 
         interface identified by ifIndex. Each interface can be
         configured with multiple IP addresses.
         When requested to create/delete an entry in this
         table, the agent also creates/deletes a
         correspondng entry in the ipAddrTable of rfc2011.
         Entries in this table are created/deleted only by 
         network managers. Agents will typically only allow
         entries to be created on a subset of ifIndex values. "     
    REFERENCE
        "RFC 2011"
 
    ::= { ciiIPAddressConfiguration 3 }

ciiIPIfAddressEntry OBJECT-TYPE
    SYNTAX     CiiIPIfAddressEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The addressing information for one of this
         entity's IP addresses.
         
         The only way an entry can be created is by setting the
         ciiIPIfAddressStatus object to 'create and go' and the 
         only way an entry can be destroyed is by setting the
         ciiIPIfAddressStatus object to 'destroy'.

         Any column in the  entry may be modified anytime,
         when the value of ciiIPIfAddressStatus is 'active'.
         "
    INDEX { ciiIPAddressIfIndex, ciiIPAddressType, 
            ciiIPAddress } 
    ::= { ciiIPIfAddressTable 1 }

CiiIPIfAddressEntry ::= SEQUENCE {
    ciiIPIfAddressPrefixLength  InetAddressPrefixLength, 
    ciiIPIfAddressBroadcast     InetAddress,
    ciiIPIfAddressCategory      IpAddressCatagory,
    ciiIPIfAddressStatus        RowStatus
    }

ciiIPIfAddressPrefixLength OBJECT-TYPE 
    SYNTAX     InetAddressPrefixLength  
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The length of the prefix associated with the IP address 
         of this entry. 
         A value of zero causes all addresses to match.
         The type of address is specified by ciiIPAddressType of 
         this entry.
         This object is same as the ciiIPAddressPrefixLength
         object, and changes to one will affect the other. "
    ::= { ciiIPIfAddressEntry 1 }

ciiIPIfAddressBroadcast OBJECT-TYPE
    SYNTAX     InetAddress 
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The broadcast address associated with the
         IP address of  this entry.
         The type of address is specified by ciiIPAddressType of 
         this entry.
         This object is same as the ciiIPAddressBroadcast 
         object, and changes to one will affect the other. "
    ::= { ciiIPIfAddressEntry 2 }

ciiIPIfAddressCategory OBJECT-TYPE
    SYNTAX     IpAddressCatagory
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "Indicates the IP address category of this entry.
         Setting of this object has to comply with the value of
         ciiIPAddressCategoryCap.
         
         This object is same as the ciiIPAddressCategory 
         object, and changes to one will affect the other. "
    ::= { ciiIPIfAddressEntry 3 }

ciiIPIfAddressStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object is used to manage creation and deletion of rows
         in this table.

         ciiIPAddressStatus must be set to 'creatAndGo' to create 
         an entry and set to 'destroy' to delete an entry.

         The value in any column may be modified any time even the
         value of this entry rowStatus object is 'active'.

         Caution has to be taken before destroying any entry. 
         Example: Need to change the IP address of an interface,
         which provides sole network connectivity.
         This has to be done by destroying the entry and creating
         a new one. The device would loose network connectivity
         after the entry is destroyed. In this case, the destroy 
         of the old entry and the creation on the new entry
         should be packed in the same PDU."
    ::= { ciiIPIfAddressEntry 4 }

-- Notifications
-- None

-- Conformance
ciscoIPIfMIBCompliances OBJECT IDENTIFIER 
                     ::= { ciscoIPIfMIBConform 1 }
ciscoIPIfMIBGroups      OBJECT IDENTIFIER 
                     ::= { ciscoIPIfMIBConform 2 }


ciscoIPIfMIBCompliance MODULE-COMPLIANCE
     STATUS      deprecated -- superceded by ciscoIPIfMIBCompliance1 
     DESCRIPTION
         "The compliance statement for the CISCO-IP-IF-MIB.

          OBJECT ciiIPAddressType
          SYNTAX  INTEGER { ipv4(1) }
          DESCRIPTION
              An implementation is only required to support IPv4
              addresses.
     
          OBJECT ciiIPAddress
          SYNTAX InetAddress (SIZE(4))
          DESCRIPTION
              An implementation is only required to support IPv4
              addresses."

     MODULE  -- this module
     MANDATORY-GROUPS {
                      ciscoIPIfAddressConfigurationGroup1
                      }

     GROUP ciscoIPIfAddressConfigurationGroup2
     DESCRIPTION
         "Implementation of this group is optional." 

     OBJECT ciiIPAddressBroadcast
     SYNTAX InetAddress (SIZE(4))
     MIN-ACCESS read-only
     DESCRIPTION
         "An implementation is only required if the value of
          ciiIPAddressType in the same conceptual row is ipv4(1). 

          Write access is not required."

     OBJECT ciiIPAddressStatus
     SYNTAX INTEGER { active(1), createAndGo(4), destroy(6) }
     DESCRIPTION
         "An implementation is only required to support
          three of the six enumerated values of the RowStatus
          textual convention, specifically: active(1),
          createAndGo(4), and destroy(6)."

     ::= { ciscoIPIfMIBCompliances 1 }

ciscoIPIfMIBCompliance1 MODULE-COMPLIANCE
     STATUS       current
     DESCRIPTION
         "The compliance statement for the CISCO-IP-IF-MIB. 

          OBJECT ciiIPAddressType
          SYNTAX  INTEGER { ipv4(1) }
          DESCRIPTION
              An implementation is only required to support IPv4
              addresses.
     
          OBJECT ciiIPAddress
          SYNTAX InetAddress (SIZE(4))
          DESCRIPTION
              An implementation is only required to support IPv4
              addresses. "

     MODULE  -- this module
     -- MANDATORY-GROUPS {}


     GROUP ciscoIPIfAddressConfigurationGroup1
     DESCRIPTION
         "Implementation of this group is optional. But in an 
          implementaion of this mib, either 
          ciscoIPIfAddressConfigGroup1 or 
          ciscoIPIfAddressConfigGroup3 must be 
          implemented. "

     GROUP ciscoIPIfAddressConfigurationGroup2
     DESCRIPTION
         "Implementation of this group is optional."

     GROUP ciscoIPIfAddressConfigurationGroup3
     DESCRIPTION
         "Implementation of this group is optional. But in an 
          implementaion of this mib, either 
          ciscoIPIfAddressConfigGroup1 or 
          ciscoIPIfAddressConfigGroup3 must be 
          implemented. "

     GROUP ciscoIPIfAddressConfigurationGroup4
     DESCRIPTION
         "Implementation of this group is optional."

 
     OBJECT ciiIPAddressBroadcast
     SYNTAX InetAddress (SIZE(4))
     MIN-ACCESS read-only
     DESCRIPTION
         "An implementation is only required if the value of
          ciiIPAddressType in the same conceptual row is ipv4(1).

          Write access is not required."

     OBJECT ciiIPAddressStatus
     SYNTAX INTEGER { active(1), createAndGo(4), destroy(6) }
     DESCRIPTION
         "An implementation is only required to support
          three of the six enumerated values of the RowStatus
          textual convention, specifically: active(1),
          createAndGo(4), and destroy(6)."
     
     OBJECT ciiIPIfAddressBroadcast
     SYNTAX InetAddress (SIZE(4))
     MIN-ACCESS read-only
     DESCRIPTION
         "An implementation is only required if the value of
          ciiIPAddressType in the same conceptual row is ipv4(1).

          Write access is not required."

     OBJECT ciiIPIfAddressStatus
     SYNTAX INTEGER { active(1), createAndGo(4), destroy(6) }
     DESCRIPTION
         "An implementation is only required to support
          three of the six enumerated values of the RowStatus
          textual convention, specifically: active(1),
          createAndGo(4), and destroy(6)."

     OBJECT ciiIPIfAddressCategory
     MIN-ACCESS read-only
     DESCRIPTION
         "Write access is not required."

     ::= { ciscoIPIfMIBCompliances 2 }

-- Units of Conformance

ciscoIPIfAddressConfigurationGroup1 OBJECT-GROUP
       OBJECTS {
            ciiIPAddressCategoryCap,
            ciiIPAddressIfIndex,
            ciiIPAddressPrefixLength,
            ciiIPAddressCategory,
            ciiIPAddressStatus
       }
       STATUS current
       DESCRIPTION
           "A collection of objects for the address configuration
            of interfaces."
       ::= { ciscoIPIfMIBGroups 1 }

ciscoIPIfAddressConfigurationGroup2 OBJECT-GROUP
       OBJECTS {
            ciiIPAddressBroadcast
       }
       STATUS current
       DESCRIPTION
           "A collection of objects for the broadcast address 
            configuration of interfaces."
       ::= { ciscoIPIfMIBGroups 2 }

ciscoIPIfAddressConfigurationGroup3 OBJECT-GROUP
       OBJECTS {
            ciiIPAddressCategoryCap,
            ciiIPIfAddressPrefixLength,
            ciiIPIfAddressCategory,
            ciiIPIfAddressStatus
       }
       STATUS current
       DESCRIPTION
           "A collection of objects for the address configuration
            of interfaces."
       ::= { ciscoIPIfMIBGroups 3 }

ciscoIPIfAddressConfigurationGroup4 OBJECT-GROUP
       OBJECTS {
            ciiIPIfAddressBroadcast
       }
       STATUS current
       DESCRIPTION
           "A collection of objects for the broadcast address 
            configuration of interfaces."
       ::= { ciscoIPIfMIBGroups 4 }

END
