-- Copyright (C) 2008-2014 Super Micro Computer Inc. All Rights Reserved

--******************************************************************************
--$Id: fsdh6r.mib,v 1.9 2012/09/07 09:52:05 siva Exp $
--
--Description : This file contains MIB definitions for DHCPv6 Relay module.
--
--******************************************************************************/

SUPERMICRO-DHCPv6-RELAY-MIB DEFINITIONS ::= BEGIN

-- ******************************************************************
-- RFC-3736 Stateless DHCPv6 Relay MIB
-- ******************************************************************

IMPORTS
   MODULE-IDENTITY,OBJECT-TYPE,
       Counter32, Integer32,
       enterprises,NOTIFICATION-TYPE                FROM SNMPv2-SMI
       RowStatus,DisplayString,
       TruthValue                                   FROM SNMPv2-TC
       ;
fsdhcpv6rly  MODULE-IDENTITY
    LAST-UPDATED "201209050000Z"
    ORGANIZATION "Super Micro Computer Inc."
    CONTACT-INFO "support@Supermicro.com" 
    DESCRIPTION 
       "This MIB is a proprietary MIB for Stateless-DHCPv6 relay
        and conforms to RFC 3736(04/2004)."
    REVISION "201209050000Z" 
    DESCRIPTION 
       "This MIB is a proprietary MIB for Stateless-DHCPv6 relay
        and conforms to RFC 3736(04/2004)."

    ::= { enterprises supermicro-computer-inc(10876) super-switch(101) basic(2) 41 }

fsDhcp6RlyNotify         OBJECT IDENTIFIER ::= { fsdhcpv6rly 0 }
fsDhcp6RlySystem         OBJECT IDENTIFIER ::= { fsdhcpv6rly 1 }
fsDhcp6RlyConfig         OBJECT IDENTIFIER ::= { fsdhcpv6rly 2 }
fsDhcp6RlyTraps          OBJECT IDENTIFIER ::= { fsdhcpv6rly 3 }
-- ******************************************************************
-- Start the Scalars defination
-- ******************************************************************
fsDhcp6RlyDebugTrace OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(1..255))    
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "This object stores the trace option string input given by the user.
        Based on the input to this object, trace statements corresponding
        to the given options are displayed. To enable particular
        trace the user has to enter the corresponding string(given below)
        assigned for that. For enabling more than one traces
        the user has to enter the corresponding strings with
        SPACE (delimiter) between each string.
        For example,
        To enable the below traces:
         - Init and Shutdown traces
         - Management traces
         - Data path traces
         - Control plane traces
         - Packet Dump traces
        The input should be fed as follows:
        enable init-shut mgmt data ctrl pkt-dump
        To disable the below traces:
         - Init and Shutdown traces
         - Data path traces
         - Control plane traces
        The input should be,disable init-shut data ctrl
        The entered input string is parsed to get the trace
         options.
         enable          - Enables the corresponding option.
         disable         - Disables the corresponding option.
         init-shut       - Init and Shutdown traces
         mgmt            - Management traces
         ctrl            - Control Plane traces
         pkt-dump        - Packet Dump traces
         resource        - Traces related to all
                           resources except buffers
         all-fail        - All Failure traces
         buffer          - Buffer allocation/
                           release traces
         critical        - Sl-DHCPv6 Relay Critical traces"
    DEFVAL  { "critical" }
    ::= { fsDhcp6RlySystem 1 }

fsDhcp6RlyTrapAdminControl OBJECT-TYPE
    SYNTAX      BITS{
                      none(0),
                      trapInvalidPacketIn(1),
                      trapMaxHopCount(2)
                    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "The Object is used to enable or disable the transmission of 
        TRAP notification messages. A vector of Boolean notification types, 
        used to enable or disable the slDhcp6 notification types:
        trapInvalidPacketIn (1)   
        trapMaxHopCount (2)  
        when Relay agent declares the received message as invalid then 
        the SNMP trap notification will come only when fsDhcp6RlyTrapAdminControl 
        is set with value 0.
        when Relay agent receives the relay forward message with  hop count 
        value is less then one configured hop count then SNMP trap 
        notification will come only when fsDhcp6RlyTrapAdminControl 
        is set with value trapInvalidPacketIn."
    DEFVAL { "\0" }
    ::= { fsDhcp6RlySystem 2 }

fsDhcp6RlySysLogAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                         enabled (1),
                         disabled (2) 
                        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "This Object is used to enable or disable the transmission of
        syslog notification messages. 
        DHCPv6 relay will generate the syslog messages only when 
        fsDhcp6RlySysLogAdminStatus is set as enabled (1).

        disabled (2) means that DHCP server will not generate any 
        syslog messages."
    DEFVAL { disabled }
    ::= { fsDhcp6RlySystem 3 }

fsDhcp6RlyListenPort OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "This Object is used to configure the port on which the
        DHCPv6 relay agent will listen on. This is in order to facilitate
        DHCPv6 relay to coexist with the DHCPv6 server which can listen on a
        different port."
    DEFVAL { 547 }
    ::= { fsDhcp6RlySystem 4 }
fsDhcp6RlyClientTransmitPort OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "This Object is used to configure the port on which the
        DHCPv6 relay agent will send reply messages."
    DEFVAL { 546 }
    ::= { fsDhcp6RlySystem 5 }
fsDhcp6RlyServerTransmitPort OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "This Object is used to configure the port on which the
        DHCPv6 relay agent will send relay-forward messages."
    DEFVAL { 547 }
    ::= { fsDhcp6RlySystem 6 }
fsDhcp6RlyOption37Control OBJECT-TYPE
    SYNTAX      INTEGER {
                         enabled (1),
                         disabled (2)
                        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "This Object is used to enable or disable the transmission of
        Remote-id option along with Relay-fwd message.
        DHCPv6 relay will insert remote-id with the relay-fwd message only when
        fsDhcp6RlyOption37Control is set as enabled (1).

        disabled (2) means that relay-fwd message will not be having remote-id
        option along with."
    DEFVAL { disabled }
    ::= { fsDhcp6RlySystem 7 }

-- ******************************************************************
-- Start of Relay Interface Table {fsDhcp6RlyIfTable)
-- ******************************************************************

fsDhcp6RlyIfTable OBJECT-TYPE  
    SYNTAX SEQUENCE OF FsDhcp6RlyIfEntry
    MAX-ACCESS  not-accessible  
    STATUS      current  
    DESCRIPTION  
       "This table contains the statistics of SL-DHCPv6 Relay on each 
        interface. It will give the Number of Information Request, Relay
        Forward, Relay reply messages received on the interface and 
        Number of Relay Reply, Relay Forward and Reply messages 
        transmitted from the interface.
        This Table includes remote-id support to transmit remote-id value  
        within the Relay-fwd message from the interface."
    ::= { fsDhcp6RlyConfig 1 }  

fsDhcp6RlyIfEntry OBJECT-TYPE  
    SYNTAX      FsDhcp6RlyIfEntry  
    MAX-ACCESS  not-accessible  
    STATUS      current  
    DESCRIPTION  
       "Entries of the fsDhcp6RlyIfTable"
    INDEX {fsDhcp6RlyIfIndex}
    ::=  { fsDhcp6RlyIfTable 1 }  

FsDhcp6RlyIfEntry ::= SEQUENCE {  
    fsDhcp6RlyIfIndex           Integer32,
    fsDhcp6RlyIfHopThreshold    Integer32,
    fsDhcp6RlyIfInformIn        Counter32,
    fsDhcp6RlyIfRelayForwIn     Counter32, 
    fsDhcp6RlyIfRelayReplyIn    Counter32,
    fsDhcp6RlyIfInvalidPktIn    Counter32,
    fsDhcp6RlyIfCounterRest     TruthValue,
    fsDhcp6RlyIfRowStatus       RowStatus,
    fsDhcp6RlyIfRemoteIdOption  INTEGER,
    fsDhcp6RlyIfRemoteIdDUID    OCTET STRING,
    fsDhcp6RlyIfRemoteIdOptionValue DisplayString,
    fsDhcp6RlyIfRemoteIdUserDefined DisplayString
}
fsDhcp6RlyIfIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647) 
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
       "This object identifies the unique Interface Index
        value mapped to this Server Address Table.."
    ::= { fsDhcp6RlyIfEntry 1}


fsDhcp6RlyIfHopThreshold OBJECT-TYPE
    SYNTAX      Integer32 (0..32)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "A maximum hop count, a relay agent allow to pass through it. If
        the HopCount in the DHCP Message is greater than the 
        fsDhcp6RlyHopsThreshold packet get dropped at the Relay Agent "
    DEFVAL { 4 }
    ::= { fsDhcp6RlyIfEntry 3 }
 
fsDhcp6RlyIfInformIn OBJECT-TYPE
    SYNTAX      Counter32 
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION
       "This object identifies the number of INFORMATION REQUEST messages
        received on the Interface."
    ::= { fsDhcp6RlyIfEntry 4 }

fsDhcp6RlyIfRelayForwIn OBJECT-TYPE
    SYNTAX      Counter32 
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION
       "This object identifies the number of RELAY FORWARD messages
        received on the Interface."
    ::= { fsDhcp6RlyIfEntry 5 }

fsDhcp6RlyIfRelayReplyIn OBJECT-TYPE
    SYNTAX      Counter32 
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION
       "This object identifies the number of RELAY REPLY messages
        received on the Interface."
    ::= { fsDhcp6RlyIfEntry 6 }




fsDhcp6RlyIfInvalidPktIn OBJECT-TYPE
    SYNTAX      Counter32 
    MAX-ACCESS  read-only 
    STATUS      current
    DESCRIPTION
       "This object identifies the number of Invalid messages
        received on the Interface."
    ::= { fsDhcp6RlyIfEntry 10 }

fsDhcp6RlyIfCounterRest OBJECT-TYPE
    SYNTAX      TruthValue 
    MAX-ACCESS  read-create 
    STATUS      current
    DESCRIPTION
       "This object is used to reset all the statistics counter objects present
        in this table. This will be done by setting the value of this column to
        'true(1)'.
        This column always reads back to 'false(2)'."
    ::= { fsDhcp6RlyIfEntry 11 }

fsDhcp6RlyIfRowStatus OBJECT-TYPE 
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "This object is used to create/delete a row in the interface table.
        when the interface is deleted from the system the corresponding
        row from this table will also be deleted."
    ::= { fsDhcp6RlyIfEntry 12 } 

fsDhcp6RlyIfRemoteIdOption OBJECT-TYPE
     SYNTAX    INTEGER
        {
          duid (1),
          switchName (2),
          mgmtIp (3),
          userDefined (4)
        }
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION
        "This object is used to specify which parameter has to be included
        as remote-id in the outgoing relay-fwd message.

        DUID (DHCP Unique Identifier) : If fsDhcp6RlyIfRemoteIdOption object
        is set as 1, then dhcp unique identifier will be sent with the relay
        forwarded message as remote-id. DUID can be configured by the use of
        fsDhcp6RlyIfRemote-IdDUID object.

        switchName : If fsDhcp6RlyIfRemoteIdOption object is set as 2, then
        current system name (switch name) will be included as remote-id.

        mgmtIp : If fsDhcp6RlyIfRemoteIdOption object is set as 3, then 
        remote-id will be set as the management IP of the system.

				userDefined : If fsDhcp6RlyIfRemoteIdOption object is set as 4, then 
				administrative configured ascii value will be sent with the relay forwarded 
				message as remote-id. This fsDhcp6RlyIfRemoteIdUserDefined object can be used 
				to configure the user specific ascii value.

        fsDhcp6RlyIfRemoteIdOption can be set only if fsDhcp6RlyOption37Control
        is set as enable.In case fsDhcp6RlyOption37Control is disable then 
        fsDhcp6RlyIfRemoteIdOption will not be applicable."
 DEFVAL  { switchName }
 ::= { fsDhcp6RlyIfEntry 13 }

fsDhcp6RlyIfRemoteIdDUID OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0..128))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is used to define the appropriate DUID for DHCPv6
        Relay Agent.

        Any communicating device (in dhcpv6 perspective) have a unique
        DHCPv6 identifier (DUID). According to the RFC 4649, DHCPv6 servers
        can use the DUID to make decisions about the information such as
        addresses, delegated prefixes, configuration parameters etc. that
        the client is to receive.

        Relay Agent uses the DUID to have a unique remote-id for its enterprise
        number, as sequence of enterprise number followed by remote-id must be
        globally unique.

        DHCPv6 Relay DUID is a user defined parameter so it can be set to any  
        value within defined boundaries. 
        DHCPv6 Relay DUID is a 128 octets long identifier, which can have
        Link-Layer Address as DUID octets or can have Link-Layer address
        along with some other parameter having variable octets or can have 
        any sequence of octets representing unique DUID.

        This Object will be used only if value of fsDhcp6RlyIfRemoteIdOption object
        is set as DUID (1)."

 DEFVAL  { ''h }
 ::= { fsDhcp6RlyIfEntry 14 }

fsDhcp6RlyIfRemoteIdOptionValue OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(1..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "This object is used to get the current value of the remote-id option
         (specified by fsDhcp6RlyIfRemoteIdOption object ), which is being used as
         remote-id in dhcpv6 relay agent.

         This object is covering all the three options (system name,
         management ip, and duid value) although there is a specific object for
         duid parameter."

    ::= { fsDhcp6RlyIfEntry 15 }

fsDhcp6RlyIfRemoteIdUserDefined OBJECT-TYPE
    SYNTAX      DisplayString(SIZE (0..128))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
         "This object is used to configure the administrative specific unique ascii
         value for DHCPv6 Relay Agent.

         DHCPv6 servers can use this value to make decisions about the
         information such as addresses, delegated prefixes, configuration parameters etc,
         that the client is to receive.

         Relay Agent uses this unique ascii value to have a unique remote-id for its
         enterprise number, as sequence of enterprise number followed by remote-id must
         be globally unique.

         DHCPv6 Relay String is a user defined parameter so it can be set to any
         value within defined boundaries.
         DHCPv6 Relay ascii value is a 128 octets long identifier which can have any
         administrative configured ascii value representing the unique string.

         This Object will be used only if value of fsDhcp6RlyIfRemoteIdOption object
         is set as userDefined (4)."

    ::= { fsDhcp6RlyIfEntry 16 }


-- ******************************************************************
-- End of Relay Interface Table {fsDhcp6RlyIfTable)
-- ******************************************************************
-- ******************************************************************
-- Start of Relay Server Address Table {fsDhcp6RlySrvAddressTable)
-- ******************************************************************
fsDhcp6RlySrvAddressTable   OBJECT-TYPE 
    SYNTAX SEQUENCE OF DhcpRelaySrvAddressEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
       "This table contains the IP addresses of the DHCP Server 
        to which the Relay Agent needs to forward the packets from 
        the client or other relay agent . This object becomes 
        active only when fsDhcp6RlyServersOnly is enabled."
    ::= { fsDhcp6RlyConfig 2 }

fsDhcp6RlySrvAddressEntry OBJECT-TYPE 
    SYNTAX      DhcpRelaySrvAddressEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
       "The Address table entry. This entry is not lost
        upon reboot. It is backed up by stable storage. Each entry
        in this table contains the required attribute values which
        define the Address Table Entry"
    INDEX { fsDhcp6RlyInIfIndex, fsDhcp6RlySrvAddress }
    ::= { fsDhcp6RlySrvAddressTable 1 }

DhcpRelaySrvAddressEntry ::= SEQUENCE {
    fsDhcp6RlyInIfIndex               Integer32,
    fsDhcp6RlySrvAddress              OCTET STRING,
    fsDhcp6RlySrvAddressRowStatus     RowStatus
    }

fsDhcp6RlyInIfIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647) 
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
       "This object identifies the input Interface Index
        value mapped to this Server Address Table.."
    ::= { fsDhcp6RlySrvAddressEntry 1}

fsDhcp6RlySrvAddress OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (16))
    MAX-ACCESS  not-accessible
    STATUS      current 
    DESCRIPTION
       "The object indicates the IP Address of the DHCP server."
    ::= { fsDhcp6RlySrvAddressEntry 2 }  

fsDhcp6RlySrvAddressRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION
       "This object is the status of the row "
    ::=  { fsDhcp6RlySrvAddressEntry 3 }  

-- ******************************************************************
-- End of Relay Server Address Table {fsDhcp6RlySrvAddressTable)
-- ******************************************************************

-- ******************************************************************
-- Start of Relay Output Interface Table {fsDhcp6RlyOutIfTable)
-- ******************************************************************
fsDhcp6RlyOutIfTable   OBJECT-TYPE 
    SYNTAX SEQUENCE OF Dhcp6RlyOutIfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
       "This table contains interface that specifies output interface for a 
        destination. If this argument is configured, client messages are 
        forwarded to the destination address through the link to which the 
        output interface is connected."
    ::= { fsDhcp6RlyConfig 3 }

fsDhcp6RlyOutIfEntry OBJECT-TYPE 
    SYNTAX      Dhcp6RlyOutIfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
       "The output interface table entry. This entry is not lost
        upon reboot. It is backed up by stable storage. Each entry 
        in this table contains the required attribute values which
        define the output interface Table Entry"
    INDEX { fsDhcp6RlyInIfIndex, fsDhcp6RlySrvAddress, fsDhcp6RlyOutIfIndex}
    ::= { fsDhcp6RlyOutIfTable 1 }

Dhcp6RlyOutIfEntry ::= SEQUENCE {
    fsDhcp6RlyOutIfIndex         Integer32,
    fsDhcp6RlyOutIfRowStatus     RowStatus
    }

fsDhcp6RlyOutIfIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647) 
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
       "This object identifies the output Interface Index
        value mapped to this Server Address Table.."
    ::= { fsDhcp6RlyOutIfEntry 1}

fsDhcp6RlyOutIfRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION
       "This object is the status of the row "
    ::=  { fsDhcp6RlyOutIfEntry 2 }  

-- ******************************************************************
-- End of Relay Server Address Table {fsDhcp6RlySrvAddressTable)
-- ******************************************************************

-- ******************************************************************
--                               TRAPS
-- ******************************************************************
fsDhcp6RlyTrapIfIndex OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   accessible-for-notify
    STATUS       current
    DESCRIPTION
    "This object specifies the interface on which the trap is 
    was triggered."
    ::= { fsDhcp6RlyTraps 1 }
fsDhcp6RlyTrapInvalidMsgType OBJECT-TYPE
    SYNTAX       Integer32
    MAX-ACCESS   accessible-for-notify
    STATUS       current
    DESCRIPTION
    "This object specifies the type of invalid message received
    on a relay enabled interface."
    ::= { fsDhcp6RlyTraps 2 }
-- ******************************************************************
--                       NOTIFICATION-TYPES
-- ******************************************************************
fsDhcp6RlyRlyInvalidPacketTrap NOTIFICATION-TYPE
    OBJECTS {
             fsDhcp6RlyTrapInvalidMsgType,
             fsDhcp6RlyTrapIfIndex
            }
    STATUS      current
    DESCRIPTION
       "This trap is generated when received Message is Invalid."
    ::= {fsDhcp6RlyNotify 1}

fsDhcp6RlyRlyMaxHopCountTrap NOTIFICATION-TYPE
    OBJECTS {
             fsDhcp6RlyTrapIfIndex
            }
    STATUS      current
    DESCRIPTION
      "This trap is generated when relay agent is not able to 
       add the relay header because the received hop count value is 
       equal to the configured hop count value."
    ::= {fsDhcp6RlyNotify 2}
END
