-- *****************************************************************
-- FS-VLAN-MIB.mib:  FS VLAN MIB file
--
-- March 2002, Wuzg
--
-- Copyright (c) 2002 by FS.COM Inc..
-- All rights reserved.
-- 
-- *****************************************************************
--

FS-VLAN-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Integer32
                FROM SNMPv2-SMI
        VlanId,
        PortList
                FROM Q-BRIDGE-MIB
        DisplayString,
        TEXTUAL-CONVENTION
                FROM SNMPv2-TC
        MODULE-COMPLIANCE,
        OBJECT-GROUP
                FROM SNMPv2-CONF
        ConfigStatus,
        MemberMap,
        IfIndex
                FROM FS-TC
        fsMgmt
                FROM FS-SMI;

fsVlanMIB MODULE-IDENTITY
        LAST-UPDATED "200203200000Z"
        ORGANIZATION "FS.COM Inc.."
        CONTACT-INFO
                " 
                Tel: 400-865-2852 

                E-mail: https://www.fs.com/live_chat_service_mail.html"
        DESCRIPTION
                "This module defines fs vlan mibs."
        REVISION      "200203200000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { fsMgmt 9}

fsVlanMIBObjects OBJECT IDENTIFIER ::= { fsVlanMIB 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
    
fsVlanMaxNumber OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "Number of MAX vlans this system supported."
        ::= { fsVlanMIBObjects 1 }

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

-- fsVlanIfConfigTable from the 10.3(4b3) has been abandoned. 
fsVlanIfConfigTable OBJECT-TYPE
        SYNTAX SEQUENCE OF FSVlanIfConfigEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "vlan table."
        ::= { fsVlanMIBObjects 4 }
    
fsVlanIfConfigEntry OBJECT-TYPE
        SYNTAX FSVlanIfConfigEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "list of vlan and it's port group table."
        INDEX { fsVlanIfConfigIfIndex}
        ::= { fsVlanIfConfigTable 1 }
    
FSVlanIfConfigEntry ::=
        SEQUENCE {
        fsVlanIfConfigIfIndex IfIndex,
        fsVlanIfAccessVlan   VlanId,
        fsVlanIfNativeVlan   VlanId,
        fsVlanIfAllowedVlanList OCTET STRING
        }    
    
fsVlanIfConfigIfIndex OBJECT-TYPE
        SYNTAX IfIndex
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            " "
        ::= { fsVlanIfConfigEntry 1 }  

fsVlanIfAccessVlan 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."
        ::= { fsVlanIfConfigEntry 2 }          

fsVlanIfNativeVlan 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."
        ::= { fsVlanIfConfigEntry 3 }                 
        
fsVlanIfAllowedVlanList 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."
        ::= { fsVlanIfConfigEntry 4 }        

 
--  fsVlanTable from the 10.3(4b3) has been abandoned.   
fsVlanTable OBJECT-TYPE
        SYNTAX SEQUENCE OF FSVlanEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "vlan table."
        ::= { fsVlanMIBObjects 5 }
    
fsVlanEntry OBJECT-TYPE
        SYNTAX FSVlanEntry
        MAX-ACCESS not-accessible
        STATUS obsolete
        DESCRIPTION
            "list of vlan and it's distribution table."
        INDEX { fsVlanVID }
        ::= { fsVlanTable 1 }
    
FSVlanEntry ::=
        SEQUENCE {
        fsVlanVID VlanId,
        fsVlanPortMemberAction MemberMap,
        fsVlanApMemberAction MemberMap,
        fsVlanAlias DisplayString,
        fsVlanEntryStatus ConfigStatus
        }
    
fsVlanVID OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-only
        STATUS obsolete
        DESCRIPTION
            "VID of vlan ."
        ::= { fsVlanEntry 1 }
 
fsVlanPortMemberAction 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."
        ::= { fsVlanEntry 2 }
        
fsVlanApMemberAction 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."
        ::= { fsVlanEntry 3 }        
        
fsVlanAlias OBJECT-TYPE
        SYNTAX DisplayString (SIZE (0..32))
        MAX-ACCESS read-create
        STATUS obsolete
        DESCRIPTION
            "Vlan's alias ."
        DEFVAL{""}   
        ::= { fsVlanEntry 4 }
                
fsVlanEntryStatus 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."
        ::= { fsVlanEntry 5 }

-- fsVlanPortConfigTable from the 10.3(4b3) was started to support.   
--The table of VLAN members    
fsVlanPortConfigTable OBJECT-TYPE
        SYNTAX SEQUENCE OF FSVlanPortConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The table of VLAN members."
        ::= { fsVlanMIBObjects 6 }
    
fsVlanPortConfigEntry OBJECT-TYPE
        SYNTAX FSVlanPortConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "list of ports."
        INDEX { fsVlanPortConfigIndex}
        ::= { fsVlanPortConfigTable 1 }
    
FSVlanPortConfigEntry ::=
        SEQUENCE {
        fsVlanPortConfigIndex IfIndex,
        fsVlanPortConfigMode INTEGER,
        fsVlanPortAccessVlan   VlanId,
        fsVlanPortNativeVlan   VlanId,
        fsVlanPortAllowedVlanList VlanList,
        fsIfVlanID Integer32
        }
        
--the index of port    
fsVlanPortConfigIndex OBJECT-TYPE
        SYNTAX IfIndex
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "port index"
        ::= { fsVlanPortConfigEntry 1 }
        
--The port mode, read-only, in FS-INTERFACE-MIB.mib can be set up.       
fsVlanPortConfigMode 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."
        ::= { fsVlanPortConfigEntry 2 }
        
fsVlanPortAccessVlan 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."
        ::= { fsVlanPortConfigEntry 3 }

fsVlanPortNativeVlan 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."
        ::= { fsVlanPortConfigEntry 4 }
    
fsVlanPortAllowedVlanList 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'"
        ::= { fsVlanPortConfigEntry 5 }

fsIfVlanID OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The value indicates the VID of the vlan which that this port 
             belong to or of the native vlan of this port. 
	     This field is effective for only access, trunk, 
	     hybrid, uplink and dot1q_tunnel port."
        ::= { fsVlanPortConfigEntry 6 }

-- fsVlanConfigTable from the 10.3(4b3) was started to support.        
fsVlanConfigTable OBJECT-TYPE
        SYNTAX SEQUENCE OF FSVlanConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "vlan table."
        ::= { fsVlanMIBObjects 7 }
    
fsVlanConfigEntry OBJECT-TYPE
        SYNTAX FSVlanConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "list of vlan and it's distribution table."
        INDEX { fsVlanConfigVID }
        ::= { fsVlanConfigTable 1 }
    
FSVlanConfigEntry ::=
        SEQUENCE {
        fsVlanConfigVID VlanId,
        fsVlanConfigAction Integer32,
        fsVlanConfigName DisplayString,
        fsVlanConfigPortMember PortList
        }
   
fsVlanConfigVID OBJECT-TYPE
        SYNTAX VlanId
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "VID of vlan ."
        ::= { fsVlanConfigEntry 1 }
      
fsVlanConfigAction OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The value 1 to create a vlan, 0 to delete a vlan."
        ::= { fsVlanConfigEntry 2 }
      
fsVlanConfigName OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "vlan name."
        ::= { fsVlanConfigEntry 3 }
 
fsVlanConfigPortMember 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'."
        ::= { fsVlanConfigEntry 4 }


fsVlanMIBConformance OBJECT IDENTIFIER ::= { fsVlanMIB 2 }
fsVlanMIBCompliances OBJECT IDENTIFIER ::= { fsVlanMIBConformance 1 }
fsVlanMIBGroups      OBJECT IDENTIFIER ::= { fsVlanMIBConformance 2 }


-- compliance statements

fsVlanMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the FS Vlan MIB"
        MODULE  -- this module
                MANDATORY-GROUPS { fsVlanMIBGroup
                 }
        ::= { fsVlanMIBCompliances 1 }
                
-- units of conformance

fsVlanMIBGroup OBJECT-GROUP
        OBJECTS {
           fsVlanMaxNumber,
           fsVlanCurrentNumber,
           fsSystemMaxVID,
--           fsVlanIfConfigIfIndex,
           fsVlanIfAccessVlan,
           fsVlanIfNativeVlan,
           fsVlanIfAllowedVlanList,
           fsVlanVID,
           fsVlanApMemberAction,
           fsVlanPortMemberAction,
           fsVlanAlias,
           fsVlanEntryStatus,  
--           fsManageVlanVID,
--           fsPortDefaultVIDPortIndex,
--           fsPortDefaultVID,
--           fsVlanPortConfigIndex,
           fsVlanPortConfigMode,
           fsVlanPortAccessVlan,
           fsVlanPortNativeVlan,
           fsVlanPortAllowedVlanList,
           fsIfVlanID,
           fsVlanConfigVID,
           fsVlanConfigAction,
           fsVlanConfigName,
           fsVlanConfigPortMember                    
        }
        STATUS  current
        DESCRIPTION
                "A collection of objects providing vlan configure ."
        ::= { fsVlanMIBGroups 1 }         
END
