-- *****************************************************************
-- CISCO-SMART-INSTALL-MIB.my:  Smart Install MIB
--   
-- Copyright (c) 2009-2010 by Cisco Systems, Inc.
-- All rights reserved.
--   
-- *****************************************************************

CISCO-SMART-INSTALL-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    NOTIFICATION-GROUP,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    TruthValue,
    RowStatus,
    DateAndTime,
    MacAddress,
    StorageType
        FROM SNMPv2-TC
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    InetAddressType,
    InetAddress
        FROM INET-ADDRESS-MIB
    TimeIntervalMin,
    Cisco2KVlanList,
    CiscoURLString
        FROM CISCO-TC
    ciscoMgmt
        FROM CISCO-SMI;


ciscoSmartInstallMIB MODULE-IDENTITY
    LAST-UPDATED    "201004300000Z"
    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: interest-comp-smartinstall@cisco.com"
    DESCRIPTION
        "This MIB module defines managed objects that facilitate
        the management of Smart Install feature.  Smart Install is a
        plug-and-play image and configuration management feature which
        enables zero-touch deployment of Cisco network devices in an
        enterprise branch network.

        Following is the terminology associated with Smart Install
        feature:

        Director
           A router or switch selected as the single management point
           for images and configuration of network devices in a Smart
           Install network.  When a device is first installed into the
           network, the director detects the new device and facilitates
           the correct Cisco IOS image and configuration file for the
           device based on user defined profiles.  With the automated
           process, a single or a group of devices are deployed without
           user intervention.

           The managed device includes, but not limited to, Cisco 2K/3K
           switches and EtherSwitch service modules.  Director learns
           about them through CDP or Smart Install protocol.

        Smart Install Capable Client
           A client device running Smart Install capable image.

        Group
           Devices are placed into Groups where they can be manipulated
           together rather than individually.

        Profile
           Profile is the configuration file, image, etc. that a user
           programs for each group.

        Backup
           The feature to archive/backup client device's configuration
           file upon 'write memory' on client.

        Join-Window
           A join window is a time window during which the device is
           allowed to upgrade image or configuration files.  Only
           during this window can the director provide information
           about the image and configuration to the device.  A device
           attempting to join the network outside of the join window
           will not be allowed to do so, and cannot upgrade their image
           and configuration files.

        This MIB module is supported on the director but not on the
        client devices.  It is designed to:

           - Allow operators to make configurations for client devices
             before and after they connect to the director's network.

           - Support monitoring of client devices discovered by the
             director.

           - Provide status of the deployed client image and
             configuration as a result of operator defined profiles.

           - Provide notifications for notable events such as new
             device joined or upgrade failure if there is any.


        Please note that, in most cases a working DHCP pool is
        configured for the subnet(s) on which the client devices
        are located.  The DHCP server could be the director,
        another Cisco device running Cisco IOS, or a non-Cisco
        third-party server.


        CISCO-SMART-INSTALL-MIB Module usage:

        1) Create profile for a group of devices

           Profile is used to pre-configure image and configuration
           files for a group of devices.

           In csiProfileTable
           {
            csiProfileIndex          = 8, 
            csiProfileGroupName      = '3750E_24', 
            csiProfileImageUrl       = 'tftp://10.0.0.1/3750e.tar',
            csiProfileImageTwoUrl    = '',
            csiProfileConfigUrl      = 'flash:/default_config.txt',
            <snip>
           } 

        2) Define a group of devices

           For example, to define a group matching on Catalyst 2960
           24 8 Poe switches:

           In csiMatchTable
           {
            csiMatchIndex     = 1, 
            csiMatchGroupType = 'product',
            csiMatchProductId = 'WS-C2960-24LT-L',
            csiProfileIndex   = 6, 
            <snip>
           }

        3) Enable Smart Install feature on the director

           The operator enables the Smart Install feature by setting

                csiOperationMode = basic(2)

        4) Display device information

           Director is aware of Smart Install capable devices and others
           connected to a Smart Install capable device.  This MIB table
           displays information about the devices, such as the running
           image, the MAC address, etc.

                csiDeviceTable

        5) Further refine the running environment

           Objects in csiGlobalConfig enable the Operator to tailor
           the director operation, such as:

           . Backup client device's configuration file.
           . Set up Join Window to monitor newly installed devices."
    REVISION        "201004300000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { ciscoMgmt 725 }


-- Textual Conventions definition will be defined before this line

ciscoSmartInstallMIBNotifs  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIB 0 }

ciscoSmartInstallMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIB 1 }

ciscoSmartInstallMIBConform  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIB 2 }

csiGlobalConfig  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIBObjects 1 }

csiProfile  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIBObjects 2 }

csiDeviceInfo  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIBObjects 3 }

csiNotifObjects  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIBObjects 4 }


csiOperationMode OBJECT-TYPE
    SYNTAX          INTEGER  {
                        disabled(1),
                        basic(2)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the Smart Install director operation
        mode.

        The following enumerated values are supported:

        disabled(1)     - Smart Install feature disabled.

        basic(2)        - Enabled with Smart Install basic features." 
    ::= { csiGlobalConfig 1 }

csiDirectorIpAddressType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the type of Internet address in
        csiDirectorIpAddress object." 
    ::= { csiGlobalConfig 2 }

csiDirectorIpAddress OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the Internet address assigned for
        the director.  The type of this address is determined by
        the value of csiDirectorIpAddressType object.

        Setting this object is not mandatory if the director IP address
        is configured by DHCP.  For DHCP to assign the director IP
        address, the operator needs to configure the DHCP server." 
    ::= { csiGlobalConfig 3 }

csiManagementVlan OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates if management VLAN is in use or not." 
    ::= { csiGlobalConfig 4 }

csiManagementVlansFirst2K OBJECT-TYPE
    SYNTAX          Cisco2KVlanList
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the management VLANs in a string of
        octets containing one bit per VLAN for VLANs 0 to 2047.  The
        director snoops all DHCP packets that pass through on the
        management VLANs in addition to the default VLAN 1.

        The value of this object is irrelevent if csiManagementVlan is
        false(2)." 
    ::= { csiGlobalConfig 5 }

csiManagementVlansSecond2K OBJECT-TYPE
    SYNTAX          Cisco2KVlanList
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the management VLANs in a string of
        octets containing one bit per VLAN for VLANs 2048 to 4095.
        The director snoops all DHCP packets that pass through on 
        the management VLANs in addition to the default VLAN 1.

        The value of this object is irrelevent if csiManagementVlan is
        false(2)." 
    ::= { csiGlobalConfig 6 }
csiBackup  OBJECT IDENTIFIER
    ::= { csiGlobalConfig 7 }

csiJoinWindow  OBJECT IDENTIFIER
    ::= { csiGlobalConfig 8 }


csiBackupHostUrl OBJECT-TYPE
    SYNTAX          CiscoURLString
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "A Uniform Resource Locator specifying the host where the client
        configuration files are stored, 'tftp://101.122.33.10/vstack'
        for example.

        When a client configuration is committed (i.e. write memory), a
        backup of the configuration is saved in the backup host if
        csiBackupEnable is 'true'.  The backup file name is consisted
        of the client host name, MAC address and file extension 'REV2',
        for example 'SwitchA-0021.d7ae.fc00.REV2'.  For subsequent
        backups, .REV2 file is copied to .REV1, and .REV2 is
        over-written with the latest client configuration." 
    ::= { csiBackup 1 }

csiBackupEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether client configuration file is
        backed up in the backup host.  

        Director is informed when a Smart Install client configuration
        is committed (i.e. write memory).  If this object value is
        'true', director orchestrates the backup of the client
        configuration file to the designated backup host." 
    ::= { csiBackup 2 }

csiJoinWindowConfigOperationMode OBJECT-TYPE
    SYNTAX          INTEGER  {
                        closed(1),
                        auto(2),
                        manual(3)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "A join window is a time window during which a network device
        is allowed to upgrade image or configuration files.  Only
        during this window can the director provide information
        about the image and configuration to the device.  A device
        attempting to join the network outside of the join window
        will not be allowed to do so, and cannot upgrade their image
        and configuration files.

        This object specifies the configuration of the Join Window
        operation mode.

        closed - All devices attempting to join are denied to upgrade
                 as indicated in the csiDeviceStatus object.
                 Director does not provide information about the image
                 and configuration to the device.
        auto   - Director provides image and configuration information
                 to devices joining during 'Join Window' period. 
        manual - Devices attempting to join during Join Window are
                 put on hold as indicated in the csiDeviceStatus
                 object.  Director does not give image and
                 configuration information to these on hold devices
                 unless the operator manually instructs the director
                 to upgrade them." 
    ::= { csiJoinWindow 1 }

csiJoinWindowPeriodNextFreeIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "An integer which may be used as a new index in
        csiJoinWindowPeriodTable.  The special value of 0
        indicates that no more new entries can be created in
        csiJoinWindowPeriodTable.

        This object is a legal value (if non-zero) for an index
        that is not currently used in the relevant table. The Network
        Management Application reads this variable and uses the
        (non-zero) value read when creating a new row with an SNMP SET.

        When the SET is performed, the agent must determine whether the
        value is indeed still unused; two Network Management
        Applications may attempt to create a row (configuration entry)
        simultaneously and use the same value.  If it is currently
        unused, the SET succeeds and the agent monotonically increases
        the value of this object.

        However if the value is in use, the SET fails.  The Network 
        Management Application must then re-read this variable to
        obtain a new usable value." 
    ::= { csiJoinWindow 2 }

csiJoinWindowPeriodTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsiJoinWindowPeriodEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of Join Window time periods. Management Application
        creates an entry in the table to add a Join Window period and
        its recurrence pattern.

        If csiJoinWindowConfigOperationMode is 'auto', all devices
        joined during Join Window are automatically upgraded.

        If csiJoinWindowConfigOperationMode is 'manual', new devices
        joined during Join Window are put on hold as indicated in
        csiDeviceStatus.  They are not offered upgrade information
        unless the operator manually instructs the director to do so.

        In rare occasions, when entries overlap in time, the devices
        joining during any of the Join Window period are allowed to be
        upgraded or put on hold."
    ::= { csiJoinWindow 3 }

csiJoinWindowPeriodEntry OBJECT-TYPE
    SYNTAX          CsiJoinWindowPeriodEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry specifying a time period during which director
        offers image and configuration information to the newly
        installed devices.

        A configured row instance can be created or removed by
        setting the appropriate value of its RowStatus object."
    INDEX           { csiJoinWindowPeriodIndex } 
    ::= { csiJoinWindowPeriodTable 1 }

CsiJoinWindowPeriodEntry ::= SEQUENCE {
        csiJoinWindowPeriodIndex             Unsigned32,
        csiJoinWindowPeriodStartTime         DateAndTime,
        csiJoinWindowPeriodInterval          TimeIntervalMin,
        csiJoinWindowPeriodRecurrencePattern INTEGER,
        csiJoinWindowPeriodExpirationDate    DateAndTime,
        csiJoinWindowPeriodStorageType       StorageType,
        csiJoinWindowPeriodRowStatus         RowStatus
}

csiJoinWindowPeriodIndex OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object uniquely identifies a row in
        csiJoinWindowPeriodTable. The Management Application chooses
        this value by reading csiJoinWindowPeriodNextFreeIndex while
        creating an entry in this table.  If an entry already exists
        with this index, the creation of the entry will not continue
        and error will be returned.  The Management Application should
        read the value of csiJoinWindowPeriodNextFreeIndex again and
        retry with the new value for this object." 
    ::= { csiJoinWindowPeriodEntry 1 }

csiJoinWindowPeriodStartTime OBJECT-TYPE
    SYNTAX          DateAndTime
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the start time of a Join Window period." 
    ::= { csiJoinWindowPeriodEntry 2 }

csiJoinWindowPeriodInterval OBJECT-TYPE
    SYNTAX          TimeIntervalMin
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the length of Join Window period in
        minutes starting from csiJoinWindowPeriodStartTime." 
    ::= { csiJoinWindowPeriodEntry 3 }

csiJoinWindowPeriodRecurrencePattern OBJECT-TYPE
    SYNTAX          INTEGER  {
                        none(1),
                        daily(2)
                    }
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the Join Window recurrence pattern.

        none(1)   - The join window period does not recur.
        daily(2)  - The join window period recurs daily." 
    ::= { csiJoinWindowPeriodEntry 4 }

csiJoinWindowPeriodExpirationDate OBJECT-TYPE
    SYNTAX          DateAndTime
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the day (in year, month and date) the
        Join Window period stops.  An empty string indicates that no
        expiration date is applied.

        The Join Window period can be stopped by either this object or
        csiJoinWindowPeriodInterval object, whichever expires first." 
    ::= { csiJoinWindowPeriodEntry 5 }

csiJoinWindowPeriodStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type of this conceptual row."
    DEFVAL          { volatile } 
    ::= { csiJoinWindowPeriodEntry 6 }

csiJoinWindowPeriodRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is used to manage the creation and deletion
        of rows in this table.  If this object value is 'active',
        user cannot modify any writable object in this row." 
    ::= { csiJoinWindowPeriodEntry 7 }
 


csiImageFileUrl OBJECT-TYPE
    SYNTAX          CiscoURLString
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the location of the default boot .tar
        image file.  An empty string indicates that no such file is
        applied.

        If all clients in a Smart Install network have the same
        product ID and can run the same image file, user can assign
        a default image file for all clients." 
    ::= { csiProfile 1 }

csiConfigFileUrl OBJECT-TYPE
    SYNTAX          CiscoURLString
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the location of the default configuration
        file.  An empty string indicates that no such file is applied.  

        If all clients in a Smart Install network have the same
        product ID and can run the same configuration file, user can
        assign a default configuration file for all clients." 
    ::= { csiProfile 2 }

csiHostnamePrefix OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE  (0..40))
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the default hostname prefix.  The
        director provides hostname (with prefix followed by an
        implementation-dependent string) to clients." 
    ::= { csiProfile 3 }

csiProfileNextFreeIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (0 | 2..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "An integer value which may be used as a new index in
        csiProfileTable.  The special value of 0 indicates  
        that no more new entries can be created in csiProfileTable,
        and value 1 is not a valid csiProfileTable index.  Thus the
        value of this object starts at 2 and monotonically increases
        after a profile is created.    

        The Network Management Application reads this variable and uses
        the non-zero value when creating a new row with an SNMP SET.

        When the SET is performed, the agent must determine whether the
        value is indeed still unused, for two Network Management
        Applications may attempt to create a row (profile entry)
        simultaneously and use the same value.  If it is currently
        unused, the SET succeeds and the agent increases the value of
        this object.  If the value is in use, however, the SET fails. 
        The Network Management Application must then re-read this
        variable to obtain a new usable value." 
    ::= { csiProfile 4 }

csiProfileTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsiProfileEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of Smart Install profile entries.

        In Smart Install, any number of client devices can be placed
        together to form a 'group' for easy management.  A profile is
        used to associate image and configuration files for a group of
        devices, before and after they join the network.  An entry
        in this table reflects the profile of one Smart Install group."
    ::= { csiProfile 5 }

csiProfileEntry OBJECT-TYPE
    SYNTAX          CsiProfileEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry in the csiProfileTable, describing the image and
        configuration files that represent the profile."
    INDEX           { csiProfileIndex } 
    ::= { csiProfileTable 1 }

CsiProfileEntry ::= SEQUENCE {
        csiProfileIndex       Unsigned32,
        csiProfileGroupName   SnmpAdminString,
        csiProfileImageUrl    CiscoURLString,
        csiProfileImageTwoUrl CiscoURLString,
        csiProfileConfigUrl   CiscoURLString,
        csiProfileStorageType StorageType,
        csiProfileRowStatus   RowStatus
}

csiProfileIndex OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object uniquely identifies the entry in csiProfileTable.
        The value of the object is 2 or greater." 
    ::= { csiProfileEntry 1 }

csiProfileGroupName OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE  (0..64))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the name of a group for which this
        profile associates." 
    ::= { csiProfileEntry 2 }

csiProfileImageUrl OBJECT-TYPE
    SYNTAX          CiscoURLString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the location of the boot .tar image
        file.  An empty string indicates that no such file is applied." 
    ::= { csiProfileEntry 3 }

csiProfileImageTwoUrl OBJECT-TYPE
    SYNTAX          CiscoURLString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "For mixed switch stack, this object specifies the location
        of the second .tar image file.  An empty string indicates that
        no such file is applied." 
    ::= { csiProfileEntry 4 }

csiProfileConfigUrl OBJECT-TYPE
    SYNTAX          CiscoURLString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the location of the configuration file.
        An empty string indicates that no such file is applied." 
    ::= { csiProfileEntry 5 }

csiProfileStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type for this conceptual
        row."
    DEFVAL          { volatile } 
    ::= { csiProfileEntry 6 }

csiProfileRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the status of this conceptual row.
        If this object value is 'active', user cannot modify any
        writable object in this row." 
    ::= { csiProfileEntry 7 }
 


csiMatchTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsiMatchEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table of group matching criteria entries.

        In Smart Install, 'group' represents a collection of network
        devices and a profile is configured for the group.  The
        matching criteria entries are used to identify the devices
        belonging to a profile group, and the matching entries cannot
        exist without a profile.  This is implied by the reference to
        csiProfileIndex object in the index clause of this table."
    ::= { csiProfile 6 }

csiMatchEntry OBJECT-TYPE
    SYNTAX          CsiMatchEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry in csiMatchTable, defining one matching criterion
        for a profile group.  When its profile entry is deleted, the
        match entry is deleted too.  The objects needed in an entry
        depend on the value of csiMatchGroupType.  Multiple match
        entries can be entered for stack, connectivity or mac type
        of groups."
    INDEX           {
                        csiProfileIndex,
                        csiMatchIndex
                    } 
    ::= { csiMatchTable 1 }

CsiMatchEntry ::= SEQUENCE {
        csiMatchIndex           Unsigned32,
        csiMatchGroupType       INTEGER,
        csiMatchMacAddress      MacAddress,
        csiMatchHostAddressType InetAddressType,
        csiMatchHostAddress     InetAddress,
        csiMatchHostInterface   SnmpAdminString,
        csiMatchProductId       SnmpAdminString,
        csiMatchSwitchNum       Unsigned32,
        csiMatchSwitchProductId SnmpAdminString,
        csiMatchStorageType     StorageType,
        csiMatchRowStatus       RowStatus
}

csiMatchIndex OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object uniquely identifies a matching criterion within a
        group." 
    ::= { csiMatchEntry 1 }

csiMatchGroupType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        unknown(1),
                        mac(2),
                        connectivity(3),
                        product(4),
                        stack(5)
                    }
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object indicates the general category of a Smart Install
        group.  A profile group can be formed based on,

        unknown(1)      - unknown match group type
        mac(2)          - MAC addresses of devices
        connectivity(3) - connectivity or topology of devices
        product(4)      - product type of devices
        stack(5)        - a switch stack" 
    ::= { csiMatchEntry 2 }

csiMatchMacAddress OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the MAC address of the client.  It is
        required when csiMatchGroupType is 'mac'.

        A MAC address match takes priority over other match criteria." 
    ::= { csiMatchEntry 3 }

csiMatchHostAddressType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the type of Internet address stored in
        csiMatchHostAddress.  It is required when csiMatchGroupType is
        'connectivity'." 
    ::= { csiMatchEntry 4 }

csiMatchHostAddress OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "User can configure a profile group based on the connectivity
        or topology of clients in a Smart Install network, that is, a
        group of clients that are connected to the director through a
        single interface or clients that are connected to the director
        through a common intermediate device.

        This object specifies the Internet address of the upstream
        device, which could be the director or an intermediate
        device.  Together with csiMatchHostInterface, it specifies
        the path through which clients are connected to the director.

        This object is required when csiMatchGroupType is
        'connectivity'.  The type of this address is determined by
        the value of csiMatchHostAddressType object.

        A connectivity match takes priority over product ID match." 
    ::= { csiMatchEntry 5 }

csiMatchHostInterface OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "For connectivity group, this object specifies the interface,
        together with csiMatchHostAddress, representing the path
        through which clients are connected to the director.  It is
        typically the value of the ifName object (e.g., 'Ethernet0').
        It is required when csiMatchGroupType is 'connectivity'." 
    ::= { csiMatchEntry 6 }

csiMatchProductId OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the device product type for profile
        groups formed based on 'product'.  For pre-defined profile
        group, it is the group name such as '2960 24-8POE'.  For user
        defined group, it specifies a product ID reported in
        ENTITY-MIB, such as 'WS-C2960-24LT-L'.

        It is required when csiMatchGroupType is 'product'." 
    ::= { csiMatchEntry 7 }

csiMatchSwitchNum OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the switch number in a stackable switch.
        Together with csiMatchSwitchProductId, it describes a stack
        member.  It is required when csiMatchGroupType is 'stack'." 
    ::= { csiMatchEntry 8 }

csiMatchSwitchProductId OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the product ID of a switch member
        indicated in csiMatchSwitchNum.  It is required when
        csiMatchGroupType is 'stack'." 
    ::= { csiMatchEntry 9 }

csiMatchStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type for this conceptual
        row."
    DEFVAL          { volatile } 
    ::= { csiMatchEntry 10 }

csiMatchRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the status of this conceptual row.
        If this object value is 'active', user cannot modify any
        writable object in this row." 
    ::= { csiMatchEntry 11 }
 


csiDeviceTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsiDeviceEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual table listing the network devices with
        connectivity to the director, that is the device is either Smart
        Install capable or is connected to a Smart Install capable
        client."
    ::= { csiDeviceInfo 1 }

csiDeviceEntry OBJECT-TYPE
    SYNTAX          CsiDeviceEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry for each device that has joined the Smart Install
        network."
    INDEX           { csiDeviceNum } 
    ::= { csiDeviceTable 1 }

CsiDeviceEntry ::= SEQUENCE {
        csiDeviceNum                  Unsigned32,
        csiDeviceMacAddress           MacAddress,
        csiDeviceAddressType          InetAddressType,
        csiDeviceAddress              InetAddress,
        csiDeviceName                 SnmpAdminString,
        csiDeviceBackupConfigFileName SnmpAdminString,
        csiDeviceImageVersion         SnmpAdminString,
        csiDevicePlatform             SnmpAdminString,
        csiDeviceSerialNum            SnmpAdminString,
        csiDeviceStatus               SnmpAdminString
}

csiDeviceNum OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A value assigned by the director to uniquely identify each
        entry in csiDeviceTable." 
    ::= { csiDeviceEntry 1 }

csiDeviceMacAddress OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the MAC address of the network device." 
    ::= { csiDeviceEntry 2 }

csiDeviceAddressType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of Internet address in
        csiDeviceAddress." 
    ::= { csiDeviceEntry 3 }

csiDeviceAddress OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the Internet address of the device that
        sends Smart Install communication messages.  The type of this
        address is determined by the value of csiDeviceAddressType
        object." 
    ::= { csiDeviceEntry 4 }

csiDeviceName OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the host name of the device to easily
        identify it in a network." 
    ::= { csiDeviceEntry 5 }

csiDeviceBackupConfigFileName OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the name of the latest saved
        configuration file of the device.  The file name is
        consisted of the device host name, MAC address and
        file extension 'REV2', for example
        'SwitchA-0021.d7ae.fc00.REV2'.  The file is stored in
        the host indicated by the csiBackupHostUrl object.

        If the device configuration file is saved again, .REV2
        file is copied to .REV1, and .REV2 is over-written with
        the latest device configuration." 
    ::= { csiDeviceEntry 6 }

csiDeviceImageVersion OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the software release version that the
        device is running.  The zero-length string indicates
        that no Version field (TLV) was reported in the most
        recent CDP message." 
    ::= { csiDeviceEntry 7 }

csiDevicePlatform OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The device's hardware platform as reported in the most
        recent CDP message.  The zero-length string indicates
        that no Platform field (TLV) was reported in the most
        recent CDP message." 
    ::= { csiDeviceEntry 8 }

csiDeviceSerialNum OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "A recorded serial number for this device that indexes some
        type device catalog or inventory, if applicable." 
    ::= { csiDeviceEntry 9 }

csiDeviceStatus OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "A text string describes the network device status.  The agent
        implementation may use this object to report upgrading
        progress." 
    ::= { csiDeviceEntry 10 }
 


csiNotifEnable OBJECT-TYPE
    SYNTAX          BITS {
                        operationModeChange(0),
                        deviceAdded(1),
                        deviceLost(2),
                        fileLoadFailed(3)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object controls the generation of Smart Install
        notifications.

        For example, a value of '1' for 'deviceAdded' enables
        csiDeviceAdded notification, whereas a value of '0' disables
        csiDeviceAdded notification." 
    ::= { csiNotifObjects 1 }

csiNotifOperationType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        other(1),
                        downloadConfig(2),
                        downloadImage(3),
                        uploadConfig(4)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of operation of
        csiFileLoadFailed notification.

        other(1)            - none of the following
        downloadConfig(2)   - configuration file download
        downloadImage(3)    - image file download
        uploadConfig(4)     - client config file upload to storage" 
    ::= { csiNotifObjects 2 }

csiNotifOperationResult OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the file operation result of
        csiFileLoadFailed notification." 
    ::= { csiNotifObjects 3 }

-- Notifications

csiOperationModeChange NOTIFICATION-TYPE
    OBJECTS         { csiOperationMode }
    STATUS          current
    DESCRIPTION
        "This notification is generated when the director operation
        mode changes.  csiOperationMode indicates the director
        operation mode."
   ::= { ciscoSmartInstallMIBNotifs 1 }

csiDeviceAdded NOTIFICATION-TYPE
    OBJECTS         {
                        csiDeviceName,
                        csiDeviceAddressType,
                        csiDeviceAddress,
                        csiDeviceMacAddress
                    }
    STATUS          current
    DESCRIPTION
        "This notification is generated when a network device joins the
        Smart Install network.

        csiDeviceName indicates the device host name.
        csiDeviceAddressType indicates the device Internet address
        type.
        csiDeviceAddress indicates the device Internet address.
        csiDeviceMacAddress indicates the device MAC address."
   ::= { ciscoSmartInstallMIBNotifs 2 }

csiDeviceLost NOTIFICATION-TYPE
    OBJECTS         {
                        csiDeviceName,
                        csiDeviceAddressType,
                        csiDeviceAddress,
                        csiDeviceMacAddress
                    }
    STATUS          current
    DESCRIPTION
        "This notification is generated when director loses connectivity
        to a device.

        csiDeviceName indicates the device host name.
        csiDeviceAddressType indicates the device Internet address
        type.
        csiDeviceAddress indicates the device Internet address.
        csiDeviceMacAddress indicates the device MAC address."
   ::= { ciscoSmartInstallMIBNotifs 3 }

csiFileLoadFailed NOTIFICATION-TYPE
    OBJECTS         {
                        csiDeviceName,
                        csiDeviceAddressType,
                        csiDeviceAddress,
                        csiDeviceMacAddress,
                        csiNotifOperationType,
                        csiNotifOperationResult
                    }
    STATUS          current
    DESCRIPTION
        "This notification is generated when a file upload or download
        operation has failed.

        csiDeviceName indicates the device host name.
        csiDeviceAddressType indicates the device Internet address
        type.
        csiDeviceAddress indicates the device Internet address.
        csiDeviceMacAddress indicates the device MAC address.
        csiNotifOperationType indicates the file operation type.
        csiNotifOperationResult indicates the file operation result."
   ::= { ciscoSmartInstallMIBNotifs 4 }
-- Conformance Information Definition

ciscoSmartInstallCompliances  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIBConform 1 }

ciscoSmartInstallGroups  OBJECT IDENTIFIER
    ::= { ciscoSmartInstallMIBConform 2 }


ciscoSmartInstallCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "Describes the requirements for conformance to the
        CISCO-SMART-INSTALL-MIB module."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoSmartInstallGlobalConfigGroup,
                        ciscoSmartInstallDeviceInformationGroup
                    }

    GROUP           ciscoSmartInstallConfigBackupGroup
    DESCRIPTION
        "The ciscoSmartInstallConfigBackupGroup is optional."

    GROUP           ciscoSmartInstallJoinWindowGroup
    DESCRIPTION
        "The ciscoSmartInstallJoinWindowGroup is optional."

    GROUP           ciscoSmartInstallProfileGroup
    DESCRIPTION
        "The ciscoSmartInstallProfileGroup is optional."

    GROUP           ciscoSmartInstallNotificationEnableGroup
    DESCRIPTION
        "The ciscoSmartInstallNotificationEnableGroup is optional."

    GROUP           ciscoSmartInstallNotificationsGroup
    DESCRIPTION
        "The ciscoSmartInstallNotificationsGroup is optional."

    GROUP           ciscoSmartInstallNotifyVarsGroup
    DESCRIPTION
        "The ciscoSmartInstallNotifyVarsGroup is optional.  if
        ciscoSmartInstallNotificationsGroup is supported, this group
        must be implemented."

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

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

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

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

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

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

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

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

    OBJECT          csiJoinWindowPeriodStartTime
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiJoinWindowPeriodInterval
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiJoinWindowPeriodRecurrencePattern
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiJoinWindowPeriodExpirationDate
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiJoinWindowPeriodStorageType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for read-create access is not required."

    OBJECT          csiJoinWindowPeriodRowStatus
    SYNTAX          INTEGER  {
                        active(1)
                    }
    WRITE-SYNTAX    INTEGER  {
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

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

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

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

    OBJECT          csiProfileGroupName
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiProfileImageUrl
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiProfileImageTwoUrl
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiProfileConfigUrl
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiProfileStorageType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for read-create access is not required."

    OBJECT          csiProfileRowStatus
    SYNTAX          INTEGER  {
                        active(1)
                    }
    WRITE-SYNTAX    INTEGER  {
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csiMatchGroupType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchProductId
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchSwitchNum
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchSwitchProductId
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchHostAddressType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchHostAddress
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchHostInterface
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchMacAddress
    MIN-ACCESS      read-only
    DESCRIPTION
        "Create/Write access is not required."

    OBJECT          csiMatchStorageType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for read-create access is not required."

    OBJECT          csiMatchRowStatus
    SYNTAX          INTEGER  {
                        active(1)
                    }
    WRITE-SYNTAX    INTEGER  {
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csiNotifEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { ciscoSmartInstallCompliances 1 }

ciscoSmartInstallGlobalConfigGroup OBJECT-GROUP
    OBJECTS         {
                        csiOperationMode,
                        csiDirectorIpAddressType,
                        csiDirectorIpAddress,
                        csiManagementVlan,
                        csiManagementVlansFirst2K,
                        csiManagementVlansSecond2K
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects used for director configurations."
    ::= { ciscoSmartInstallGroups 1 }

ciscoSmartInstallConfigBackupGroup OBJECT-GROUP
    OBJECTS         {
                        csiBackupEnable,
                        csiBackupHostUrl
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects related to configuration file backup
        feature."
    ::= { ciscoSmartInstallGroups 2 }

ciscoSmartInstallJoinWindowGroup OBJECT-GROUP
    OBJECTS         {
                        csiJoinWindowConfigOperationMode,
                        csiJoinWindowPeriodNextFreeIndex,
                        csiJoinWindowPeriodStartTime,
                        csiJoinWindowPeriodInterval,
                        csiJoinWindowPeriodRecurrencePattern,
                        csiJoinWindowPeriodExpirationDate,
                        csiJoinWindowPeriodRowStatus,
                        csiJoinWindowPeriodStorageType
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects related to the Join Window."
    ::= { ciscoSmartInstallGroups 3 }

ciscoSmartInstallProfileGroup OBJECT-GROUP
    OBJECTS         {
                        csiImageFileUrl,
                        csiConfigFileUrl,
                        csiHostnamePrefix,
                        csiProfileNextFreeIndex,
                        csiProfileGroupName,
                        csiProfileImageUrl,
                        csiProfileImageTwoUrl,
                        csiProfileConfigUrl,
                        csiProfileStorageType,
                        csiProfileRowStatus,
                        csiMatchGroupType,
                        csiMatchProductId,
                        csiMatchSwitchNum,
                        csiMatchSwitchProductId,
                        csiMatchHostAddressType,
                        csiMatchHostAddress,
                        csiMatchHostInterface,
                        csiMatchMacAddress,
                        csiMatchStorageType,
                        csiMatchRowStatus
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which are used to configure the profile
        for clients."
    ::= { ciscoSmartInstallGroups 4 }

ciscoSmartInstallDeviceInformationGroup OBJECT-GROUP
    OBJECTS         {
                        csiDeviceMacAddress,
                        csiDeviceAddressType,
                        csiDeviceAddress,
                        csiDeviceName,
                        csiDeviceBackupConfigFileName,
                        csiDeviceImageVersion,
                        csiDevicePlatform,
                        csiDeviceSerialNum,
                        csiDeviceStatus
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects that provide information about devices
        in a Smart Install network."
    ::= { ciscoSmartInstallGroups 5 }

ciscoSmartInstallNotificationEnableGroup OBJECT-GROUP
    OBJECTS         { csiNotifEnable }
    STATUS          current
    DESCRIPTION
        "A collection of objects for controlling (enabling/disabling)
        notifications to a management application."
    ::= { ciscoSmartInstallGroups 6 }

ciscoSmartInstallNotificationsGroup NOTIFICATION-GROUP
   NOTIFICATIONS    {
                        csiOperationModeChange,
                        csiDeviceAdded,
                        csiDeviceLost,
                        csiFileLoadFailed
                    }
    STATUS          current
    DESCRIPTION
        "A collection of notifications in this MIB module."
    ::= { ciscoSmartInstallGroups 7 }

ciscoSmartInstallNotifyVarsGroup OBJECT-GROUP
    OBJECTS         {
                        csiNotifOperationType,
                        csiNotifOperationResult
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects used for notifications."
    ::= { ciscoSmartInstallGroups 8 }

END
























































































































































































