-- -----------------------------------------------------------------------------
-- MIB NAME : Surveillance VLAN Common mib
-- FILE NAME: SurveillanceVLAN.mib
-- DATE	 : 2011/09/19
-- VERSION  : 1.00
-- PURPOSE  : To construct the MIB structure of surveillance VLAN
--			for proprietary enterprise
-- -----------------------------------------------------------------------------
-- MODIFICTION HISTORY:
-- -----------------------------------------------------------------------------
-- Version 1.00, 2011/09/19, Robert Wang
-- This is the first formal version for universal MIB definition.
-- -----------------------------------------------------------------------------  

SURVEILLANCE-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;

	swSurveillanceVLANMIB MODULE-IDENTITY
		LAST-UPDATED "201109190000Z"
		ORGANIZATION "D-Link Corp."
		CONTACT-INFO
			"http://support.dlink.com"
		DESCRIPTION
			"The surveillance VLAN module MIB for the proprietary enterprise."
		::= { dlink-common-mgmt 102}
        
	swSurveillanceVLANNotifications	OBJECT IDENTIFIER ::= { swSurveillanceVLANMIB 0 }
	swSurveillanceVLANMIBObjects	OBJECT IDENTIFIER ::= { swSurveillanceVLANMIB 1 }
	swSurveillanceVlanCtrl		OBJECT IDENTIFIER ::= { swSurveillanceVLANMIBObjects 1 }
	swSurveillanceVlanInfo		OBJECT IDENTIFIER ::= { swSurveillanceVLANMIBObjects 2 }
	swSurveillanceVlanMgmt		OBJECT IDENTIFIER ::= { swSurveillanceVLANMIBObjects 3 }
		   
-- -----------------------------------------------------------------------------
-- swSurveillanceVlanCtrl
-- -----------------------------------------------------------------------------	
	swSurveillanceVlanId OBJECT-TYPE
		SYNTAX  VlanIdOrNone
		MAX-ACCESS  read-write
		STATUS  current
		DESCRIPTION
			"The VLAN ID of the surveillance VLAN. The surveillance VLAN is used to assign 
			VLANs for untagged video packets.
			The value zero is for display only and not configurable, which 
			means there is no surveillance VLAN on the switch."  		
		::= { swSurveillanceVlanCtrl 1 }
	
	swSurveillanceVlanGlobalState OBJECT-TYPE
		SYNTAX  INTEGER
		{
			enabled(1),
			disabled(2)
		}
		MAX-ACCESS  read-write
		STATUS  current
		DESCRIPTION
		   	"This object indicates the global status of the surveillance VLAN. If we 
		   	enable the surveillance VLAN, we should set the VID first."
		::= { swSurveillanceVlanCtrl 2 }

	swSurveillanceVlanPriority OBJECT-TYPE
		SYNTAX  INTEGER(0..7)
		MAX-ACCESS  read-write
		STATUS  current
		DESCRIPTION
			"The priority for the surveillance VLAN, which is used to distinguish 
			the QoS of the surveillance traffic from data traffic."
		::= { swSurveillanceVlanCtrl 3 }

	swSurveillanceVlanAgingTime OBJECT-TYPE
		SYNTAX  INTEGER(1..65535)
		MAX-ACCESS  read-write
		STATUS  current
		DESCRIPTION
			"The aging time for the surveillance VLAN, which is used to remove a 
			port from a surveillance VLAN when the working mode is auto."
		::= { swSurveillanceVlanCtrl 4 }

	swSurveillanceVlanLogState OBJECT-TYPE
		SYNTAX  INTEGER
		{
			enabled(1),
			disabled(2)
		}
		MAX-ACCESS  read-write
		STATUS  current
		DESCRIPTION
			" This object indicates the surveillance VLAN log state."
		::= { swSurveillanceVlanCtrl 5 }
					 	
-- -----------------------------------------------------------------------------
-- swSurveillanceVlanInfo
-- -----------------------------------------------------------------------------
	swSurveillanceVlanMemberPortlist OBJECT-TYPE
		SYNTAX	  PortList
		MAX-ACCESS  read-only
		STATUS	  current
		DESCRIPTION
			"The surveillance VLAN's member ports."
		::= { swSurveillanceVlanInfo 1 }	 	
	
	swSurveillanceVlanDynamicPortlist OBJECT-TYPE
		SYNTAX	  PortList
		MAX-ACCESS  read-only
		STATUS	  current
		DESCRIPTION
			"The surveillance VLAN's member ports that dynamically joined the surveillance
			 VLAN from a learned surveillance device."
		::= { swSurveillanceVlanInfo 2 }	

	swSurveillanceVlanDeviceTable OBJECT-TYPE
		SYNTAX  SEQUENCE OF SwSurveillanceVlanDeviceEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
			 "The management information of a surveillance VLAN member ports device."
		::= { swSurveillanceVlanInfo 3 }

		swSurveillanceVlanDeviceEntry OBJECT-TYPE
			SYNTAX SwSurveillanceVlanDeviceEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The information from the surveillance device connected to the switch."
			INDEX { swSurveillanceVlanDevPort, swSurveillanceVlanDevAddr}
	
			::= { swSurveillanceVlanDeviceTable 1 }

		SwSurveillanceVlanDeviceEntry ::=
			SEQUENCE 
			{
				swSurveillanceVlanDevPort 
						INTEGER,
				swSurveillanceVlanDevAddr
						MacAddress,
				swSurveillanceVlanDevComponentType
						INTEGER,				
				swSurveillanceVlanDevStartTime
						DateAndTime
			}
		 	
				swSurveillanceVlanDevPort OBJECT-TYPE
					SYNTAX	INTEGER
					MAX-ACCESS	read-only
					STATUS	current
					DESCRIPTION
						"The surveillance device's connected port."
					::= { swSurveillanceVlanDeviceEntry 1 }
		
				swSurveillanceVlanDevAddr OBJECT-TYPE
					SYNTAX	  MacAddress
					MAX-ACCESS  read-only
					STATUS	  current
					DESCRIPTION
						"The surveillance device's MAC address."
					::= { swSurveillanceVlanDeviceEntry 2 }          
				
				swSurveillanceVlanDevComponentType OBJECT-TYPE
					SYNTAX	  INTEGER
					{
					 	vms(1),
						vms-client(2),
						video-encoder(3),
						network-storage(4),
						other(5)
					} 
					MAX-ACCESS  read-create
					STATUS	  current
					DESCRIPTION
						"The surveillance device's component type."
					::= { swSurveillanceVlanDeviceEntry 3 }

				swSurveillanceVlanDevStartTime OBJECT-TYPE
					SYNTAX	  DateAndTime
					MAX-ACCESS  read-only
					STATUS	  current
					DESCRIPTION
						"The time the surveillance device first connected to the switch."
					::= { swSurveillanceVlanDeviceEntry 4 }
		
-- -----------------------------------------------------------------------------
-- swSurveillanceVlanMgmt
-- -----------------------------------------------------------------------------

	swSurveillanceVlanOuiTable OBJECT-TYPE
		SYNTAX  SEQUENCE OF SwSurveillanceVlanOuiEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
			"The management information of the surveillance VLAN OUI." 
		::= { swSurveillanceVlanMgmt 1 }

		swSurveillanceVlanOuiEntry OBJECT-TYPE
			SYNTAX SwSurveillanceVlanOuiEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The management information of the OUI of a surveillance VLAN domain.
				An OUI contains information about the type of IP phone that can make use of the OUI
				to check the surveillance traffic."
			INDEX { swSurveillanceVlanOuiAddr}
			::= { swSurveillanceVlanOuiTable 1 }
	
		SwSurveillanceVlanOuiEntry ::=
			SEQUENCE {
				swSurveillanceVlanOuiAddr
					MacAddress,
				swSurveillanceVlanOuiMask
					MacAddress,
				swSurveillanceVlanOuiComponentType
					INTEGER,
				swSurveillanceVlanOuiDes
					DisplayString,	 				
				swSurveillanceVlanOuiRowStatus
					RowStatus
			}

			swSurveillanceVlanOuiAddr OBJECT-TYPE
				SYNTAX  MacAddress
				MAX-ACCESS  read-only
				STATUS  current
				DESCRIPTION
					"The address of the OUI referring to this swSurveillanceVlanOuiEntry."
				::= { swSurveillanceVlanOuiEntry 1 }
			
			swSurveillanceVlanOuiMask OBJECT-TYPE
				SYNTAX	  MacAddress
				MAX-ACCESS  read-create
				STATUS	  current
				DESCRIPTION
					"The OUI mask indicates the valid bit of the OUI address."
				::= { swSurveillanceVlanOuiEntry 2 }	

			swSurveillanceVlanOuiComponentType OBJECT-TYPE
				SYNTAX	  INTEGER
				{
				 	vms(1),
					vms-client(2),
					video-encoder(3),
					network-storage(4),
					other(5)
				} 
				MAX-ACCESS  read-create
				STATUS	  current
				DESCRIPTION
					"The Component type of the OUI."
				::= { swSurveillanceVlanOuiEntry 3 }
 	
			swSurveillanceVlanOuiDes OBJECT-TYPE
				SYNTAX	  DisplayString
				MAX-ACCESS  read-create
				STATUS	  current
				DESCRIPTION
					"The description of the OUI.(0-32)"
				::= { swSurveillanceVlanOuiEntry 4 }
	
			swSurveillanceVlanOuiRowStatus	OBJECT-TYPE
				SYNTAX	  RowStatus
				MAX-ACCESS  read-create
				STATUS	  current
				DESCRIPTION
					"This object indicates the status of this entry."
				::= { swSurveillanceVlanOuiEntry 5 }
		
	swSurveillanceVlanPortTable OBJECT-TYPE
		SYNTAX  SEQUENCE OF SwSurveillanceVlanPortEntry
		MAX-ACCESS not-accessible
		STATUS current
		DESCRIPTION
			"The management of the surveillance VLAN function on all bridge ports. Some ports 
			are not member ports of a surveillance VLAN, but they may be added in auto mode. 
			Therefore, this function enables both current surveillance VLAN member ports and 
			non-VLAN member ports to be managed." 
			
		::= { swSurveillanceVlanMgmt 2 }

		swSurveillanceVlanPortEntry OBJECT-TYPE
			SYNTAX SwSurveillanceVlanPortEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The management of the surveillance VLAN function on ports"
			INDEX { swSurveillanceVlanPortNumber}
	
			::= { swSurveillanceVlanPortTable 1 }

		SwSurveillanceVlanPortEntry ::=
			SEQUENCE 
			{
				swSurveillanceVlanPortNumber
				INTEGER,
				swSurveillanceVlanPortState
				INTEGER			
			}
		
			swSurveillanceVlanPortNumber OBJECT-TYPE
				SYNTAX	  INTEGER
				MAX-ACCESS  read-only
				STATUS	  current
				DESCRIPTION
					"Bridge ports can be configured with surveillance VLAN function."
				::= { swSurveillanceVlanPortEntry 1 }	
					
			swSurveillanceVlanPortState 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 surveillance 
						VLAN function. We can enable/disable the surveillance VLAN function on the 
						port."
					::= { swSurveillanceVlanPortEntry 2 }

END