-- ********************************************************************
-- CISCO-ISNS-IP-NW-DISCOVERY-MIB.my 
--
-- August 2004, Arul Mozhi 
--
-- Copyright (c) 2004 by cisco Systems, Inc.
-- All rights reserved.
-- 
-- ********************************************************************

CISCO-ISNS-IP-NW-DISCOVERY-MIB DEFINITIONS ::= BEGIN

IMPORTS        
       MODULE-IDENTITY, 
       OBJECT-TYPE,
       Integer32 
           FROM SNMPv2-SMI

       MODULE-COMPLIANCE, 
       OBJECT-GROUP                           
           FROM SNMPv2-CONF

       TruthValue,
       TestAndIncr,
       RowStatus                              
           FROM SNMPv2-TC 

       SnmpAdminString                        
           FROM SNMP-FRAMEWORK-MIB

       InterfaceIndex, 
       InterfaceIndexOrZero    
           FROM IF-MIB

       FcNameId                               
           FROM CISCO-ST-TC

       ciscoMgmt           
           FROM CISCO-SMI;

ciscoIsnsIpNetDiscoveryMIB MODULE-IDENTITY
       LAST-UPDATED "200409080000Z"
       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-san@cisco.com"
       DESCRIPTION
           "MIB to provide the information about the disjoint 
            IP networks connected to the various gigabit ethernet
            interfaces in the 'Fabric' and objects to discover 
            the same.
   
            It is possible that multiple disjoint IP networks
            may terminate on a single fibre channel switch
            in a Fabric.

            In such a scenario, the iSNS Server has to ensure that 
            the targets returned on a query by iscsi devices are 
            filter based on access control list (specified by the
            user during configuration) and also based on gigabit 
            ethernet ports which are reachable to the IP network, 
            on which the iscsi device is present.

            To achieve the above objective, the iSNS server 
            partitions all known gigabit ethernet ports into 
            disjoint sets based on IP reachability by sending 
            discovery packets. Each set is referred to as an 
            IP Network and the gigabit ethernet ports contained
            therein are referred to as IP Network members. 

            This MIB provides ability to initiate, configure and 
            show discovery results of the IP Networks in 
            the fabric.

            GLOSSARY: 

            Fabric - The set of physically connected fibre channel 
                     switches. 
            WWN    - World Wide Name.
            ISNS   - Internet Storage Name Service." 

       REVISION   "200409080000Z"
       DESCRIPTION
           "Initial version of this MIB module."
       ::= { ciscoMgmt 434 }

ciscoIsnsIpNetDiscoveryMIBNotifs 
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryMIB 0 }
ciscoIsnsIpNetDiscoveryMIBObjs 
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryMIB 1 }
ciscoIsnsIpNetDiscoveryConform   
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryMIB 2 }

ciscoIsnsIpNetDiscoveryMIBInfo 
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryMIBObjs 1 }

ciscoIsnsIpNetDiscoveryMIBConfig 
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryMIBObjs 2 }

--
--  IP Network Automatic Discovery Information 
--

ciscoIsnsIpNetAutomaticDiscovery OBJECT-TYPE
       SYNTAX       TruthValue
       MAX-ACCESS   read-write
       STATUS       current
       DESCRIPTION
           "This object indicates whether the automatic discovery 
            from the iSNS Server, to find the reachability on
            the IP networks is enabled or not in the system. 

            If automatic discovery is not enabled in the system, 
            then based on the user demand only, the iSNS Server 
            runs the IP network discovery.

            The value of this object set to 'true' indicates the
            automatic discovery for IP network is enabled in 
            the system.

            The value of this object set to 'false' indicates the
            automatic discovery for IP network is not enabled in
            the system."
       DEFVAL { false } 
       ::= { ciscoIsnsIpNetDiscoveryMIBInfo 1 }

ciscoIsnsIpNetDiscoveryInterval OBJECT-TYPE
       SYNTAX        Integer32 ( 0 .. 5184000)
       UNITS         "seconds"
       MAX-ACCESS    read-write
       STATUS        current
       DESCRIPTION
           "This object indicates the time duration between 
            successive automatic discovery run for the  
            IP networks, from the iSNS server."
       DEFVAL   { 10 }
       ::= { ciscoIsnsIpNetDiscoveryMIBInfo 2 }

--
-- Disjoint IP Networks Configured/Discovered 
--

ciscoIsnsIpNetTable OBJECT-TYPE
       SYNTAX       SEQUENCE OF CiscoIsnsIpNetEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "Represents the list of all the IP networks connected
            to the gigabit ethernet interfaces in the fabric." 
       ::= { ciscoIsnsIpNetDiscoveryMIBInfo 3 }

ciscoIsnsIpNetEntry OBJECT-TYPE
       SYNTAX       CiscoIsnsIpNetEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "An entry represents the information about an
            IP network connected to the gigabit ethernet interface 
            in the fabric.

            The 'ciscoIsnsIpNetDiscoveryMechanism' object 
            represents, whether the corresponding entry is 
            populated by the discovery process or by the static
            configuration of the user." 
       INDEX   { ciscoIsnsIpNetName }
       ::= { ciscoIsnsIpNetTable 1 }

CiscoIsnsIpNetEntry ::=
       SEQUENCE {
           ciscoIsnsIpNetName                   SnmpAdminString,
           ciscoIsnsIpNetDiscoveryMechanism     INTEGER,
           ciscoIsnsIpNetRowStatus              RowStatus 
       }

ciscoIsnsIpNetName OBJECT-TYPE
       SYNTAX       SnmpAdminString (SIZE (1..100))
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "A human readable unique string representing the name
            of an IP network.

            This name is used to identify the IP network to which
            the gigabit ethernet interfaces/subinterfaces in the
            fabric belongs."
       ::= { ciscoIsnsIpNetEntry 1 }

ciscoIsnsIpNetDiscoveryMechanism OBJECT-TYPE
       SYNTAX   INTEGER {
             autoGenerated (1),
             userConfigured (2)
       }
       MAX-ACCESS   read-create
       STATUS       current
       DESCRIPTION
           "This object represents whether the IP network is 
            dynamically discovered by the discovery process (or) 
            statically configured by the user.

            autoGenerated (1)  - dynamically discovered by the 
                                 discovery process.
            userConfigured (2) - IP network configuration is 
                                 statically created by user.  
               
            An attempt to modify this object will fail with an
            'inconsistentValue' error if the corresponding 
            instance of the 'ciscoIsnsIpNetRowStatus' object 
            value is active (1).

            For Row creation the value of this object is
            should be 'userConfigured'.

            This object represents whether the corresponding 
            instance of IP network and its members represented
            in the 'ciscoIsnsIpNetInterfaceTable' are created 
            by the discovery process or by the static 
            configuration of the user."
       DEFVAL  { userConfigured }
       ::= { ciscoIsnsIpNetEntry 2 }

ciscoIsnsIpNetRowStatus OBJECT-TYPE
       SYNTAX       RowStatus 
       MAX-ACCESS   read-create
       STATUS       current
       DESCRIPTION
           "This object indicates the status of this entry in the
            table."
       ::= { ciscoIsnsIpNetEntry 3 }

--
-- Table for associating gigabit ethernet interfaces 
-- to the IP-network.
--

ciscoIsnsIpNetInterfaceTable OBJECT-TYPE
       SYNTAX       SEQUENCE OF CiscoIsnsIpNetInterfaceEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "A table consisting of entries for all the gigabit 
            ethernet interfaces, which are connected to the 
            various IP networks in the Fabric.

            The members of the IP networks are either statically 
            configured by the user or dynamically discovered by 
            the discovery process in the iSNS Server."
       ::= { ciscoIsnsIpNetDiscoveryMIBInfo 4 }

ciscoIsnsIpNetInterfaceEntry OBJECT-TYPE
       SYNTAX       CiscoIsnsIpNetInterfaceEntry
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "An entry (conceptual row) in the 
            'ciscoIsnsIpNetInterfaceTable'.
             
            Each row represents a gigabit ethernet interface in 
            the fabric and its IP network.

            The IP network name for the gigabit ethernet interface
            is represented by the index object 'ciscoIsnsIpNetName' 
            from the 'ciscoIsnsIpNetTable'."  
       INDEX   { ciscoIsnsIpNetName , 
                 ciscoIsnsGigEPortDeviceName, 
                 ciscoIsnsGigEPortIfIndex }
       ::= { ciscoIsnsIpNetInterfaceTable 1 }

CiscoIsnsIpNetInterfaceEntry ::=
       SEQUENCE {
           ciscoIsnsGigEPortDeviceName        FcNameId, 
           ciscoIsnsGigEPortIfIndex           InterfaceIndex,
           ciscoIsnsIpNetInterfaceRowStatus   RowStatus 
       }

ciscoIsnsGigEPortDeviceName OBJECT-TYPE
       SYNTAX      FcNameId
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This object represents the World Wide Name (WWN) of 
            the associated switch in the fabric, of the gigabit 
            ethernet interface mentioned in corresponding instance 
            of 'ciscoIsnsGigEPortIfIndex' object."
       ::= { ciscoIsnsIpNetInterfaceEntry 1 }

ciscoIsnsGigEPortIfIndex OBJECT-TYPE
       SYNTAX       InterfaceIndex 
       MAX-ACCESS   not-accessible
       STATUS       current
       DESCRIPTION
           "This object represents the 'ifIndex' of the gigabit 
            ethernet interface in a switch in the fabric.
            The World Wide Name (WWN) of the switch is mentioned 
            in the corresponding instance of 
            'ciscoIsnsGigEPortDeviceName'.

            The gigabit ethernet interface is connected to the IP 
            network represented by the the value of the
            corresponding instance of 'ciscoIsnsIpNetName'."  
       ::= { ciscoIsnsIpNetInterfaceEntry 2 }

ciscoIsnsIpNetInterfaceRowStatus OBJECT-TYPE
       SYNTAX      RowStatus 
       MAX-ACCESS   read-create
       STATUS       current
       DESCRIPTION
           "This object indicates the status of this entry in the
            table."
       ::= { ciscoIsnsIpNetInterfaceEntry 3 }

--
-- Objects for Performing the IP Network Discovery
-- 

ciscoIsnsIpNetDiscoverySpinLock OBJECT-TYPE
        SYNTAX       TestAndIncr
        MAX-ACCESS   read-write
        STATUS       current
        DESCRIPTION
           "This object is used to facilitate modification of
            ciscoIsnsIpNetToDiscover,ciscoIsnsGigEInterfaceToDiscover 
            and ciscoIsnsIpNetDiscoveryCommand objects by multiple 
            managers.

            The procedure for modifying the above three objects are
            as follows:

            1. For IP network specific discovery, determine the new
               values for 'ciscoIsnsIpNetToDiscover' object.
               And For interface specific discovery, determine the new
               value for 'ciscoIsnsGigEInterfaceToDiscover' object.

            2. Retrieve the value of 'ciscoIsnsIpNetDiscoverySpinLock'
               object.

            3. For IP network specific discovery, 
               Set the value of 'ciscoIsnsIpNetDiscoverySpinLock' 
               object to the retrieved value, and (in the same PDU) 
               the value of 'ciscoIsnsIpNetToDiscover' object to the 
               new value. If the set fails for the 
               'ciscoIsnsIpNetDiscoverySpinLock' object, go back to 
               step 2.

               For Interface specific discovery, 
               Set the value of 'ciscoIsnsIpNetDiscoverySpinLock' 
               object to the retrieved value, and (in the same PDU) 
               the value of 'ciscoIsnsGigEInterfaceToDiscover' to the 
               new value. If the set fails for the 
               'ciscoIsnsIpNetDiscoverySpinLock' object, go back to 
               step 2.

            4. Set the value of 'ciscoIsnsIpNetDiscoverySpinLock' 
               object to the retrieved value incremented by two, and 
               (in the same PDU) the value of 
               'ciscoIsnsIpNetDiscoveryCommand' object to 
               'ipNetworkSpecific' or 'interfaceSpecific'. 

               If the set fails for 'ciscoIsnsIpNetDiscoverySpinLock' 
               object go back to step 2.

            Note that if it's possible to include
            'ciscoIsnsIpNetDiscoveryCommand' object  in the 
            (Set Request) PDU of an earlier step, then step 4 , 
            can be eliminated."
        ::= { ciscoIsnsIpNetDiscoveryMIBConfig 1 }

ciscoIsnsIpNetToDiscover OBJECT-TYPE
       SYNTAX        SnmpAdminString (SIZE (0..100))
       MAX-ACCESS    read-write
       STATUS        current
       DESCRIPTION
           "This object indicates the name of an IP network, 
            represented by the the value of the
            'ciscoIsnsIpNetName' object, that needs to be 
            (re)discovered.

            This object MUST be set to a valid value before or 
            concurrently with setting the value of the 
            'ciscoIsnsIpNetDiscoveryCommand' object 
            to 'ipNetworkSpecific' ."
       DEFVAL { "" }
       ::= { ciscoIsnsIpNetDiscoveryMIBConfig 2 }

ciscoIsnsGigEInterfaceToDiscover OBJECT-TYPE
       SYNTAX          InterfaceIndexOrZero 
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "This object represents the 'ifIndex' of the specified 
            gigabit ethernet interface for which the IP network 
            discovery needs to be done incrementally. 

            This object MUST be set to a valid value before or 
            concurrently with setting the value of the 
            'ciscoIsnsIpNetDiscoveryCommand' object
            to 'interfaceSpecific'."
       DEFVAL { 0 }
       ::= { ciscoIsnsIpNetDiscoveryMIBConfig 3 }


ciscoIsnsIpNetDiscoveryCommand OBJECT-TYPE
       SYNTAX INTEGER {
             all(1),
             noOp (2),
             ipNetworkSpecific(3),
             interfaceSpecific(4)
       }
       MAX-ACCESS      read-write
       STATUS          current
       DESCRIPTION
           "The IP network discovery command to be executed.

            Command                 Remarks
            
            all                Run IP network discovery for all the 
                               gigabit ethernet interfaces in the 
                               fabric. 

            noOp               no operation will be performed.

            ipNetworkSpecific  Run IP network discovery for all gigabit 
                               ethernet interfaces that are configured 
                               to be members of the IP network name 
                               specified in the 
                               'ciscoIsnsIpNetToDiscover' object.
                            
            interfaceSpecific  Run IP network discovery incrementally 
                               for the gigabit ethernet interface 
                               specified in the 
                               'ciscoIsnsGigEInterfaceToDiscover' 
                               object.

            The value of this object when read is always 'noOp'."

       DEFVAL { noOp }
       ::= { ciscoIsnsIpNetDiscoveryMIBConfig 4 }

ciscoIsnsIpNetDiscoveryCmdStatus OBJECT-TYPE
       SYNTAX INTEGER {
             success (1),
             none (2),
             inProgress (3),
             noIpNetworkNameSpecified (4),
             invalidIpNetworkName (5),
             noGigEInterfaceIndexSpecified (6),
             invalidGigEInterfaceIndex (7),
             generalFailure (8)
       }
       MAX-ACCESS read-only
       STATUS current
       DESCRIPTION
           "The status of the last IP network discovery command 
            operation.

            success (1) - IP network discovery operation completed 
                           successfully.

            none (2)    - no IP network discovery operation is 
                           performed.

            inProgress (3) - discovery operation is in progress.

            noIpNetworkNameSpecified (4) 
                         - IP network name not specified, i.e., the 
                           value of 'ciscoIsnsIpNetToDiscover' 
                           object is set to empty string. 
                                             
            invalidIpNetworkName (5) 
                         - IP network is not configured.

            NoGigEInterfaceIndexSpecified (6) 
                         - 'ifIndex' of the gigabit eithernet interface 
                           is not specified, i.e., the value of 
                           'ciscoIsnsGigEInterfaceToDiscover' object 
                           is set to '0'. 

            invalidGigEInterfaceIndex (7)
                         - 'ifIndex' of the gigabit ethernet interface 
                           specified in the 
                           'ciscoIsnsGigEInterfaceToDiscover' object
                           is not valid.

            generalFailure (8)- General IP network discovery operation
                                 Failure."
       ::= { ciscoIsnsIpNetDiscoveryMIBConfig 5 }


--
-- Compliance Information
--

ciscoIsnsIpNetDiscoverCompliance 
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryConform 1 }

ciscoIsnsIpNetDiscoveryMIBComp  MODULE-COMPLIANCE
       STATUS       current
       DESCRIPTION
           "The compliance statement for entities which implement 
            the CISCO-ISNS-IP-NW-DISCOVERY-MIB."
       MODULE       -- this module
       MANDATORY-GROUPS {
           ciscoIsnsIpNetDiscoveryInfoGroup,
           ciscoIsnsIpNetDiscoveryCfgGroup 
           }

       OBJECT ciscoIsnsIpNetRowStatus
       SYNTAX     INTEGER {
                     active (1),
                     createAndGo (4),
                     destroy (6)
                   }
       MIN-ACCESS read-only
       DESCRIPTION
           "Only 'active' needs to be supported."
       OBJECT    ciscoIsnsIpNetInterfaceRowStatus 
       SYNTAX     INTEGER {
                     active (1),
                     createAndGo (4),
                     destroy (6)
                   }
       MIN-ACCESS read-only
       DESCRIPTION
           "Only 'active' needs to be supported."
       ::= { ciscoIsnsIpNetDiscoverCompliance 1 }


--
-- Units of Conformance
--

ciscoIsnsIpNetDiscoveryMIBGroups 
       OBJECT IDENTIFIER ::= { ciscoIsnsIpNetDiscoveryConform 2 }

ciscoIsnsIpNetDiscoveryInfoGroup OBJECT-GROUP
       OBJECTS {
           ciscoIsnsIpNetAutomaticDiscovery,
           ciscoIsnsIpNetDiscoveryInterval,
           ciscoIsnsIpNetDiscoveryMechanism,
           ciscoIsnsIpNetRowStatus,
           ciscoIsnsIpNetInterfaceRowStatus
       }
       STATUS       current
       DESCRIPTION
           "A Collection of objects for the IP networks
            configured/discovered in the fabric and its 
            associated gigabit ethernet interfaces details."
       ::= { ciscoIsnsIpNetDiscoveryMIBGroups 1 }

ciscoIsnsIpNetDiscoveryCfgGroup OBJECT-GROUP
       OBJECTS {
           ciscoIsnsIpNetDiscoverySpinLock,
           ciscoIsnsIpNetToDiscover,
           ciscoIsnsGigEInterfaceToDiscover,
           ciscoIsnsIpNetDiscoveryCommand,
           ciscoIsnsIpNetDiscoveryCmdStatus   
       }
       STATUS       current
       DESCRIPTION
           "A Collection of objects to be configured, for doing 
            the IP network discovery." 
       ::= { ciscoIsnsIpNetDiscoveryMIBGroups 2 }

END

