-- COMPAQ Layer2 Switch Common MIB Ver 1.0                2001/08/15
--
--  LinkAggregation(port trunking) , Port Mirroring and IGMP

COMPAQ-L2MGMT-MIB DEFINITIONS ::= BEGIN
    IMPORTS
        TEXTUAL-CONVENTION				FROM SNMPv2-TC
        MODULE-IDENTITY, OBJECT-TYPE	
        								FROM SNMPv2-SMI
        IpAddress           			FROM RFC1155-SMI
        RowStatus			        	FROM SNMPv2-TC
        DisplayString                   FROM RFC1213-MIB
        compaq-common-mgmt				FROM COMPAQ-ID-REC-MIB;  

	swCompaqL2Mgmt MODULE-IDENTITY
	    LAST-UPDATED "0007150000Z"
	    ORGANIZATION "COMPAQ, Inc."
	    CONTACT-INFO
	        "   COMPAQ Customer Service

		    Postal: 

		       Tel: 

		    E-mail: "
	    DESCRIPTION
		    "The Structure of Common Management Information for 
		    making a trunk and IGMP related function for
		    Compaq devices."
		    ::= { compaq-common-mgmt 2 }   
		        
	MacAddress ::= OCTET STRING (SIZE (6))    -- a 6 octet address
                                                  -- in the
                                                  -- "canonical"
                                                  -- order, copy from RFC1493
-- Textual Convention for PortList
-- Define the PortList, comes from RFC2674
PortList ::= TEXTUAL-CONVENTION
    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'."
    SYNTAX      OCTET STRING
	 
    swPortTrunkPackage      OBJECT IDENTIFIER ::= { swCompaqL2Mgmt 1 }
    swPortMirrorPackage          OBJECT IDENTIFIER ::= { swCompaqL2Mgmt 2 }
    swIGMPPackage           OBJECT IDENTIFIER ::= { swCompaqL2Mgmt 3 }

-- ************************************************************************
--  swPortTrunkTable       
-- ************************************************************************
	swPortTrunkMaxEntries OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS	current
		DESCRIPTION
			"The max entries of swPortTrunkTable"
		::= { swPortTrunkPackage 1}
	
	swPortTrunkMaxPortMembers OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS	current
		DESCRIPTION
			"The max number of ports allowed in a trunk."
		::= { swPortTrunkPackage 2}

    swPortTrunkTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwPortTrunkEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "This table specifies the port membership for each logical link."
        ::= { swPortTrunkPackage 3 }

		
    swPortTrunkEntry OBJECT-TYPE
        SYNTAX SwPortTrunkEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "A list of information specifies which ports group form
             a single logical link."
        INDEX  { swPortTrunkIndex }
        ::= { swPortTrunkTable 1 }

    SwPortTrunkEntry ::= 
        SEQUENCE {
            swPortTrunkIndex
                INTEGER,
            swPortTrunkName
                DisplayString,
            swPortTrunkMasterPort
                INTEGER,
            swPortTrunkPortList
                PortList,
            swPortTrunkState
                RowStatus
        }

    swPortTrunkIndex OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The index of logical port trunk."
        ::= { swPortTrunkEntry 1 }

    swPortTrunkName OBJECT-TYPE
        SYNTAX DisplayString (SIZE (0..16))
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The name of logical port trunk."
        ::= { swPortTrunkEntry 2 }

    swPortTrunkMasterPort OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The object indicates the master port number of the port trunk entry.The 
            first port of the trunk is implicitly configured to be the master logical 
            port.When using Port Trunk, you can not configure the other ports of 
            the group except the master port. Their configuration must be same as the
            master port (e.g. speed, duplex, enabled/disabled, flow control, and so on)." 
        ::= { swPortTrunkEntry 3 }

    swPortTrunkPortList OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "Indicate member ports of a logical trunk."
        ::= { swPortTrunkEntry 4 }

    
    swPortTrunkState OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object indicates the status of this entry. "
        ::= { swPortTrunkEntry 5 }



-- **************************************************************************
--  swPortMirrorPackage              
-- **************************************************************************
	swPortMirrorMaxEntries OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS	current
		DESCRIPTION
			"The max entries of this swPortMirrorCtrlTable"
		::= { swPortMirrorPackage 1}
	
    swPortMirrorCtrlTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwPortMirrorCtrlEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "A list of port snooping entries.Port mirroring function provides an easy
            way to monitor traffic on any port. In this way any good packets appears
            on the source mirror port also shows up on the target mirror port and 
            doesn't to reconstruct the LAN."
        ::= { swPortMirrorPackage 2 }

    swPortMirrorCtrlEntry OBJECT-TYPE
        SYNTAX SwPortMirrorCtrlEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "A list of information provide an easy way to monitor traffic on any port.
            The use can bring a fancy network monitor attaching to any target mirror 
            port and set the port to be monitored as source mirror port. "
        INDEX  { swPortMirrorIndex }
        ::= { swPortMirrorCtrlTable 1 }

    SwPortMirrorCtrlEntry ::= 
        SEQUENCE {
            swPortMirrorIndex
                INTEGER,
            swPortMirrorSourcePort
                INTEGER,
            swPortMirrorTargetPort
                INTEGER,
            swPortMirrorDirection
            	INTEGER,
            swPortMirrorState
                RowStatus
        }

    swPortMirrorIndex OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates the port snooping entry number.There is just only 
            one now."
        ::= { swPortMirrorCtrlEntry 1 }

    swPortMirrorSourcePort OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object indicates the number of port to be sniffed. The port number 
            is the sequential (logical) number which is also applied to bridge MIB,
            etc. "
        ::= { swPortMirrorCtrlEntry 2 }

    swPortMirrorTargetPort OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object indicates switch which port will sniff another port.
            A trunk port member cannot be configured as a target Snooping port.
            The port number is the sequential (logical) number which is also 
            applied to bridge MIB, etc. "
        ::= { swPortMirrorCtrlEntry 3 }

	swPortMirrorDirection OBJECT-TYPE
		SYNTAX INTEGER {
				other(1),
				ingress(2),
				egress(3),
				both(4)
				}
		MAX-ACCESS	read-create
		STATUS		current
		DESCRIPTION
			"This object uses to setup the what packets will be mirrored."
		::= { swPortMirrorCtrlEntry 4}
		
    swPortMirrorState OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object indicates the status of this entry. "
        ::= { swPortMirrorCtrlEntry 5 }

-- **************************************************************************
--  swIGMPTable               
-- **************************************************************************

	swIGMPCtrlStatus OBJECT-TYPE 
		SYNTAX INTEGER {
				other(1),
				disabled(2),
				enabled(3)
		}
		MAX-ACCESS read-write
		STATUS current
		DESCRIPTION 
			"Enable the IGMP Control"
		::= { swIGMPPackage 1 }
		
	swIGMPCtrlMaxEntries OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS	current
		DESCRIPTION
			"The max entries of this swIGMPCtrlTable"
		::= { swIGMPPackage 2}		
		
    swIGMPCtrlTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwIGMPCtrlEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The table controls the Vlan's IGMP function. Its scale depends on
             current VLAN state (swVlanInfoStatus). If VLAN is disabled or
             in Mac-Base mode, there is only one entry in the table, with
             index 1. If VLAN is in Port-Base or 802.1q mode, the number of
             entries can be up to 12, with index range from 1 to 12."
        ::= { swIGMPPackage 3 }

    swIGMPCtrlEntry OBJECT-TYPE
        SYNTAX SwIGMPCtrlEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The entry in IGMP control table (swIGMPCtrlTable). The entry is
             effective only when IGMP capture switch (swDevIGMPCaptureState)
             is enabled."
        INDEX  { swIGMPCtrlVid }
        ::= { swIGMPCtrlTable 1 }

    SwIGMPCtrlEntry ::= 
        SEQUENCE {
            swIGMPCtrlVid
                INTEGER,
			swIGMPQueryInterval
				INTEGER,
			swIGMPQueryMaxResponseTime				
				INTEGER,
			swIGMPRobustness
				INTEGER,				
            swIGMPCtrlTimer
                INTEGER,
			swIGMPQuerierVersion                
				INTEGER,
            swIGMPCtrlState
                RowStatus
        }

    swIGMPCtrlVid OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object indicates the IGMP control entry's VLAN id. If VLAN is
             disabled or in Mac-Base mode, the Vid is always 0 and cannot be changed
             by management users. If VLAN is in Port-Base mode, the Vid is arranged
             from 1 to 12 , fixed form. If VLAN is in 802.1q mode, the Vid setting 
             can vary from 1 to 4094 by management user, and the Vid in each entry
             must be unique in the IGMP Control Table."
        ::= { swIGMPCtrlEntry 1 }

	swIGMPQueryInterval OBJECT-TYPE
	    SYNTAX     INTEGER
	    UNITS      "seconds"
	    MAX-ACCESS read-create
	    STATUS     current
	    DESCRIPTION
	            "The frequency at which IGMP Host-Query packets are
	            transmitted on this interface."
	    DEFVAL     { 125 }
	    ::= { swIGMPCtrlEntry 2 }
    
	swIGMPQueryMaxResponseTime OBJECT-TYPE
	    SYNTAX     INTEGER (1..25)
	    UNITS      "seconds"
	    MAX-ACCESS read-create
	    STATUS     current
	    DESCRIPTION
	            "The maximum query response time advertised in IGMPv2
	            queries on this interface."
	    DEFVAL     { 10 }
	    ::= { swIGMPCtrlEntry 3 }
    
	swIGMPRobustness OBJECT-TYPE
	    SYNTAX     INTEGER (1..255)
	    MAX-ACCESS read-create
	    STATUS     current
	    DESCRIPTION
	            "The Robustness Variable allows tuning for the expected
	            packet loss on a subnet.  If a subnet is expected to be
	            lossy, the Robustness Variable may be increased.  IGMP is
	            robust to (Robustness Variable-1) packet losses.
	            Note: for Version issue, when using IGMP V1, this item got
	            no any sense, but v2 should be used."
	    DEFVAL     { 2 }
	    ::= { swIGMPCtrlEntry 4 }
	    
    swIGMPCtrlTimer OBJECT-TYPE
        SYNTAX INTEGER 
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The timer value for sending IGMP query packet when none 
             was sent by the multicast router in the LAN. The timer works
             in per-VLAN basis. Our device will be activated to send the query
             message if the timer is expired. Please reference RFC2236-1997.
             And it recommends a default of 125 seconds. The timeout value must 
             be at least 30 seconds."
        DEFVAL      { 300 }
        ::= { swIGMPCtrlEntry 5 }
        
	swIGMPQuerierVersion OBJECT-TYPE 
		SYNTAX INTEGER {
				other(1),
				v0Querier(2),
				v1Querier(3),
				v2Querier(4)
		}
		MAX-ACCESS read-create
		STATUS current
		DESCRIPTION 
			"Select the IGMP Querier Version"
		::= { swIGMPCtrlEntry 6 }
		
    swIGMPCtrlState OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object indicates the status of this entry."
        ::= { swIGMPCtrlEntry 7 }
        
--
--  The IGMP Information Table 
--  

	swIGMPIfnoMaxEntries OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS	current
		DESCRIPTION
			"The max entries of this swIGMPInfoTable"
		::= { swIGMPPackage 4}
	
    swIGMPInfoTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwIGMPInfoEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "The table contains the number current IGMP query packets which
             is captured by this device, as well as the IGMP query packets
             sent by the device."
        ::= { swIGMPPackage 5 }

    swIGMPInfoEntry OBJECT-TYPE
        SYNTAX SwIGMPInfoEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Information about current IGMP query information, provided that
             swDevIGMPCaptureState and swIGMPCtrlState of associated VLAN
             entry are all enabled."
        INDEX  { swIGMPInfoVid }
        ::= { swIGMPInfoTable 1 }

    SwIGMPInfoEntry ::= 
        SEQUENCE {
            swIGMPInfoVid
                INTEGER,
            swIGMPInfoQueryCount
                INTEGER,
            swIGMPInfoTxQueryCount
                INTEGER
        }

    swIGMPInfoVid OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates the Vid of associated IGMP info table entry. It
             follows swIGMPCtrlVid in the associated entry of IGMP control table
             (swIGMPCtrlTable)."
        ::= { swIGMPInfoEntry 1 }
        
    swIGMPInfoQueryCount OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates the number of query packets received since the
             IGMP function enabled, in per-VLAN basis."
        ::= { swIGMPInfoEntry 2 }

    swIGMPInfoTxQueryCount OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates the send count of IGMP query messages, in
             per-VLAN basis. In case of IGMP timer expiration, the switch
             sends IGMP query packets to related VLAN member ports and increment
             this object by 1."
        ::= { swIGMPInfoEntry 3 }

	swIGMPTableMaxEntries OBJECT-TYPE
		SYNTAX INTEGER
		MAX-ACCESS read-only
		STATUS	current
		DESCRIPTION
			"The max entries of swIGMPTable"
		::= { swIGMPPackage 6}
		
    swIGMPTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwIGMPEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "This table containing current IGMP information which is captured by this 
            device, provided that swDevIGMPCaptureState and swIGMPCtrlState of
            associated VLAN entry are all enabled. Note that the priority
            of IGMP table entries is lower than Filtering Table, i.e. if there is a
            table hash collision between the entries of IGMP Table and Filtering Table
            inside the switch H/W address table, then Filtering Table entry overwrite
            the colliding entry of IGMP Table. See swFdbFilterTable description also."
        ::= { swIGMPPackage 7 }

    swIGMPEntry OBJECT-TYPE
        SYNTAX SwIGMPEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Information about IGMP information which is captured by this 
            device, provided that swDevIGMPCaptureState and swIGMPCtrlState of
            associated VLAN entry are all enabled."
        INDEX  { swIGMPVid , swIGMPGroupIpAddr }
        ::= { swIGMPTable 1 }

    SwIGMPEntry ::= 
        SEQUENCE {
            swIGMPVid
                INTEGER,
            swIGMPGroupIpAddr
                IpAddress,
            swIGMPMacAddr
                MacAddress,
            swIGMPPortMap
                PortList,
            swIGMPIpGroupReportCount
                INTEGER
        }

    swIGMPVid OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates the Vid of individual IGMP table entry. It
             shows the Vid of IGMP report information captured on network."
        ::= { swIGMPEntry 1 }

    swIGMPGroupIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object is identify group ip address which is captured from
            IGMP packet, in per-Vlan basis."
        ::= { swIGMPEntry 2 }

    swIGMPMacAddr OBJECT-TYPE
        SYNTAX MacAddress
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object is to identify the mac address corresponding
            to swIGMPGroupIpAddr, in per-Vlan basis.."
        ::= { swIGMPEntry 3 }

    swIGMPPortMap OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates which ports are belonged to the same multicast 
            group, in per-Vlan basis. Each multicast group has a octect string
            to indicate with port map. The most significant bit represents the
            lowest numbered port, and the least significant bit represents the
            highest numbered port. ."
        ::= { swIGMPEntry 4 }

    swIGMPIpGroupReportCount OBJECT-TYPE
        SYNTAX INTEGER
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "This object indicates how many report packets are received by our
             device corresponding to this entry since IGMP function is enabled,
             in per-Vlan basis. ." 
        ::= { swIGMPEntry 5 }

END
