-- ============================================================================
-- AT-ETH.MIB, Allied Telesis enterprise MIB: DHCP module
--
-- Extracted from ATROUTER.MIB of pre 2.9.1 release
--
-- June 2006, Stan Xiang
--
-- Copyright (c) 2006 by Allied Telesis, Inc.
-- All rights reserved.
-- 
-- ============================================================================

AT-DHCP-MIB DEFINITIONS ::= BEGIN

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

    DisplayString,
    TruthValue
        FROM SNMPv2-TC

	ifIndex
		FROM IF-MIB

	modules,
	DisplayStringUnsized
		FROM AT-SMI-MIB
;
                                 
dhcp	MODULE-IDENTITY
	    LAST-UPDATED "200606281222Z"
    	ORGANIZATION "Allied Telesis, Inc"
		CONTACT-INFO
		    "http://www.alliedtelesis.com"
		DESCRIPTION
		    "This MIB file contains definitions of managed objects for the
	    	DHCP module. "

	    REVISION "200606281222Z"
		DESCRIPTION
			"Initial Revision"

::= { modules 70 }
									  
-- The DHCP (Dynamic Host Configuration Protocol) module. This group provides
-- management information for DHCP, which will be implemented in a number of
-- stages.
-- stage 1, May/2002, Tony van der Peet
--         No DHCP MIB has been found in an RFC, so DHCP has to be supported
--         in the enterprise MIB. Basic request is for a TRAP when a DHCP
--         host range is exhausted. Some basic variables for the range
--         information are provided in order to allow lookup of the exhausted
--         range. Also provided are variables for the express purpose of
--         adding to the TRAP message.

-- The DHCP range table. Each entry in the table gives information about a
-- single DHCP range currently configured in the switch/router.

dhcpRangeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The table of DHCP ranges."
    ::= { dhcp 1 }

dhcpRangeEntry OBJECT-TYPE
    SYNTAX      DhcpRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A single entry of the DHCP range table. This contains
            information about a single DHCP range configured on this
            device."
    INDEX   { dhcpRangeIndex }
    ::= { dhcpRangeTable 1 }

DhcpRangeEntry ::=
        SEQUENCE {
            dhcpRangeIndex
                INTEGER,
            dhcpRangeName
                DisplayStringUnsized,
            dhcpRangeBaseAddress
                IpAddress,
            dhcpRangeNumberOfAddresses
                INTEGER,
            dhcpRangeGateway
                IpAddress
        }

dhcpRangeIndex OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The index of this DHCP range. DHCP ranges are stored in a list
            which is ordered by range name. The index gives the place in the
            list. Note that if ranges are added or deleted, the index for a
            given range will change. Since this table is read-only, this will
            not have an undue effect, but if in future this table is made
            read-write, a mechanism will have to be created to lock the indices
            of the range table while SET operations are proceeding."
    ::= { dhcpRangeEntry 1 }

dhcpRangeName OBJECT-TYPE
    SYNTAX      DisplayStringUnsized (SIZE (1..15))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The name given to identify this DHCP range. This is the ultimate
            method for uniquely identifying this range. Names are compared without
            regard to case, for example >range1< will be treated as the same as
            >RANGE1<."
    ::= { dhcpRangeEntry 2 }

dhcpRangeBaseAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The base address of this range. This address defines the lower bound
            of the range of IP addresses which can be allocated to devices
            requesting an IP address via DHCP."
    ::= { dhcpRangeEntry 3 }

dhcpRangeNumberOfAddresses OBJECT-TYPE
    SYNTAX      INTEGER (1..256)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of IP address in this range. This number defines the upper
            bound of the range of IP addresses which can be allocated to devices
            requesting an IP address via DHCP."
    ::= { dhcpRangeEntry 4 }

dhcpRangeGateway OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The IP address of the BOOTP relay agent which will be relaying DHCP
            requests for this range. If this address is 0.0.0.0, then there will
            be no BOOTP relay agent and the range will be allocated to devices
            directly connected to this device."
    ::= { dhcpRangeEntry 5 }

-- DHCP traps.

-- DHCP trap variables. special variables set up to act as reference points for
-- variables sent in TRAPs.

dhcpTrapVariable OBJECT IDENTIFIER ::= { dhcp 2 }

dhcpRangeExhaustedGateway OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Whenever a DHCP client attempts to lease an IP address and
            the DHCP server cannot provide an address, this variable is
            set to the gateway address of the DHCP request. The gateway
            address is the IP address of the gateway acting as a BOOTP
            relay agent for the request. If there is no gateway, the
            address will be 0.0.0.0. If the gateway address is non-zero,
            the DHCP range from which the allocation should have been
            made will able to be identified by lookup in the DHCP range
            table."
    ::= { dhcpTrapVariable 1 }

dhcpRangeExhaustedInterface OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Whenever a DHCP client attempts to lease an IP address and
            the DHCP server cannot provide an address, this variable is
            set to the IP address of the interface which received the
            DHCP request. If the gateway address associated with the
            failed DHCP request is 0.0.0.0, the interface address will
            be able to be used to lookup the range that was exhausted
            and from which the allocation should have been made."
    ::= { dhcpTrapVariable 2 }


dhcpTraps	OBJECT IDENTIFIER ::= { dhcp 0 }
dhcpRangeExhaustedTrap NOTIFICATION-TYPE
    OBJECTS   	{ dhcpRangeExhaustedGateway, dhcpRangeExhaustedInterface }
	STATUS		current
    DESCRIPTION
                "This trap is generated when a DHCP client makes a request for
                an IP address and the request cannot be satisfied because all
                addresses in the range are already allocated to other devices."
    ::= { dhcpTraps 1 }

-- The DHCP client status table. Each entry in the table gives information about 
-- ip addresses currently configured on created ranges on the switch/router.
-- Information shown are the client ip address, clientID, ClientState, ClientType,
-- ClientExpiry
-- This group was added on 6/Jan/2004 by Sean Lin on request from ATKK for Yahoo!BB

dhcpClientTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DhcpClientEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The table of defined DHCP range client addresses."
    ::= { dhcp 3 }

dhcpClientEntry OBJECT-TYPE
    SYNTAX      DhcpClientEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A single entry of the DHCP range client table. This contains
            information about a single DHCP range client address."
    INDEX   { dhcpRangeIndex, dhcpClientIpAddress }
    ::= { dhcpClientTable 1 }

DhcpClientEntry ::=
        SEQUENCE {
            dhcpClientIpAddress
                IpAddress,
            dhcpClientID
                OCTET STRING,
            dhcpClientState
                INTEGER,
            dhcpClientType
                INTEGER,
            dhcpClientExpiry
                OCTET STRING
        }

dhcpClientIpAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "An IP address from the range of available addresses."
    ::= { dhcpClientEntry 1 }

dhcpClientID OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The hardware address of the client, if any, that has been
            assigned the IP address."
    ::= { dhcpClientEntry 2 }

dhcpClientState OBJECT-TYPE
    SYNTAX      INTEGER {unused (0), reclaiming (1), inuse (2), offered (3) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The state of the IP address; one of unused, inuse or 
            reclaim."
    ::= { dhcpClientEntry 3 }

dhcpClientType OBJECT-TYPE
    SYNTAX      INTEGER {auto (1), dyn (2), static (3) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The type of allocation mechanism applied to the IP address; 
            one of static, auto or dyn."
    ::= { dhcpClientEntry 4 }

dhcpClientExpiry OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The expiry date for dynamically allocated IP address."
    ::= { dhcpClientEntry 5 }

END
