-- -----------------------------------------------------------------------------
-- MIB NAME : Voice VLAN Common mib
-- FILE NAME: VoiceVLAN.mib
-- DATE     : 2010/10/12
-- VERSION  : 1.04
-- PURPOSE  : To construct the MIB structure of Voice VLAN
--            for proprietary enterprise
-- -----------------------------------------------------------------------------
-- MODIFICTION HISTORY:
-- -----------------------------------------------------------------------------
-- Version, Date, Author
-- Description:
-- [New Object]
-- [Modification]
-- Notes: (Requested by who and which project)
--
-- Version 1.04, 2010/10/012, Wang Yu
-- Description:
-- [New Object]
-- Add swVoiceVlanPortTagged to configure port voice VLAN tag mode.    
-- [Modification]
-- Requested by SNR-20100813-001(DLINK voice VLAN 2.1).doc 
--
-- Version 1.03, 2010/05/25, Wang Yu
-- Description:
-- [New Object]
-- 1. Add swVoiceVlanlldpMedDeviceTable for supporting voice devices learned through LLDP-MED.
-- Notes: Requested by Wang Yu for project DGS3120. 
--
-- Version 1.02, 2009/10/21, Tom Jin
-- [Modification]
-- 1. Change the SYNTAX of swVoiceVlanId from 'VlanId' to 'VlanIdOrNone'.
-- 2. Modify the description of swVoiceVlanId.
-- Notes: Requested by Tom for project DES3810.
--
-- Version 1.01, 2009/08/17, Tony Tang
-- [Modification]
-- 1. Rename swVoiceVlanTrapState to swVoiceVlanLogState.
-- Notes: Requested by Tony Tang for DES35xx.
--
-- Version 1.00, 2008/10/7, Tony Tang
-- This is the first formal version for universal MIB definition.
-- -----------------------------------------------------------------------------  

VOICE-VLAN-MIB DEFINITIONS ::= BEGIN

	IMPORTS
	    MODULE-IDENTITY,OBJECT-TYPE,Integer32
	        FROM SNMPv2-SMI
	    DateAndTime, MacAddress, RowStatus, DisplayString, TimeInterval, TruthValue
	        FROM SNMPv2-TC
	    dlink-common-mgmt	
	        FROM DLINK-ID-REC-MIB
	    PortList,VlanIdOrNone
	    	FROM Q-BRIDGE-MIB
     	LldpChassisIdSubtype, LldpChassisId, LldpPortIdSubtype, LldpPortId
        	FROM LLDP-MIB;


	swVoiceVLANMIB MODULE-IDENTITY
	    LAST-UPDATED "201010120000Z"
	    ORGANIZATION "D-Link Corp."
	    CONTACT-INFO
	        "http://support.dlink.com"
	    DESCRIPTION
	        "The Voice VLAN module MIB for the proprietary enterprise."
	    ::= { dlink-common-mgmt 74}
	  

		swVoiceVlanCtrl 		OBJECT IDENTIFIER ::= { swVoiceVLANMIB 1 }
		swVoiceVlanInfo 		OBJECT IDENTIFIER ::= { swVoiceVLANMIB 2 }
		swVoiceVlanMgmt 		OBJECT IDENTIFIER ::= { swVoiceVLANMIB 3 }
		   
-- -----------------------------------------------------------------------------
-- swVoiceVlanCtrl
-- -----------------------------------------------------------------------------    
		swVoiceVlanId OBJECT-TYPE
        	SYNTAX  VlanIdOrNone
        	MAX-ACCESS  read-write
        	STATUS  current
        	DESCRIPTION
            		"The VLAN ID of the voice VLAN. The voice VLAN is used to assign 
					VLANs for untagged voice packets.
					The value zero is for display only and not configurable, which 
					means there is no voice VLAN on the switch."  		
        	::= { swVoiceVlanCtrl 1 }
        	
		swVoivceVlanGlobalState OBJECT-TYPE
	        SYNTAX  INTEGER{
	                enabled(1),
	                disabled(2)
	                }
	        MAX-ACCESS  read-write
	        STATUS  current
	        DESCRIPTION
	           	 "This object indicates the global status of the voice VLAN. If we enable the voice VLAN,
	           	 we should set the VID first."
	        ::= { swVoiceVlanCtrl 2 }
    
		swVoiceVlanPriority OBJECT-TYPE
        	SYNTAX  INTEGER(0..7)
        	MAX-ACCESS  read-write
        	STATUS  current
        	DESCRIPTION
            		"The priority for the voice VLAN, which is used to distinguish
            		 the QoS of the voice traffic from data traffic."
        	::= { swVoiceVlanCtrl 3 }
        
		swVoiceVlanAgingTime OBJECT-TYPE
        	SYNTAX  INTEGER(1..65535)
        	MAX-ACCESS  read-write
        	STATUS  current
        	DESCRIPTION
            		"The aging time for the voice VLAN, which is used to remove a 
            		port from a voice VLAN when the working mode is auto."
        	::= { swVoiceVlanCtrl 4 }
        
		swVoiceVlanLogState OBJECT-TYPE
        	SYNTAX  INTEGER
        	{
                 	enabled(1),
                	disabled(2)
                }
        	MAX-ACCESS  read-write
        	STATUS  current
        	DESCRIPTION
            		" This object indicates the voice VLAN log state."
        	::= { swVoiceVlanCtrl 5 }
        	         	
-- -----------------------------------------------------------------------------
-- swVoiceVlanInfo
-- -----------------------------------------------------------------------------
		swVoiceVlanMemberPortlist OBJECT-TYPE
	    	SYNTAX      PortList
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The voice VLAN's member ports."
	    	::= { swVoiceVlanInfo 1 }	 	
	    
		swVoiceVlanDynamicPortlist OBJECT-TYPE
	    	SYNTAX      PortList
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The voice VLAN's member ports that dynamically joined the voice VLAN from a learned voice device."
	    	::= { swVoiceVlanInfo 2 }
 -- -----------------------------------------------------------------------------  	
	
		swVoiceVlanDeviceTable OBJECT-TYPE
			SYNTAX  SEQUENCE OF SwVoiceVlanDeviceEntry
			MAX-ACCESS not-accessible
	        STATUS current
	        DESCRIPTION
	                   "The management information of a voice VLAN member ports device."
	
                ::= { swVoiceVlanInfo 3 }

		swVoiceVlanDeviceEntry OBJECT-TYPE
		    SYNTAX SwVoiceVlanDeviceEntry
		    MAX-ACCESS not-accessible
		    STATUS current
		    DESCRIPTION
		        "The information from the voice device connected to the switch."
		    INDEX { swVoiceVlanPort, swVoiceVlanDeviceAddr}
	
		    ::= { swVoiceVlanDeviceTable 1 }

		SwVoiceVlanDeviceEntry ::=
		    SEQUENCE {
		    	swVoiceVlanPort
				 INTEGER,
		        swVoiceVlanDeviceAddr
		            	MacAddress,
		        swVoiceVlanDeviceStartTime
		            	DateAndTime,     				
			swVoiceVlanDeviceActiveTime
				DateAndTime
		    }
         	
		 swVoiceVlanPort OBJECT-TYPE
			SYNTAX      INTEGER
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The voice device's connected port."
	    	::= { swVoiceVlanDeviceEntry 1 }

         swVoiceVlanDeviceAddr OBJECT-TYPE
               	SYNTAX      MacAddress
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The voice device MAC address."
	    	::= { swVoiceVlanDeviceEntry 2 }
       	 swVoiceVlanDeviceStartTime OBJECT-TYPE
               	SYNTAX      DateAndTime
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The time the voice device first connected to the switch."
	    	::= { swVoiceVlanDeviceEntry 3 }

         swVoiceVlanDeviceActiveTime OBJECT-TYPE
               	SYNTAX      DateAndTime
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The active time of the voice device."
	    	::= { swVoiceVlanDeviceEntry 4}	
-- -----------------------------------------------------------------------------  
-- Voice Device learned through LLDP-MED      
-- -----------------------------------------------------------------------------  	
	
         swVoiceVlanlldpMedDeviceTable OBJECT-TYPE
	 	SYNTAX  SEQUENCE OF SwVoiceVlanlldpMedDeviceEntry
		MAX-ACCESS not-accessible
	        STATUS current
	        DESCRIPTION
	              "This table contains the voice devices that are learned through LLDP-MED."
                ::= { swVoiceVlanInfo 4 }

	swVoiceVlanlldpMedDeviceEntry OBJECT-TYPE
		SYNTAX SwVoiceVlanlldpMedDeviceEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
		        "Information about the voice device learned through LLDP-MED."
		INDEX {swVoiceVlanlldpMedDeviceIndex}
		::= { swVoiceVlanlldpMedDeviceTable 1 }

	SwVoiceVlanlldpMedDeviceEntry ::=
		SEQUENCE {
		    	swVoiceVlanlldpMedDeviceIndex
				INTEGER,
			swVoiceVlanlldpMedDeviceLocalPort
				INTEGER,
		        swVoiceVlanlldpMedDeviceChassisIdSubtype
				LldpChassisIdSubtype,
		        swVoiceVlanlldpMedDeviceChassisId
				LldpChassisId,
		        swVoiceVlanlldpMedDevicePortIdSubtype
		        	LldpPortIdSubtype,
		        swVoiceVlanlldpMedDevicePortId
		        	LldpPortId,				
			swVoiceVlanlldpMedDeviceCreateTime
				DateAndTime,
			swVoiceVlanlldpMedDeviceRemainTime
				TimeInterval
		    }
         	
	swVoiceVlanlldpMedDeviceIndex OBJECT-TYPE
		SYNTAX      INTEGER
	    	MAX-ACCESS  not-accessible
	    	STATUS      current
	    	DESCRIPTION
	        	"The local index used to identify the voice device."
	    	::= { swVoiceVlanlldpMedDeviceEntry 1 }
 
 	swVoiceVlanlldpMedDeviceLocalPort OBJECT-TYPE
		SYNTAX      INTEGER
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"This object indicates the local port number on which the voice device is learned."
	    	::= { swVoiceVlanlldpMedDeviceEntry 2 }

         swVoiceVlanlldpMedDeviceChassisIdSubtype OBJECT-TYPE
		SYNTAX      LldpChassisIdSubtype
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The type of encoding used to identify the chassis associated with the voice device."  
    		REFERENCE 
            	"IEEE Std 802.1AB-2005 9.5.2.2"
	    	::= { swVoiceVlanlldpMedDeviceEntry 3 }   
	    	
       	 swVoiceVlanlldpMedDeviceChassisId OBJECT-TYPE
            	SYNTAX      LldpChassisId
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The string value used to identify the chassis component associated with the voice device."
	     	 REFERENCE 
            	"IEEE Std 802.1AB-2005 9.5.2.3"
 	    	::= { swVoiceVlanlldpMedDeviceEntry 4 }
   
         swVoiceVlanlldpMedDevicePortIdSubtype OBJECT-TYPE
	 	SYNTAX      LldpPortIdSubtype
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The type of port identifier encoding used to identify the port component associated with the voice device " 
    		REFERENCE 
            	"IEEE Std 802.1AB-2005 9.5.3.2"
	    	::= { swVoiceVlanlldpMedDeviceEntry 5 }   
	    	
       	 swVoiceVlanlldpMedDevicePortId OBJECT-TYPE
            	SYNTAX      LldpPortId
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The string value used to identify the port component associated with the voice device."  
    		REFERENCE 
            	"IEEE Std 802.1AB-2005 9.5.3.3"
	    	::= { swVoiceVlanlldpMedDeviceEntry 6 }

         swVoiceVlanlldpMedDeviceCreateTime OBJECT-TYPE
            	SYNTAX      DateAndTime
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The creation time of the voice device."
	    	::= { swVoiceVlanlldpMedDeviceEntry 7}	
	    	
         swVoiceVlanlldpMedDeviceRemainTime OBJECT-TYPE
            SYNTAX      TimeInterval
	    	MAX-ACCESS  read-only
	    	STATUS      current
	    	DESCRIPTION
	        	"The Time To Live remaining for the voice device. 
	        	If the Remain Time decreases to 0, the voice device will be deleted."
	    	::= { swVoiceVlanlldpMedDeviceEntry 8}		    
	
-- -----------------------------------------------------------------------------
-- swVoiceVlanMgmt
-- -----------------------------------------------------------------------------

		swVoiceVlanOuiTable OBJECT-TYPE
		    SYNTAX  SEQUENCE OF SwVoiceVlanOuiEntry
		    MAX-ACCESS not-accessible
		    STATUS current
		    DESCRIPTION
		        "The management information of the voice VLAN OUI." 
		        
		    ::= { swVoiceVlanMgmt 1 }
	
		swVoiceVlanOuiEntry OBJECT-TYPE
		    SYNTAX SwVoiceVlanOuiEntry
		    MAX-ACCESS not-accessible
		    STATUS current
		    DESCRIPTION
		        "The management information of the OUI of a voice VLAN domain.
		        An OUI contains information about the type of IP phone that can make use of the OUI
		        to check the voice traffic."
		    INDEX { swVoiceVlanOuiAddr}
	
		    ::= { swVoiceVlanOuiTable 1 }
	
		SwVoiceVlanOuiEntry ::=
		    SEQUENCE {
		    	swVoiceVlanOuiAddr
				 		MacAddress,
		        swVoiceVlanOuiMask
		            	MacAddress,
		        swVoiceVlanOuiDes
		            	DisplayString,     				
				swVoiceVlanOuiRowStatus
						RowStatus
		    }

    	swVoiceVlanOuiAddr OBJECT-TYPE
        	SYNTAX  MacAddress
        	MAX-ACCESS  read-only
        	STATUS  current
        	DESCRIPTION
            		"The address of the OUI referring to this SwVoiceVlanOuiEntry."
        	::= { swVoiceVlanOuiEntry 1 }
	    
        swVoiceVlanOuiMask OBJECT-TYPE
	    	SYNTAX      MacAddress
	    	MAX-ACCESS  read-create
	    	STATUS      current
	    	DESCRIPTION
	        	"The OUI mask indicates the valid bit of the OUI address."
	    	::= { swVoiceVlanOuiEntry 2 }	
	    	
		swVoiceVlanOuiDes OBJECT-TYPE
		    	SYNTAX      DisplayString
		    	MAX-ACCESS  read-create
		    	STATUS      current
		    	DESCRIPTION
		        	"The description of the OUI."
		    	::= { swVoiceVlanOuiEntry 3 }
	
		swVoiceVlanOuiRowStatus	OBJECT-TYPE
		    	SYNTAX      RowStatus
		    	MAX-ACCESS  read-create
		    	STATUS      current
		    	DESCRIPTION
		        	"This object indicates the status of this entry."
		    	::= { swVoiceVlanOuiEntry 4 }
	    	
-- -----------------------------------------------------------------------------	
		swVoiceVlanPortTable OBJECT-TYPE
		    SYNTAX  SEQUENCE OF SwVoiceVlanPortEntry
		    MAX-ACCESS not-accessible
		    STATUS current
		    DESCRIPTION
		        "The management of the voice VLAN function on all bridge ports. Some ports are not
		        member ports of a voice VLAN, but they may be added in auto mode. Therefore, this function enables both current voice VLAN member ports and non-VLAN member ports to be managed." 
		        
		    ::= { swVoiceVlanMgmt 2 }
	
		swVoiceVlanPortEntry OBJECT-TYPE
		    SYNTAX SwVoiceVlanPortEntry
		    MAX-ACCESS not-accessible
		    STATUS current
		    DESCRIPTION
		        "The management of the voice VLAN function on ports"
		    INDEX { swVoiceVlanPortNumber}
	
		    ::= { swVoiceVlanPortTable 1 }
	
		SwVoiceVlanPortEntry ::=
		    SEQUENCE {
		    	swVoiceVlanPortNumber
				 INTEGER,
		        swVoiceVlanPortState
		            	INTEGER,
		        swVoiceVlanPortMode
		            	INTEGER,
		        swVoiceVlanPortTagged 
		        		TruthValue			
		    }
		    
		swVoiceVlanPortNumber OBJECT-TYPE
		    	SYNTAX      INTEGER
		    	MAX-ACCESS  read-only
		    	STATUS      current
		    	DESCRIPTION
		        	"Bridge ports can be configured with voice VLAN function."
		    	::= { swVoiceVlanPortEntry 1 }	
		    	
		swVoiceVlanPortState OBJECT-TYPE
		    	SYNTAX     INTEGER
		    	{
	                 	enabled(1),
	                	disabled(2)
	                } 
		    	MAX-ACCESS  read-write
		    	STATUS      current
		    	DESCRIPTION
		        	"The port state here indicates whether the port supports the voice VLAN function. We can enable/disable the voice VLAN function on the port."
		    	::= { swVoiceVlanPortEntry 2 }
	
		swVoiceVlanPortMode OBJECT-TYPE
		    	SYNTAX     INTEGER
		       {
		    		auto(1),
		    		manual(2)
		       }
		       MAX-ACCESS  read-write
		    	STATUS      current
		    	DESCRIPTION
		        	"Port mode just indicates which mode of voice VLAN function is supported by port. 
		        	If in auto mode, the port can be added in to voice VLAN automatically when it connects to an IP  phone. 
		        	Otherwise, the port is just added manually."
		    	::= { swVoiceVlanPortEntry 3 }

		swVoiceVlanPortTagged OBJECT-TYPE
		    	SYNTAX     TruthValue
			MAX-ACCESS  read-write
		    	STATUS      current
		    	DESCRIPTION
		        	"This object used to configure port voice VLAN tag mode.
		        	If the object is true (1), and the port mode is auto, 
		        	when learned a new voice device, the port will join to voice VLAN as tagged member.
		        	Otherwise, the port will join to voice VLAN as untagged member."
		        DEFVAL   { false }
		    	::= { swVoiceVlanPortEntry 4 }

END