-- ==================================================================
-- Copyright (C) 2002 by H3C TECHNOLOGIES. All rights reserved.
--
-- Description: LAN Switch Multicast Port Management MIB
-- Reference:
-- Version: V1.2
-- History:
-- V1.0 2005-03-22 Created by Wang Xiaodong
-- V1.1 2005-08-11 updated by Wang Xiaodong
--      Add h3cMPortGroupLimitReplace
-- V1.2 2006-02-06 updated by Lv Jianning
--      Add h3cHostStaticJoinTable
-- ==================================================================
-- ==================================================================
-- ==================================================================
--
-- Variables and types be imported
--
-- ==================================================================
H3C-MPM-MIB DEFINITIONS ::= BEGIN


IMPORTS

    Integer32,MODULE-IDENTITY,OBJECT-TYPE,Unsigned32,mib-2
        FROM SNMPv2-SMI

    TEXTUAL-CONVENTION,RowStatus
        FROM SNMPv2-TC

    h3cCommon
        FROM HUAWEI-3COM-OID-MIB

    InetAddressType, InetAddress
        FROM INET-ADDRESS-MIB

    ifIndex
        FROM IF-MIB;

    h3cMpm MODULE-IDENTITY
        LAST-UPDATED "200503220000Z"
        ORGANIZATION
            "Hangzhou H3C Tech. Co., Ltd."
        CONTACT-INFO
            "Platform Team Hangzhou H3C Tech. Co., Ltd.
            Hai-Dian District Beijing P.R. China
            http://www.h3c.com
            Zip:100085
            "
        DESCRIPTION
            "The MPM (Multicast Port Management) MIB."
        REVISION "200503220000Z"
        DESCRIPTION
            "The initial version of this MIB file."
        ::= { h3cCommon 51 }

    EnabledStatus ::= TEXTUAL-CONVENTION
        STATUS     current
        DESCRIPTION
            "A simple status value for the object."
        SYNTAX     INTEGER { enabled(1), disabled(2) }



-- ==================================================================
--
-- ======================= definition begin =========================
--
-- ==================================================================

    h3cMPMObject OBJECT IDENTIFIER ::= {  h3cMpm 1  }

    h3cMPortGroupLimitMinNumber OBJECT-TYPE
        SYNTAX  Unsigned32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The lower limit of group-limit number."
        ::= { h3cMPMObject 1 }

    h3cMPortGroupLimitMaxNumber OBJECT-TYPE
        SYNTAX  Unsigned32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The upper limit of group-limit number."
        ::= { h3cMPMObject 2 }


    h3cMPMTable OBJECT IDENTIFIER ::= {  h3cMpm 2  }

    h3cMPortGroupJoinTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF H3cMPortGroupJoinEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "A table which is used for configuring a port in a specified VLAN to join
            a multicast group."
        ::= { h3cMPMTable 1 }

    h3cMPortGroupJoinEntry OBJECT-TYPE
        SYNTAX     H3cMPortGroupJoinEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "An entry which is used for configuring a port in a specified VLAN to join
            a multicast group."
        INDEX      {
                      ifIndex,
                      h3cMPortGroupJoinVlanID,
                      h3cMPortGroupJoinAddressType,
                      h3cMPortGroupJoinAddress
                      }
        ::= { h3cMPortGroupJoinTable 1 }

    H3cMPortGroupJoinEntry ::= SEQUENCE {
        h3cMPortGroupJoinVlanID          Integer32,
        h3cMPortGroupJoinAddressType     InetAddressType,
        h3cMPortGroupJoinAddress         InetAddress,
        h3cMPortGroupJoinStatus          RowStatus
        }

    h3cMPortGroupJoinVlanID OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "An index uniquely identifying a port in a specified
            VLAN which joined the multicast group."
        ::= { h3cMPortGroupJoinEntry 1 }

    h3cMPortGroupJoinAddressType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Type of the multicast IP address."
        ::= { h3cMPortGroupJoinEntry 2 }

    h3cMPortGroupJoinAddress OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP address of the group which the port belongs to,
            and it must be a valid multicast IP address."
        ::= { h3cMPortGroupJoinEntry 3 }

    h3cMPortGroupJoinStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
            "This object is responsible for managing the creation and
             deletion of rows, which supports 'active', 'notReady',
             'createAndGo', 'destroy'.

             Until instances of all corresponding columns are
             appropriately configured, the value of the
             corresponding instance of the h3cMPortGroupJoinStatus
             column is 'notReady'.

             In particular, a newly created row cannot be actived
             until the port belongs to the corresponding VLAN and
             IGMP or IGMP snooping is enabled on that VLAN."
        ::= { h3cMPortGroupJoinEntry 4 }

    h3cMPortGroupTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF H3cMPortGroupEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "A table containing information about the status of a port
             which joined a multicast group in the VLAN."
         ::= { h3cMPMTable 2 }

    h3cMPortGroupEntry OBJECT-TYPE
        SYNTAX     H3cMPortGroupEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "An entry containing information about the status of a port
             which joined a multicast group in the VLAN."
        INDEX      {  ifIndex,
                      h3cMPortGroupVlanID,
                      h3cMPortGroupAddressType,
                      h3cMPortGroupAddress
                   }
        ::= { h3cMPortGroupTable 1 }

    H3cMPortGroupEntry ::= SEQUENCE {
        h3cMPortGroupVlanID          Integer32,
        h3cMPortGroupAddressType     InetAddressType,
        h3cMPortGroupAddress         InetAddress
        }

    h3cMPortGroupVlanID OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "An index uniquely identifies that a port belongs to a specified
            VLAN."
        ::= { h3cMPortGroupEntry 1 }

    h3cMPortGroupAddressType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Type of multicast IP address."
        ::= { h3cMPortGroupEntry 2 }

    h3cMPortGroupAddress OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "IP address of the group which the port joined, and it must be a
             valid multicast IP address."
        ::= { h3cMPortGroupEntry 3 }

    h3cMPortConfigTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF H3cMPortConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "A table configuring the fast leave status, group limit number and
             group policy parameter on a port in the specified VLAN."
        ::= { h3cMPMTable 3 }

    h3cMPortConfigEntry OBJECT-TYPE
        SYNTAX  H3cMPortConfigEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "An entry containing information about the fast leave status, group
             limit number and group policy parameter of a port in the specified
             VLAN."
        INDEX  { ifIndex,
                 h3cMPortConfigVlanID }
        ::= { h3cMPortConfigTable 1 }

    H3cMPortConfigEntry ::= SEQUENCE {
        h3cMPortConfigVlanID          Integer32,
        h3cMPortGroupLimitNumber      Unsigned32,
        h3cMPortFastLeaveStatus       EnabledStatus,
        h3cMPortGroupPolicyParameter  Integer32,
        h3cMPortConfigRowStatus       RowStatus,
        h3cMPortGroupLimitReplace     EnabledStatus
        }

    h3cMPortConfigVlanID OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "The VLAN index."
        ::= { h3cMPortConfigEntry 1 }

    h3cMPortGroupLimitNumber OBJECT-TYPE
        SYNTAX  Unsigned32
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The group limit number of the port."
        ::= { h3cMPortConfigEntry 2 }

    h3cMPortFastLeaveStatus OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The fast leave status of the port."
        DEFVAL  { 2 }
        ::= { h3cMPortConfigEntry 3 }

    h3cMPortGroupPolicyParameter OBJECT-TYPE
        SYNTAX  Integer32(0|2000..2999)
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The ACL number which is used as the group policy parameter
             of the port."
        DEFVAL  { 0 }
        ::= { h3cMPortConfigEntry 4 }

    h3cMPortConfigRowStatus OBJECT-TYPE
        SYNTAX  RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "The object is responsible for managing the creation and
             deletion of rows, which supports 'active', 'notReady',
             'createAndGo' and 'destroy'."
        ::= { h3cMPortConfigEntry 5 }

    h3cMPortGroupLimitReplace OBJECT-TYPE
        SYNTAX  EnabledStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "This object is related to the object h3cMPortGroupLimitNumber.
             If the current IGMP group number is less than the value of
             h3cMPortGroupLimitNumber, any new IGMP group is permitted.
             If the current IGMP group number equals to the value of
             h3cMPortGroupLimitNumber and the value of this object is enabled,
             the group with the minimum multicast address will be replaced by
             the new group.
             If the current IGMP group number equals to the value of
             h3cMPortGroupLimitNumber and the value of this object is disabled,
             none of new group will be permitted."
        DEFVAL  { disabled }
        ::= { h3cMPortConfigEntry 6 }

    h3cHostStaticJoinTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF H3cHostStaticJoinEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "A table used to configure a host on a port in a specified VLAN
            statically to join a multicast group."
        ::= { h3cMPMTable 4 }

    h3cHostStaticJoinEntry OBJECT-TYPE
        SYNTAX     H3cHostStaticJoinEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "An entry used to configure a host on a port in a specified VLAN
            statically to join a multicast group."
        INDEX      {
                      ifIndex,
                      h3cHostStaticJoinVlanID,
                      h3cHostStaticJoinAddressType,
                      h3cHostStaticJoinAddress
                      }
        ::= { h3cHostStaticJoinTable 1 }

    H3cHostStaticJoinEntry ::= SEQUENCE {
        h3cHostStaticJoinVlanID          Integer32,
        h3cHostStaticJoinAddressType     InetAddressType,
        h3cHostStaticJoinAddress         InetAddress,
        h3cHostStaticJoinStatus          RowStatus
        }

    h3cHostStaticJoinVlanID OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "An index uniquely identify the specified VLAN in which a host
            on a port statically joined the multicast group."
        ::= { h3cHostStaticJoinEntry 1 }

    h3cHostStaticJoinAddressType OBJECT-TYPE
        SYNTAX     InetAddressType
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Type of the multicast IP address."
        ::= { h3cHostStaticJoinEntry 2 }

    h3cHostStaticJoinAddress OBJECT-TYPE
        SYNTAX     InetAddress
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP address of the group which the host belongs to, and it must be
            a valid multicast IP address."
        ::= { h3cHostStaticJoinEntry 3 }

    h3cHostStaticJoinStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
            "This object is responsible for managing rows, which supports
            'active', 'createAndGo' and 'destroy'."
        ::= { h3cHostStaticJoinEntry 4 }
END
