  TPLINK-ARP-INSPECTION-MIB DEFINITIONS ::= BEGIN

       IMPORTS
       		MODULE-IDENTITY, OBJECT-TYPE, Counter64
        	  	         	FROM SNMPv2-SMI
			ifIndex
				  FROM  RFC1213-MIB				
            tplinkMgmt
					FROM TPLINK-MIB;
         

		tplinkArpInspectionMIB MODULE-IDENTITY
		LAST-UPDATED    "201212130930Z"
		ORGANIZATION    "TPLINK"
		CONTACT-INFO    "www.tplink.com"
		DESCRIPTION	    "Private MIB for Arp Inspection configuration."
		REVISION        "201212130930Z"
		DESCRIPTION
				"Initial version of this MIB module."
		::= { tplinkMgmt 28 }	
		
		tplinkArpInspectionMIBObjects 		OBJECT IDENTIFIER ::= {tplinkArpInspectionMIB 1}
		tplinkArpInspectionNotifications 	OBJECT IDENTIFIER ::= {tplinkArpInspectionMIB 2}
		
		arpInspectionGlobalConfig  	    OBJECT IDENTIFIER ::= {tplinkArpInspectionMIBObjects 1}
		arpInspectionVlanConfig  	    OBJECT IDENTIFIER ::= {tplinkArpInspectionMIBObjects 2}
		arpInspectionPortConfig  	    OBJECT IDENTIFIER ::= {tplinkArpInspectionMIBObjects 3}
		arpInspectionStatisticConfig    OBJECT IDENTIFIER ::= {tplinkArpInspectionMIBObjects 4}
		
        -- the arp inspection global config
    		arpInspectionGlobalEnable OBJECT-TYPE
	          SYNTAX  INTEGER{
	      		disable(0), 						
	      		enable(1)			
	      		}
	            MAX-ACCESS  read-write
	            STATUS  current
	            DESCRIPTION
	                    "0. disable
	                     1. enable
	                     Enable/Disable the ARP Inspection function."
	            ::= { arpInspectionGlobalConfig 1 }
				
    		arpInspectionVerifySmac OBJECT-TYPE
	          SYNTAX  INTEGER{
	      		disable(0), 						
	      		enable(1)			
	      		}
	            MAX-ACCESS  read-write
	            STATUS  current
	            DESCRIPTION
	                    "0. disable
	                     1. enable
	                     Enable/Disable the ARP Inspection verify source mac function. Drop ARP packets which ethernet source MAC doesn't match sender MAC."
	            ::= { arpInspectionGlobalConfig 2 }	

    		arpInspectionVerifyDmac OBJECT-TYPE
	          SYNTAX  INTEGER{
	      		disable(0), 						
	      		enable(1)			
	      		}
	            MAX-ACCESS  read-write
	            STATUS  current
	            DESCRIPTION
	                    "0. disable
	                     1. enable
	                     Enable/Disable the ARP Inspection verify destination mac function. Drop ARP responsed packets which ethernet destination MAC doesn't match target MAC."
	            ::= { arpInspectionGlobalConfig 3 }

    		arpInspectionVerifyIp OBJECT-TYPE
	          SYNTAX  INTEGER{
	      		disable(0), 						
	      		enable(1)			
	      		}
	            MAX-ACCESS  read-write
	            STATUS  current
	            DESCRIPTION
	                    "0. disable
	                     1. enable
	                     Enable/Disable the ARP Inspection verify IP function. Drop ARP responsed packets which IP is illegal."
	            ::= { arpInspectionGlobalConfig 4 }

        -- the arp inspection vlan config				
			arpInspectionVlanConfigTable OBJECT-TYPE
				SYNTAX  	SEQUENCE OF ARPINSPECTIONVLANCONFIGENTRY
				MAX-ACCESS  not-accessible
				STATUS  	current
				DESCRIPTION
						"Here you can view and modify the ARP Inspection VLAN config table."
			::= { arpInspectionVlanConfig 1 }

			arpInspectionVlanConfigEntry OBJECT-TYPE
				SYNTAX  	ARPINSPECTIONVLANCONFIGENTRY
				MAX-ACCESS  not-accessible
				STATUS  	current
				DESCRIPTION
						"An entry contains of the ARP Inspection function enable status and logging status information of a VLAN."
				INDEX   { arpInspectionVlanId }
			::= { arpInspectionVlanConfigTable 1 }

			ARPINSPECTIONVLANCONFIGENTRY ::=
				SEQUENCE {
					arpInspectionVlanId
							INTEGER(1..4094),
					arpInspectionVlanStatus
							INTEGER,
					arpInspectionVlanLogStatus
							INTEGER		
				}

			arpInspectionVlanId OBJECT-TYPE
				SYNTAX 	 	INTEGER(1..4094)
				MAX-ACCESS  read-only
				STATUS  	current
				DESCRIPTION
						"Enter the ID number of VLAN, 1-4094."
			::= { arpInspectionVlanConfigEntry 1 }
			
			arpInspectionVlanStatus OBJECT-TYPE
				SYNTAX  INTEGER{
					disable(0), 						
					enable(1)						
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
					"0. disable 
					 1. enable
					 Enable or disable ARP Inspection function in specified VLAN. "
			::= { arpInspectionVlanConfigEntry 2 }

			arpInspectionVlanLogStatus OBJECT-TYPE
				SYNTAX  INTEGER{
					disable(0), 						
					enable(1)						
				}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
					"0. disable 
					 1. enable
					 Enable or disable ARP Inspection logging function in specified VLAN. "
			::= { arpInspectionVlanConfigEntry 3 }

        -- the arp inspection port config	
			arpInspectionPortConfigTable OBJECT-TYPE
				SYNTAX  SEQUENCE OF ARPINSPECTIONPORTCONFIGENTRY
				MAX-ACCESS  not-accessible
				STATUS  current
				DESCRIPTION
						"A list of ARP Inpection port config entries."
				::= { arpInspectionPortConfig 1 }
			 
			arpInspectionPortConfigEntry OBJECT-TYPE
				SYNTAX  ARPINSPECTIONPORTCONFIGENTRY
				MAX-ACCESS  not-accessible
				STATUS  current
				DESCRIPTION
						"An entry contains of the information of ARP Inspection port config."
				INDEX   { ifIndex }
				::= { arpInspectionPortConfigTable 1 }
		
			ARPINSPECTIONPORTCONFIGENTRY ::=
				SEQUENCE {
									arpInspectionPortConfigPort
											OCTET STRING,
									arpInspectionPortConfigTrust
											INTEGER,
									arpInspectionPortConfigLimitRate
											INTEGER,
									arpInspectionPortConfigCurrentSpeed
											INTEGER,
									arpInspectionPortConfigBurstInterval
											INTEGER,
									arpInspectionPortConfigStatus
											INTEGER,		
									arpInspectionPortConfigRecover
											INTEGER,
									arpInspectionPortConfigPortLag
											OCTET STRING
				}
				
			arpInspectionPortConfigPort OBJECT-TYPE
				SYNTAX  OCTET STRING
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
						"port number"
				::= { arpInspectionPortConfigEntry 1 }
			
			arpInspectionPortConfigTrust OBJECT-TYPE
				SYNTAX  INTEGER{
					enable(1),
					disable(0)					
					}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"0. disable
						 1. enable
						 Select Enable/Disable to specify the interface as a trust port. "
				::= { arpInspectionPortConfigEntry 2 }
		   
		   arpInspectionPortConfigLimitRate OBJECT-TYPE
				SYNTAX  INTEGER  
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"specify the maximum amount of the received ARP packets per second."
				::= { arpInspectionPortConfigEntry 3 }
				
		   arpInspectionPortConfigCurrentSpeed OBJECT-TYPE
				SYNTAX  INTEGER  
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
						"Display the current speed of ARP packet."
				::= { arpInspectionPortConfigEntry 4 }
				
			arpInspectionPortConfigBurstInterval OBJECT-TYPE
				SYNTAX  INTEGER  
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"specify the maximum interval time for rate exceed."
				::= { arpInspectionPortConfigEntry 5 } 
	  
		   arpInspectionPortConfigStatus OBJECT-TYPE
				SYNTAX  INTEGER{
					normal(0),
					down(1)					
					}
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
						"the state of port, when the rate exceed and continued over interval time, the port will be blocked."
				::= { arpInspectionPortConfigEntry 6}

		   arpInspectionPortConfigRecover OBJECT-TYPE
				SYNTAX  INTEGER{
					none(0),
					recover(1)					
					}
				MAX-ACCESS  read-write
				STATUS  current
				DESCRIPTION
						"recover the port which is blocked."
				::= { arpInspectionPortConfigEntry 7 } 
				
		  arpInspectionPortConfigPortLag OBJECT-TYPE
				SYNTAX  OCTET STRING  
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
						"the lag the port belong to"
				::= { arpInspectionPortConfigEntry 8 }
			
        -- the arp inspection statistic config
		    arpInspectionStatReset OBJECT-TYPE
				  SYNTAX  INTEGER{
					notReset(0), 						
					reset(1)			
					}
					MAX-ACCESS  read-write
					STATUS  current
					DESCRIPTION
							"0. notReset
							 1. reset
							 clear the statistics"
					::= { arpInspectionStatisticConfig 1 }
					
			arpInspectionStatTable OBJECT-TYPE
				SYNTAX  	SEQUENCE OF ARPINSPECTIONSTATENTRY
				MAX-ACCESS  not-accessible
				STATUS  	current
				DESCRIPTION
						"Here you can view the ARP Inspection statistics."
			::= { arpInspectionStatisticConfig 2 }

			arpInspectionStatEntry OBJECT-TYPE
				SYNTAX  	ARPINSPECTIONSTATENTRY
				MAX-ACCESS  not-accessible
				STATUS  	current
				DESCRIPTION
						"An entry contains of the ARP Inspection packets stastics information of a VLAN."
				INDEX   { arpInspectionStatVlanId }
			::= { arpInspectionStatTable 1 }

			ARPINSPECTIONSTATENTRY ::=
				SEQUENCE {
					arpInspectionStatVlanId
							INTEGER(1..4094),
					arpInspectionStatForward
							Counter64,
					arpInspectionStatDrop
							Counter64		
				}

			arpInspectionStatVlanId OBJECT-TYPE
				SYNTAX 	 	INTEGER(1..4094)
				MAX-ACCESS  read-only
				STATUS  	current
				DESCRIPTION
						"Enter the ID number of VLAN, 1-4094."
			::= { arpInspectionStatEntry 1 }
			
			arpInspectionStatForward OBJECT-TYPE
				SYNTAX  Counter64
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
					"Display ARP packets number forwarded by the vlan. "
			::= { arpInspectionStatEntry 2 }

			arpInspectionStatDrop OBJECT-TYPE
				SYNTAX  Counter64
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
					"Display ARP packets number drop by the vlan. "
			::= { arpInspectionStatEntry 3 }
			
        -- the Arp Inspection trap
		    arpInspectionRxIllegalArpPacket NOTIFICATION-TYPE 
				STATUS          current
				DESCRIPTION 
					"A notification is sent when ARP Inspection received illegal ARP packets."
				::= { tplinkArpInspectionNotifications 1}				
 END