      	
	TPLINK-DHCPRELAY-MIB DEFINITIONS ::= BEGIN
       
       IMPORTS
         	TPRowStatus
						FROM TPLINK-TC-MIB
			MODULE-IDENTITY, OBJECT-TYPE, IpAddress
          	  	        FROM SNMPv2-SMI
          	tplinkMgmt
						FROM TPLINK-MIB
			ifIndex
						FROM RFC1213-MIB;
						
			tplinkDhcpRelayMIB MODULE-IDENTITY
				LAST-UPDATED    "201212171121Z"
				ORGANIZATION    "TPLINK"
				CONTACT-INFO    "www.tplink.com"
				DESCRIPTION	    "Private MIB for DHCP Relay configuration."
				REVISION        "201212171121Z"
				DESCRIPTION
				"Initial version of this MIB module."
			::= { tplinkMgmt 39 }
		
			tplinkDhcpRelayMIBObjects			OBJECT IDENTIFIER	::= { tplinkDhcpRelayMIB 1 }
			tplinkDhcpRelayNotifications		OBJECT IDENTIFIER	::= { tplinkDhcpRelayMIB 2 }
			
			dhcpRelayGlobalConfig		OBJECT IDENTIFIER ::= {tplinkDhcpRelayMIBObjects 1}
			dhcpRelayServerConfig		OBJECT IDENTIFIER ::= {tplinkDhcpRelayMIBObjects 2}			  
			dhcpRelayVlanRelayServerConfig		OBJECT IDENTIFIER ::= {tplinkDhcpRelayMIBObjects 3}	
			dhcpRelayOption82Config		OBJECT IDENTIFIER	::= { tplinkDhcpRelayMIBObjects 4}
			
			dhcpRelayEnableState OBJECT-TYPE
            	SYNTAX  INTEGER{
	      			disable(0), 						--disable
	      			enable(1)								--enable
	      		}
            	MAX-ACCESS  read-write
            	STATUS  current
            	DESCRIPTION
                      "Enable or disable the switch as a DHCP relay."
            ::= { dhcpRelayGlobalConfig 1 }
            
			dhcpRelayHops OBJECT-TYPE
            	SYNTAX  INTEGER 
            	MAX-ACCESS  read-write
            	STATUS  current
            	DESCRIPTION
                      "Specify the maximum number of relay hops.
					  Enter an entry between 1 and 16 to define the maximum number of router hops 
					  DHCP messages can be forwarded. The default hop count is 4."
            ::= { dhcpRelayGlobalConfig 2 }

			dhcpRelayTimeThreshold OBJECT-TYPE
            	SYNTAX  INTEGER 
            	MAX-ACCESS  read-write
            	STATUS  current
            	DESCRIPTION
                      "Specify the maximum time limit for routing a DHCP packet. 
					  Enter an entry between 0 and 65535 seconds.
					  The time field in the DHCP packet must be equal to or greater than this setting to be relayed by the router. 
					  If a value of 0 is entered, the Switch will not process the value in the time field of the DHCP packet."
            ::= { dhcpRelayGlobalConfig 3 }
        
		--**************
		--Set VLAN Interface	
		--**************
        dhcpRelayServerVlanInterfaceTable OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpRelayServerVlanInterfaceEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
						"The list of DHCP server of VLAN interface."
			::= {dhcpRelayServerConfig 1}
			
		dhcpRelayServerVlanInterfaceEntry OBJECT-TYPE
			SYNTAX  DhcpRelayServerVlanInterfaceEntry
			MAX-ACCESS  not-accessible
			STATUS  current
			DESCRIPTION
                    "DHCP server entries."
			INDEX   {dhcpRelayServerVlanId,
						dhcpRelayServerVlanInterfaceIp}
			::= { dhcpRelayServerVlanInterfaceTable 1 }
			
		DhcpRelayServerVlanInterfaceEntry ::=
            SEQUENCE {
            		dhcpRelayServerVlanId
            			INTEGER,
					dhcpRelayServerVlanInterfaceIp
						IpAddress, 
					dhcpRelayServerVlanInterfaceStatus
						TPRowStatus
            }
            
        dhcpRelayServerVlanId OBJECT-TYPE
            SYNTAX  INTEGER
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "VLAN interface ID."
              ::= { dhcpRelayServerVlanInterfaceEntry 1 }
			
		dhcpRelayServerVlanInterfaceIp OBJECT-TYPE
            SYNTAX  IpAddress
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "DHCP Server IP address."
              ::= { dhcpRelayServerVlanInterfaceEntry 2 }
			  			  
		dhcpRelayServerVlanInterfaceStatus OBJECT-TYPE
            SYNTAX  TPRowStatus
            MAX-ACCESS  read-create
            STATUS  current
            DESCRIPTION
                     " The following values are states:
                     these values may be used as follow:
                     active(1),if the entry is being used.
                     createAndGo(4),not being used.
                     destroy(6),destory the entry."
         	::={ dhcpRelayServerVlanInterfaceEntry 3 }
			
		--**************
		--Set routed port Interface	
		--**************
		dhcpRelayServerRoutedPortInterfaceTable OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpRelayServerRoutedPortInterfaceEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
						"The list of DHCP server of routed port interface."
			::= {dhcpRelayServerConfig 3}
			
		dhcpRelayServerRoutedPortInterfaceEntry OBJECT-TYPE
			SYNTAX  DhcpRelayServerRoutedPortInterfaceEntry
			MAX-ACCESS  not-accessible
			STATUS  current
			DESCRIPTION
                    "DHCP server entries."
			INDEX   {	ifIndex,
						dhcpRelayServerRoutedPortInterfaceIp}
			::= { dhcpRelayServerRoutedPortInterfaceTable 1 }
			
		DhcpRelayServerRoutedPortInterfaceEntry ::=
            SEQUENCE {
					dhcpRelayServerRoutedPortPortId
						OCTET STRING,
					dhcpRelayServerRoutedPortInterfaceIp
						IpAddress, 
					dhcpRelayServerRoutedPortInterfaceStatus
						TPRowStatus
            }
			
		dhcpRelayServerRoutedPortPortId OBJECT-TYPE
            SYNTAX  OCTET STRING (SIZE (0..16))
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "Displays the port ID."
              ::= { dhcpRelayServerRoutedPortInterfaceEntry 1 }
			
		dhcpRelayServerRoutedPortInterfaceIp OBJECT-TYPE
            SYNTAX  IpAddress
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "DHCP Server IP address."
              ::= { dhcpRelayServerRoutedPortInterfaceEntry 2 }
			  			  
		dhcpRelayServerRoutedPortInterfaceStatus OBJECT-TYPE
            SYNTAX  TPRowStatus
            MAX-ACCESS  read-create
            STATUS  current
            DESCRIPTION
                     " The following values are states:
                     these values may be used as follow:
                     active(1),if the entry is being used.
                     createAndGo(4),not being used.
                     destroy(6),destory the entry."
         	::={ dhcpRelayServerRoutedPortInterfaceEntry 3 }

		--**************
		--Set port channel Interface	
		--**************
		dhcpRelayServerPortChannelInterfaceTable OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpRelayServerPortChannelInterfaceEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
						"The list of DHCP server of port channel interface."
			::= {dhcpRelayServerConfig 4}
			
		dhcpRelayServerPortChannelInterfaceEntry OBJECT-TYPE
			SYNTAX  DhcpRelayServerPortChannelInterfaceEntry
			MAX-ACCESS  not-accessible
			STATUS  current
			DESCRIPTION
                    "DHCP server entries."
			INDEX   {	ifIndex,
						dhcpRelayServerPortChannelInterfaceIp}
			::= { dhcpRelayServerPortChannelInterfaceTable 1 }
			
		DhcpRelayServerPortChannelInterfaceEntry ::=
            SEQUENCE {
					dhcpRelayServerPortChannelPortId
						INTEGER,
					dhcpRelayServerPortChannelInterfaceIp
						IpAddress, 
					dhcpRelayServerPortChannelInterfaceStatus
						TPRowStatus
            }
			
		dhcpRelayServerPortChannelPortId OBJECT-TYPE
            SYNTAX  INTEGER
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "Port channel interface ID."
              ::= { dhcpRelayServerPortChannelInterfaceEntry 1 }
			
		dhcpRelayServerPortChannelInterfaceIp OBJECT-TYPE
            SYNTAX  IpAddress
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "DHCP Server IP address."
              ::= { dhcpRelayServerPortChannelInterfaceEntry 2 }
			  			  
		dhcpRelayServerPortChannelInterfaceStatus OBJECT-TYPE
            SYNTAX  TPRowStatus
            MAX-ACCESS  read-create
            STATUS  current
            DESCRIPTION
                     " The following values are states:
                     these values may be used as follow:
                     active(1),if the entry is being used.
                     createAndGo(4),not being used.
                     destroy(6),destory the entry."
         	::={ dhcpRelayServerPortChannelInterfaceEntry 3 }

		--**************
		--Set VLAN Relay	
		--**************
        
  		dhcpRelayVlanRelayDefaultRelayAgentInterface	OBJECT IDENTIFIER ::= {dhcpRelayVlanRelayServerConfig 1}
        
		defaultRelayAgentInterface OBJECT-TYPE
            SYNTAX  OCTET STRING (SIZE (1..32))
            MAX-ACCESS  read-write
            STATUS  current
            DESCRIPTION
                      "Configure default relay agent interface.
                      Configure interfaces follow format bellow, 
                      VLAN interface: VLAN+VLAN ID, such as VLAN1;
                      loopback interface: lo+loopback ID, such as lo1;
                      port channel interface: po+port channel ID, such as po1;
                      router port interface: port string, such as 1/0/1."
                      
              ::= { dhcpRelayVlanRelayDefaultRelayAgentInterface 1 }
     
		defaultRelayAgentIp OBJECT-TYPE
            SYNTAX  IpAddress
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "The IP address of default relay agent Interface."
              ::= { dhcpRelayVlanRelayDefaultRelayAgentInterface 2 }
              
        dhcpRelayVlanRelayServerTable OBJECT-TYPE
			SYNTAX SEQUENCE OF DhcpRelayVlanRelayServerEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
						"The list of DHCP server of VLAN."
			::= {dhcpRelayVlanRelayServerConfig 2}
			
		dhcpRelayVlanRelayServerEntry OBJECT-TYPE
			SYNTAX  DhcpRelayVlanRelayServerEntry
			MAX-ACCESS  not-accessible
			STATUS  current
			DESCRIPTION
                    "DHCP server entries."
			INDEX   {dhcpRelayVlanRelayServerVlanId,
						dhcpRelayVlanRelayServerIp}
			::= { dhcpRelayVlanRelayServerTable 1 }
			
		DhcpRelayVlanRelayServerEntry ::=
            SEQUENCE {
            		dhcpRelayVlanRelayServerVlanId
            			INTEGER,
					dhcpRelayVlanRelayServerIp
						IpAddress, 
					dhcpRelayVlanRelayServerRowStatus
						TPRowStatus
            }
            
        dhcpRelayVlanRelayServerVlanId OBJECT-TYPE
            SYNTAX  INTEGER
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "VLAN ID."
              ::= { dhcpRelayVlanRelayServerEntry 1 }
			
		dhcpRelayVlanRelayServerIp OBJECT-TYPE
            SYNTAX  IpAddress
            MAX-ACCESS  read-only
            STATUS  current
            DESCRIPTION
                      "DHCP Server IP address."
              ::= { dhcpRelayVlanRelayServerEntry 2 }
			  			  
		dhcpRelayVlanRelayServerRowStatus OBJECT-TYPE
            SYNTAX  TPRowStatus
            MAX-ACCESS  read-create
            STATUS  current
            DESCRIPTION
                     " The following values are states:
                     these values may be used as follow:
                     active(1),if the entry is being used.
                     createAndGo(4),not being used.
                     destroy(6),destory the entry."
         	::={ dhcpRelayVlanRelayServerEntry 3 } 
			
		--**************
	    -- the DHCP Relay option 82 config
		--**************

			dhcpRelayOption82ConfigTable OBJECT-TYPE
				SYNTAX  SEQUENCE OF DHCPRELAYOPTION82CONFIGENTRY
				MAX-ACCESS  not-accessible
				STATUS  current
				DESCRIPTION
					  "A list of DHCP Relay option 82 config entries.
					   Here you can configure the port parameters for the DHCP Relay option 82 feature."
				::= { dhcpRelayOption82Config 1 }
	
		    dhcpRelayOption82ConfigEntry OBJECT-TYPE
				SYNTAX  DHCPRELAYOPTION82CONFIGENTRY
				MAX-ACCESS  not-accessible
				STATUS  current
				DESCRIPTION
					  "An entry contains of the information of DHCP Relay option 82 config."
				INDEX   {ifIndex}
				::= { dhcpRelayOption82ConfigTable 1 }
	  
			DHCPRELAYOPTION82CONFIGENTRY ::=
				SEQUENCE {
							dhcpRelayOption82ConfigPort
									OCTET STRING (SIZE (0..255)), 
							dhcpRelayOption82ConfigSupportStatus
									INTEGER, 
							dhcpRelayOption82ConfigOperationStrategy
									INTEGER,
							dhcpRelayOption82ConfigFormat
									INTEGER,
							dhcpRelayOption82ConfigCircuitCustomization
									INTEGER,
							dhcpRelayOption82ConfigCircuitID
									OCTET STRING (SIZE (0..64)),
							dhcpRelayOption82ConfigRemoteCustomization
									INTEGER,
							dhcpRelayOption82ConfigRemoteID
									OCTET STRING (SIZE (0..64)),
							dhcpRelayOption82ConfigLag
									OCTET STRING (SIZE (1..255))  
				}
	          
			dhcpRelayOption82ConfigPort OBJECT-TYPE
				SYNTAX  OCTET STRING (SIZE (0..255))  
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
					  "Port number"
				::= { dhcpRelayOption82ConfigEntry 1 }
	    
			dhcpRelayOption82ConfigSupportStatus OBJECT-TYPE
				SYNTAX  INTEGER{
					disable(0), 						
					enable(1)			
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
					  "0. disable
					   1. enable
					   Select Enable/Disable the port to support the Option 82 feature. "       
				::= { dhcpRelayOption82ConfigEntry 2 }
			   
			dhcpRelayOption82ConfigOperationStrategy OBJECT-TYPE
				SYNTAX  INTEGER{
					keep(0), 						
					replace(1),
					drop(2)						
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"Select the operation for the Option 82 filed of the DHCP request packets from the Host.
						 0. keep: Indicates to keep the Option 82 field of the packets. 
						 1. replace: Indicates to replace the Option 82 field of the packets with the switch defined one. 
						 2. drop: Indicates to discard the packets including the Option 82 field."
				::= { dhcpRelayOption82ConfigEntry 3 }

			dhcpRelayOption82ConfigFormat OBJECT-TYPE
				SYNTAX  INTEGER{
					normal(0), 						
					private(1)					
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"Select the format for the Option 82 sub-option value field.
						 0. normal: the format of sub-option value field is TLV(type-length-value). 
						 1. replace: the format of sub-option value field is just value."
				::= { dhcpRelayOption82ConfigEntry 4 }
					
			dhcpRelayOption82ConfigCircuitCustomization OBJECT-TYPE   
				SYNTAX  INTEGER{
					disable(0), 						
					enable(1)						
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"0. disable 
						 1. enable
						 Enable/Disable the switch to define the Option 82 circuit id."
				::= { dhcpRelayOption82ConfigEntry 5 }
	                      
			dhcpRelayOption82ConfigCircuitID OBJECT-TYPE            
				SYNTAX  OCTET STRING (SIZE (0..64)) 
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"The sub-option Circuit ID for the customized Option 82.(0-64 characters)"
				::= { dhcpRelayOption82ConfigEntry 6 }
	            
			dhcpRelayOption82ConfigRemoteCustomization OBJECT-TYPE   
				SYNTAX  INTEGER{
					disable(0), 						
					enable(1)						
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"0. disable 
						 1. enable
						 Enable/Disable the switch to define the Option 82 remote id. "
				::= { dhcpRelayOption82ConfigEntry 7 }
							  
			dhcpRelayOption82ConfigRemoteID OBJECT-TYPE            
				SYNTAX  OCTET STRING (SIZE (0..64)) 
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"The sub-option Remote ID for the customized Option 82.(0-64 characters)"
				::= { dhcpRelayOption82ConfigEntry 8 }
	 	                      
			dhcpRelayOption82ConfigLag OBJECT-TYPE
				SYNTAX  OCTET STRING (SIZE (1..255))  
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
						"The LAG to which the port belongs to."
				::= { dhcpRelayOption82ConfigEntry 9 }			
	 END	