-- *****************************************************************
-- MY-DHCP-SNOOPING-MIB.mib:  My DHCP snooping MIB file
--
-- $Copyright$
-- 
-- *****************************************************************
--

MY-DHCP-SNOOPING-MIB DEFINITIONS ::= BEGIN

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

    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF

    TruthValue,
    MacAddress, 
    RowStatus
        FROM SNMPv2-TC

    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB

    InterfaceIndex
        FROM IF-MIB

    VlanIndex
        FROM Q-BRIDGE-MIB 

    myMgmt
        FROM MY-SMI;

myDhcpSnoopingMIB MODULE-IDENTITY
    LAST-UPDATED "200710180000Z"
    ORGANIZATION "$Company$"
    CONTACT-INFO
        " 
        Tel: $Telephone$ 

        E-mail: $E-mail$"
    DESCRIPTION
        "This module defines my DHCP snooping mibs."
    REVISION    "200710180000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { myMgmt 42} 

myDhcpSnoopingMIBObjects
    OBJECT IDENTIFIER ::= { myDhcpSnoopingMIB 1 }
myDhcpSnoopingMIBConformance
    OBJECT IDENTIFIER ::= { myDhcpSnoopingMIB 2 }

mySNDhcpGlobal
    OBJECT IDENTIFIER ::= { myDhcpSnoopingMIBObjects 1 }
mySNDhcpInterface
    OBJECT IDENTIFIER ::= { myDhcpSnoopingMIBObjects 2 }
mySNDhcpBindings
    OBJECT IDENTIFIER ::= { myDhcpSnoopingMIBObjects 3 }
--
-- The Global group  
-- 

mySNDhcpFeatureEnable  OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object indicates whether the DHCP Snooping feature is
        enabled. 
        Setting this object to 'false' disables the DHCP Snooping 
        feature. Setting this object to 'true' will start the DHCP Snooping 
        feature running in the device."
    ::= { mySNDhcpGlobal 1 }

mySNDhcpDatabaseUpdateInterval OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS            "seconds"
    MAX-ACCESS    read-write
    STATUS          current
    DESCRIPTION
        "This object indicates the time interval at which DHCP
         bindings information will be written to the database file
         denoted by mySNDhcpDatabaseFile object."
    ::= { mySNDhcpGlobal 2 }

mySNDhcpRelayAgentInfoOptEnable OBJECT-TYPE
    SYNTAX         TruthValue
    MAX-ACCESS    read-write
    STATUS          current
    DESCRIPTION
        "This object indicates if the DHCP relay agent information
        option (option 82) will be inserted to DHCP packets by
        DHCP Snooping feature.
        If this object is set to 'true', DHCP option 82 data will
        be inserted to DHCP packets.
        If this object is set to 'false', DHCP option 82 data
        will not be inserted."
    REFERENCE
        "RFC 3046, DHCP Relay Agent Information Option."
    ::= { mySNDhcpGlobal 3 }

mySNDhcpMatchMacAddressEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS    read-write
    STATUS          current
    DESCRIPTION
        "This object indicates if DHCP Snooping Mac address
        matching is enabled. 
        If this object is set to 'true', DHCP Snooping Mac
        address matching is enabled.
        If this object is set to 'false', DHCP Snooping Mac
        address matching is disabled."
    ::= { mySNDhcpGlobal 4 }

--
-- The DHCP Snooping Interface Trust Table
--

mySNDhcpIfTrustTable OBJECT-TYPE
    SYNTAX         SEQUENCE OF MySNDhcpIfTrustEntry
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A table provides the mechanism to configure the trust
        state for DHCP Snooping purpose at each physical interface
        capable of this feature. Some of the interfaces
        (but not limited to) for which this feature might be
        applicable are: ifType = ethernetCsmacd(6)." 
    ::= { mySNDhcpInterface 1 }
 
mySNDhcpIfTrustEntry OBJECT-TYPE
    SYNTAX         MySNDhcpIfTrustEntry 
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A row instance contains the configuration to enable
        or disable trust state for DHCP Snooping at each physical
        interface capable of this feature." 
    INDEX { mySNDhcpIfTrustIndex }
    ::= { mySNDhcpIfTrustTable 1 }

MySNDhcpIfTrustEntry ::= SEQUENCE {
    mySNDhcpIfTrustIndex        InterfaceIndex,
    mySNDhcpIfTrustEnable       TruthValue 
}

mySNDhcpIfTrustIndex OBJECT-TYPE
        SYNTAX         InterfaceIndex
        MAX-ACCESS   not-accessible
        STATUS         current
        DESCRIPTION
            " "
        ::= { mySNDhcpIfTrustEntry 1 }  
     
mySNDhcpIfTrustEnable OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS  read-write
    STATUS        current
    DESCRIPTION
        "This object indicates whether the interface is trusted for
        DHCP Snooping purpose. 
        If this object is set to 'true', the interface is trusted.
        DHCP packets coming to this interface will be forwarded
        without checking.
        If this object is set to 'false', the interface is not
        trusted. DHCP packets coming to this interface will be
        subjected to DHCP checks." 
    ::= { mySNDhcpIfTrustEntry 2 }

--
-- The DHCP Snooping Interface Suppression Table
--

mySNDhcpIfSuppressionTable OBJECT-TYPE
    SYNTAX         SEQUENCE OF MySNDhcpIfSuppressionEntry
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A table provides the mechanism to configure the suppression
        state for DHCP Snooping purpose at each physical interface
        capable of this feature. Some of the interfaces
        (but not limited to) for which this feature might be
        applicable are: ifType = ethernetCsmacd(6)." 
    ::= { mySNDhcpInterface 2 }
 
mySNDhcpIfSuppressionEntry OBJECT-TYPE
    SYNTAX         MySNDhcpIfSuppressionEntry 
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A row instance contains the configuration to enable
        or disable suppression state for DHCP Snooping at each physical
        interface capable of this feature." 
    INDEX { mySNDhcpIfSuppressionIndex }
    ::= { mySNDhcpIfSuppressionTable 1 }

MySNDhcpIfSuppressionEntry ::= SEQUENCE {
    mySNDhcpIfSuppressionIndex               InterfaceIndex,
    mySNDhcpIfSuppressionEnable       TruthValue 
}

mySNDhcpIfSuppressionIndex OBJECT-TYPE
        SYNTAX        InterfaceIndex
        MAX-ACCESS  not-accessible
        STATUS        current
        DESCRIPTION
            "This object indicates the interface open Suppression"
        ::= { mySNDhcpIfSuppressionEntry 1 }  
     
mySNDhcpIfSuppressionEnable OBJECT-TYPE
    SYNTAX         TruthValue
    MAX-ACCESS   read-write
    STATUS         current
    DESCRIPTION
        "This object indicates whether the interface is suppression for
        DHCP Snooping purpose. 
        If this object is set to 'true', the interface is suppressed.
        DHCP packets coming to this interface will be ingnored.
        If this object is set to 'false', the interface is not
        suppressed. DHCP packets coming to this interface will be
        processed by DHCP Snooping."
    ::= { mySNDhcpIfSuppressionEntry 2 }

--
--   The DHCP Address Binding Table
--

mySNDhcpAddressBindTable OBJECT-TYPE
    SYNTAX         SEQUENCE OF MySNDhcpAddressBindEntry
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A table provides the mechanism to configure the DHCP Snooping 
        binding database set as IP+MAC Address binding."
    ::= { mySNDhcpInterface 3 }
 
mySNDhcpAddressBindEntry OBJECT-TYPE
    SYNTAX         MySNDhcpAddressBindEntry 
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A row instance contains the configuration to enable
        or disable address bind for DHCP Snooping at each physical
        interface capable of this feature." 
    INDEX { mySNDhcpAddressBindIndex }
    ::= { mySNDhcpAddressBindTable 1 }

MySNDhcpAddressBindEntry ::= SEQUENCE {
    mySNDhcpAddressBindIndex        InterfaceIndex,
    mySNDhcpAddressBindEnable       TruthValue 
}

mySNDhcpAddressBindIndex OBJECT-TYPE
        SYNTAX        InterfaceIndex
        MAX-ACCESS  not-accessible
        STATUS        current
        DESCRIPTION
            "This object indicates the interface open Address binding."
        ::= { mySNDhcpAddressBindEntry 1 }  

mySNDhcpAddressBindEnable OBJECT-TYPE
    SYNTAX         TruthValue
    MAX-ACCESS   read-write
    STATUS         current
    DESCRIPTION
        "This object indicates if DHCP Snooping Address Binding
        is enabled.
        Setting this object to 'true', DHCP binding entry is set as
        Address binding entrys; Otherwise, this funciton is disabled."
    ::= { mySNDhcpAddressBindEntry 2 }

--
--   The DHCP Bindings Table
--

mySNDhcpBindingsTable OBJECT-TYPE
    SYNTAX         SEQUENCE OF MySNDhcpBindingsEntry
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A table provides the DHCP bindings information learnt by
        the device." 
    ::= { mySNDhcpBindings 1 }
 
mySNDhcpBindingsEntry OBJECT-TYPE
    SYNTAX         MySNDhcpBindingsEntry 
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "A row instance contains the Mac address, IP address type,
        IP address, VLAN number, interface number, leased time and
        status of this instance." 
    INDEX { mySNDhcpBindingsVlan, 
            mySNDhcpBindingsMacAddress,
            mySNDhcpBindingsAddrType }
    ::= { mySNDhcpBindingsTable 1 }

MySNDhcpBindingsEntry ::= SEQUENCE {
    mySNDhcpBindingsVlan            VlanIndex,
    mySNDhcpBindingsMacAddress      MacAddress, 
    mySNDhcpBindingsAddrType        INTEGER,
    mySNDhcpBindingsIpAddress       IpAddress,
    mySNDhcpBindingsInterface       InterfaceIndex,
    mySNDhcpBindingsLeasedTime      Unsigned32,
    mySNDhcpBindingsStatus          RowStatus
}
 
mySNDhcpBindingsVlan OBJECT-TYPE
    SYNTAX         VlanIndex
    MAX-ACCESS   not-accessible 
    STATUS         current
    DESCRIPTION
        "This object indicates the VLAN to which a DHCP client host
         belongs."
    ::= { mySNDhcpBindingsEntry 1 }

mySNDhcpBindingsMacAddress OBJECT-TYPE
    SYNTAX         MacAddress 
    MAX-ACCESS   not-accessible 
    STATUS         current
    DESCRIPTION
        "This object indicates the MAC address of a DHCP client
         host." 
    ::= { mySNDhcpBindingsEntry 2 }

mySNDhcpBindingsAddrType OBJECT-TYPE
    SYNTAX INTEGER{
        dynamic(1),  -- Dynamic Addresss bind, Dynamic get from DHCP Snooping address binding database;
        static(2)       -- Static Address bind, Added by Administrator;
    }
    MAX-ACCESS   not-accessible
    STATUS         current
    DESCRIPTION
        "This object indicates the type of IP+MAC binding address denoted
        in mySNDhcpBindingsIpAddress object." 
    ::= { mySNDhcpBindingsEntry 3 }

mySNDhcpBindingsIpAddress OBJECT-TYPE
    SYNTAX         IpAddress
    MAX-ACCESS   read-write
    STATUS         current
    DESCRIPTION
        "This object indicates the allocated IP address of
        a DHCP client host."
    ::= { mySNDhcpBindingsEntry 4 }

mySNDhcpBindingsInterface OBJECT-TYPE
    SYNTAX         InterfaceIndex
    MAX-ACCESS   read-write
    STATUS         current
    DESCRIPTION
        "This object indicates the interface where a DHCP client
        host connects to."
    ::= { mySNDhcpBindingsEntry 5 }

mySNDhcpBindingsLeasedTime OBJECT-TYPE
    SYNTAX        Unsigned32
    UNITS          "seconds" 
    MAX-ACCESS  read-only
    STATUS        current
    DESCRIPTION
        "This object indicates the leased time of this DHCP
        bindings."
    ::= { mySNDhcpBindingsEntry 6 }

mySNDhcpBindingsStatus OBJECT-TYPE
    SYNTAX         RowStatus 
    MAX-ACCESS   read-create
    STATUS         current
    DESCRIPTION
        "This object is used to to manage the deletion of rows
        in this table. This object only supports active(1) and
        destroy(6) value. 
        Whenever a DHCP binding is learnt by the device, an
        entry will be created by the device in this table with
        its RowStatus object set to active(1). Setting this
        object value to destroy(6) will clear the DHCP bindings
        information represented by this row instance."
    ::= { mySNDhcpBindingsEntry 7 }

myDhcpSnoopingMIBCompliances OBJECT IDENTIFIER ::= { myDhcpSnoopingMIBConformance 1 }
myDhcpSnoopingMIBGroups      OBJECT IDENTIFIER ::= { myDhcpSnoopingMIBConformance 2 }


-- compliance statements

myDhcpSnoopingMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the My Dhcp Snooping MIB"
        MODULE  -- this module
                MANDATORY-GROUPS { myDhcpSnoopingMIBGroup
                 }
        ::= { myDhcpSnoopingMIBCompliances 1 }
                
-- units of conformance

myDhcpSnoopingMIBGroup OBJECT-GROUP
        OBJECTS {
          mySNDhcpFeatureEnable,
          mySNDhcpDatabaseUpdateInterval,
          mySNDhcpRelayAgentInfoOptEnable,
          mySNDhcpMatchMacAddressEnable,
          mySNDhcpIfTrustEnable,
          mySNDhcpIfSuppressionEnable,
          mySNDhcpAddressBindEnable,
          mySNDhcpBindingsVlan,
          mySNDhcpBindingsMacAddress,
          mySNDhcpBindingsIpAddress,
          mySNDhcpBindingsInterface,
          mySNDhcpBindingsLeasedTime,
          mySNDhcpBindingsStatus
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing snooping Dhcp configure ."
        ::= { myDhcpSnoopingMIBGroups 1 }
        
END
