-- *****************************************************************
-- MY-VLAN-MIB.mib:  My VLAN MIB file
--
-- $Copyright$
-- 
-- *****************************************************************
--

DES7200-VLAN-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Integer32,
        Counter32,
        IpAddress
                FROM SNMPv2-SMI
        VlanId,
        PortList
                FROM Q-BRIDGE-MIB
        TruthValue,
        DisplayString,
        RowStatus,
        MacAddress
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP,
        NOTIFICATION-GROUP
                FROM SNMPv2-CONF
        ConfigStatus,
        MemberMap,
        IfIndex
                FROM DES7200-TC
        EnabledStatus 
                FROM P-BRIDGE-MIB
        myMgmt
                FROM DES7200-SMI;

myVlanMIB MODULE-IDENTITY
        LAST-UPDATED "200203200000Z"
        ORGANIZATION "D-Link Crop."
        CONTACT-INFO
                " 
                http://support.dlink.com"
        DESCRIPTION
                "This module defines my vlan mibs."
        REVISION      "200203200000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { myMgmt 9}

myVlanMIBObjects OBJECT IDENTIFIER ::= { myVlanMIB 1 }

VlanList ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Each octet within this value specifies a set of eight
        vlans, with the first octet specifying vlans 1 through
        8, the second octet specifying vlans 9 through 16, etc.
        Within each octet, the most significant bit represents
        the lowest numbered vlan, and the least significant bit
        represents the highest numbered vlan.  Thus, each vlan
        of the bridge is represented by a single bit within the
        value of this object.  If that bit has a value of '1',
        then that vlan is included in the set of vlans; the vlan
        is not included if its bit has a value of '0'."
    SYNTAX      OCTET STRING
    
myVlanMaxNumber OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Number of MAX vlans this system supported."
        ::= { myVlanMIBObjects 1 }

myVlanCurrentNumber OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Number of current vlans this system have."
        ::= { myVlanMIBObjects 2 }
    
mySystemMaxVID OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Max vlans of VID this system supported."
        ::= { myVlanMIBObjects 3 }    

-- myVlanIfConfigTable from the 10.3(4b3) has been abandoned. 
myVlanIfConfigTable OBJECT-TYPE
        SYNTAX SEQUENCE OF MyVlanIfConfigEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "vlan table."
        ::= { myVlanMIBObjects 4 }
    
myVlanIfConfigEntry OBJECT-TYPE
        SYNTAX MyVlanIfConfigEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "list of vlan and it's port group table."
        INDEX { myVlanIfConfigIfIndex}
        ::= { myVlanIfConfigTable 1 }
    
MyVlanIfConfigEntry ::=
        SEQUENCE {
        myVlanIfConfigIfIndex IfIndex,
        myVlanIfAccessVlan   VlanId,
        myVlanIfNativeVlan   VlanId,
        myVlanIfAllowedVlanList OCTET STRING
        }    
    
myVlanIfConfigIfIndex OBJECT-TYPE
        SYNTAX IfIndex
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            " "
        ::= { myVlanIfConfigEntry 1 }  

myVlanIfAccessVlan OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-write
        STATUS obsolete
        DESCRIPTION
            "The value indicate the VID of the vlan which that this port 
             belong to. This field is effective for only access port."
        ::= { myVlanIfConfigEntry 2 }          

myVlanIfNativeVlan OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-write
        STATUS obsolete
        DESCRIPTION
            "The value indicate the VID of the native vlan of that this port .
             This field is effective for only trunk port."
        ::= { myVlanIfConfigEntry 3 }                 
        
myVlanIfAllowedVlanList OBJECT-TYPE
        SYNTAX OCTET STRING(SIZE(512))
        MAX-ACCESS read-write
        STATUS obsolete
        DESCRIPTION
            "Each bit in every octet in octet string assigned to a vlan, the value of
             the bit indicates that if the vlan is belong to allowed vlan list of this 
             interface. It indicates that assigned vlan is member of allowed vlan list
             of this interface if value of the bit is 1. The lowest bit of first byte 
             correspond to vlan 1 and the lowest bit of second byte correspond to vlan 9
             vlan. This field is effective for only trunk port."
        ::= { myVlanIfConfigEntry 4 }        
    
 
--  myVlanTable from the 10.3(4b3) has been abandoned.   
myVlanTable OBJECT-TYPE
        SYNTAX SEQUENCE OF MyVlanEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "vlan table."
        ::= { myVlanMIBObjects 5 }
    
myVlanEntry OBJECT-TYPE
        SYNTAX MyVlanEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "list of vlan and it's distribution table."
        INDEX { myVlanVID }
        ::= { myVlanTable 1 }
    
MyVlanEntry ::=
        SEQUENCE {
        myVlanVID VlanId,
        myVlanPortMemberAction MemberMap,
        myVlanApMemberAction MemberMap,
        myVlanAlias DisplayString,
        myVlanEntryStatus ConfigStatus
        }
    
myVlanVID OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-only
        STATUS obsolete
        DESCRIPTION
            "VID of vlan ."
        ::= { myVlanEntry 1 }
 
myVlanPortMemberAction OBJECT-TYPE
        SYNTAX MemberMap
        MAX-ACCESS read-only
        STATUS obsolete
        DESCRIPTION
            "Each octet in member map assigned to a physical port, the value of
             the octect indicates the action of a physical port in the
             vlan. Drop(1) indicate that the vlan doesn't include this physical port, 
             Add(2) indicate that the vlan include this physical port."
        ::= { myVlanEntry 2 }
        
myVlanApMemberAction OBJECT-TYPE
        SYNTAX MemberMap
        MAX-ACCESS read-only
        STATUS obsolete
        DESCRIPTION
            "Each octet in member map assigned to a aggreate port, the value of
             the octect indicates the action of a aggreate port in the
            vlan. Drop(1) indicate that the vlan doesn't include this physical port, 
             Add(2) indicate that the vlan include this physical port."
        ::= { myVlanEntry 3 }        
        
myVlanAlias OBJECT-TYPE
        SYNTAX DisplayString (SIZE (0..32))
        MAX-ACCESS read-write
        STATUS obsolete
        DESCRIPTION
            "Vlan's alias ."
        DEFVAL{""}   
        ::= { myVlanEntry 4 }
                
myVlanEntryStatus OBJECT-TYPE
        SYNTAX ConfigStatus
        MAX-ACCESS read-create
        STATUS obsolete
        DESCRIPTION
            "Status of this entry, set this object to valid will creat a vlan of this entry,
             and set its value to invalid will delete the vlan of this entry."
        ::= { myVlanEntry 5 }

-- myVlanPortConfigTable from the 10.3(4b3) was started to support.   
--The table of VLAN members    
myVlanPortConfigTable OBJECT-TYPE
        SYNTAX SEQUENCE OF MyVlanPortConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The table of VLAN members."
        ::= { myVlanMIBObjects 6 }
    
myVlanPortConfigEntry OBJECT-TYPE
        SYNTAX MyVlanPortConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "list of ports."
        INDEX { myVlanPortConfigIndex}
        ::= { myVlanPortConfigTable 1 }
    
MyVlanPortConfigEntry ::=
        SEQUENCE {
        myVlanPortConfigIndex IfIndex,
        myVlanPortConfigMode INTEGER,
        myVlanPortAccessVlan   VlanId,
        myVlanPortNativeVlan   VlanId,
        myVlanPortAllowedVlanList VlanList
        }
        
--the index of port    
myVlanPortConfigIndex OBJECT-TYPE
        SYNTAX IfIndex
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "port index"
        ::= { myVlanPortConfigEntry 1 }
        
--The port mode, read-only, in MY-INTERFACE-MIB.mib can be set up.       
myVlanPortConfigMode OBJECT-TYPE
        SYNTAX INTEGER {
            access(1), -- the mode of interface is access port
            trunk(2),  -- the mode of interface is trunk port
            dot1q-tunnel(3),   --  the mode of interface is 802.1q tunnel port
            hybrid(4), -- the mode of interface is hybrid port
		  		  other(5), -- the mode of interface is unknow port
		  		  uplink(6), -- the mode of interface is uplink port
		  		  host(7),  -- the mode of interface is private host port
		  		  promiscuous(8) -- the mode of interface is private promiscuous port
        }
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Port mode, indicates that port is an 
             access(1), trunk(2), dot1q-tunnel(3), 
             hybrid(4), other(5), uplink(6), 
		  		   host(7) or promiscuous(8) port."
        ::= { myVlanPortConfigEntry 2 }
        
myVlanPortAccessVlan OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The value indicate the VID of the vlan which that this port 
             belong to. This field is effective for only access port."
        ::= { myVlanPortConfigEntry 3 }

myVlanPortNativeVlan OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The value indicate the VID of the native vlan of that this port .
             This field is effective for only trunk,hybrid,uplink and dot1q_tunnel port."
        ::= { myVlanPortConfigEntry 4 }
    
myVlanPortAllowedVlanList OBJECT-TYPE
        SYNTAX VlanList
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "Each octet within this value specifies a set of eight
             vlans, with the first octet specifying vlans 0 through
             7, the second octet specifying vlans 8 through 15, etc.
             Within each octet, the most significant bit represents
             the lowest numbered vlan, and the least significant bit
             represents the highest numbered vlan.  Thus, each vlan
             of the bridge is represented by a single bit within the
             value of this object.  If that bit has a value of '1',
             then that vlan is included in the set of vlans; the vlan
             is not included if its bit has a value of '0'"
        ::= { myVlanPortConfigEntry 5 }

-- myVlanConfigTable from the 10.3(4b3) was started to support.        
myVlanConfigTable OBJECT-TYPE
        SYNTAX SEQUENCE OF MyVlanConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "vlan table."
        ::= { myVlanMIBObjects 7 }
    
myVlanConfigEntry OBJECT-TYPE
        SYNTAX MyVlanConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "list of vlan and it's distribution table."
        INDEX { myVlanConfigVID }
        ::= { myVlanConfigTable 1 }
    
MyVlanConfigEntry ::=
        SEQUENCE {
        myVlanConfigVID VlanId,
        myVlanConfigAction Integer32,
        myVlanConfigName DisplayString,
        myVlanConfigPortMember PortList
        }
   
myVlanConfigVID OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "VID of vlan ."
        ::= { myVlanConfigEntry 1 }
      
myVlanConfigAction OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The value 1 to create a vlan, 0 to delete a vlan."
        ::= { myVlanConfigEntry 2 }
      
myVlanConfigName OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "vlan name."
        ::= { myVlanConfigEntry 3 }
 
myVlanConfigPortMember OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Each octet within this value specifies a set of eight
             ports, with the first octet specifying ports 1 through
             8, the second octet specifying ports 9 through 16, etc.
             Within each octet, the most significant bit represents
             the lowest numbered port, and the least significant bit
             represents the highest numbered port.  Thus, each port
             of the bridge is represented by a single bit within the
             value of this object.  If that bit has a value of '1',
             then that port is included in the set of ports; the port
             is not included if its bit has a value of '0'."
        ::= { myVlanConfigEntry 4 }


myVlanMIBConformance OBJECT IDENTIFIER ::= { myVlanMIB 2 }
myVlanMIBCompliances OBJECT IDENTIFIER ::= { myVlanMIBConformance 1 }
myVlanMIBGroups      OBJECT IDENTIFIER ::= { myVlanMIBConformance 2 }


-- compliance statements

myVlanMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the My Vlan MIB"
        MODULE  -- this module
                MANDATORY-GROUPS { myVlanMIBGroup
                 }
        ::= { myVlanMIBCompliances 1 }
                
-- units of conformance

myVlanMIBGroup OBJECT-GROUP
        OBJECTS {
           myVlanMaxNumber,
           myVlanCurrentNumber,
           mySystemMaxVID,
--           myVlanIfConfigIfIndex,
           myVlanIfAccessVlan,
           myVlanIfNativeVlan,
           myVlanIfAllowedVlanList,
           myVlanVID,
           myVlanApMemberAction,
           myVlanPortMemberAction,
           myVlanAlias,
           myVlanEntryStatus,  
--           myManageVlanVID,
--           myPortDefaultVIDPortIndex,
--           myPortDefaultVID,
--           myVlanPortConfigIndex,
           myVlanPortConfigMode,
           myVlanPortAccessVlan,
           myVlanPortNativeVlan,
           myVlanPortAllowedVlanList,
           myVlanConfigVID,
           myVlanConfigAction,
           myVlanConfigName,
           myVlanConfigPortMember                    
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing vlan configure ."
        ::= { myVlanMIBGroups 1 }         
END
