DOCS-L2VPN-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32,
    Integer32, 
    Counter32               FROM SNMPv2-SMI

    TEXTUAL-CONVENTION,
    TruthValue,
    MacAddress              FROM SNMPv2-TC

    MODULE-COMPLIANCE,
    OBJECT-GROUP            FROM SNMPv2-CONF

    ifIndex                 FROM IF-MIB

    dot1dBasePort           FROM BRIDGE-MIB

    dot1qFdbId, 
    dot1qTpFdbAddress,
    dot1qVlanIndex, 
    dot1qTpGroupAddress     FROM Q-BRIDGE-MIB

    docsIfCmtsCmStatusIndex FROM DOCS-IF-MIB

    docsQosServiceFlowId,
    docsQosPktClassId       FROM DOCS-QOS3-MIB
    
    clabProjDocsis,
    CpeInterfaceMaskType
                            FROM CLAB-DEF-MIB;

docsL2vpnMIB MODULE-IDENTITY
    LAST-UPDATED  "202510020000Z"  -- October 2, 2025.
    ORGANIZATION  "Cable Television Laboratories, Inc."
    CONTACT-INFO
        "Postal: Cable Television Laboratories, Inc. 
        858 Coal Creek Circle 
        Louisville, Colorado 80027-9750 
        U.S.A. 
        Phone:  +1 303-661-9100 
        Fax:    +1 303-661-9199 
        E-mail: mibs@cablelabs.com" 
    DESCRIPTION
        "This is the management MIB for devices complying to the 
         DOCSIS L2VPN Feature.
         Copyright 2025 Cable Television Laboratories, Inc.
         All rights reserved."
    REVISION "202510020000Z"  -- October 2, 2025
    DESCRIPTION
        "Revised Version from I16 spec along with
         renaming DocsL2vpnIfList to CpeInterfaceMaskType"
    REVISION "201503050000Z" -- March 5, 2015
    DESCRIPTION
        "Revised Version includes ECN L2VPN-N-14.1186-1
         and published as I14" 
    REVISION "201308080000Z"  -- August 8, 2013
    DESCRIPTION
        "Revised Version includes ECN L2VPN-N-13.1109-3
         and published as I11" 
    REVISION "201210040000Z"  -- October 04, 2012
    DESCRIPTION
        "Revised Version includes ECN L2VPN-N-12.1065-11
         and published as I10"  
    REVISION "200802150000Z"  -- February 15, 2008
    DESCRIPTION
        "Revised Version includes ECN L2VPN-N-07.0571-1
         and published as I07"  
    REVISION "200612220000Z"  -- December 22, 2006
    DESCRIPTION
        "Published as part of the DOCSIS 
         Layer 2 Virtual Private Networks Specification
         CM-SP-L2VPN-I03-061222."  
    REVISION "200607280000Z"  -- July 28, 2006
    DESCRIPTION
        "Published as part of the DOCSIS 
         Layer 2 Virtual Private Networks Specification
         CM-SP-L2VPN-I02-060728."
    REVISION "200603280000Z"  -- March 28, 2006
    DESCRIPTION
        "Initial version, published as part of the DOCSIS 
         Layer 2 Virtual Private Networks Specification
         CM-SP-L2VPN-I01-060328."
    ::= { clabProjDocsis 8 }
    
--------------------------------------------------------------
--
-- Textual Conventions
--
DocsL2vpnIdentifier ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "255a"
    STATUS      current
    DESCRIPTION
            "An externally administered octet string identifying an 
            L2VPN. An implementation MUST support a length of at least
            16 octets  The octet string is used as an index. As such, 
            the CMTS enforces that objects of type DocsL2vpnIdentifier
            are unique per CMTS. An MSO is encouraged to define 
            DocsL2vpnIdentifier values as globally unique."
    SYNTAX      OCTET STRING (SIZE(1..16))

DocsL2vpnIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS      current
    DESCRIPTION
            "An integer value locally generated by the agent for each 
            known DocsL2vpnIdentifier administrative identifier. It is
            intended to be used as a short index for tables in this MIB
            module in lieu of an object of the type 
            DocsL2vpnIdentifier."
    SYNTAX      Unsigned32 (0..4294967295)

DocsNsiEncapSubtype ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
            "An enumerated integer that defines the default 
            encapsulation on NSI ports of an L2VPN-forwarded packet.
            A CMTS implementation MUST support ieee802.1q(2).
            A CMTS MAY omit support for all NSI encapsulations 
            other than ieee802.1q(2)."
    SYNTAX      INTEGER {
        other(1),
        ieee8021q(2),
        ieee8021ad(3),
        mpls(4),
        l2tpv3(5),
 ieee8021ah(6)
    }

DocsNsiEncapValue ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "1x:"
    STATUS      current
    DESCRIPTION 
            "The encapsulation value for L2VPN forwarded packets on NSI
            ports. The value of an object of this type depends on the 
            value of an associated object of type DocsEncapSubtype:

            other(1): vendor specific,
            ieee8021q(2): 802.1Q tag with VLAN ID in lower 12 bits,
            ieee8021ad(3): pair of 16-bit values with service provider
            in lower 12 bits of the first 16-bit value and customer 
            VLAN ID in the lower 12 bits of the second 16-bit value,
            mpls(4): has to be zero length string,
            l2tpv3(5): has to be zero length string,
     ieee8021q(6): IEEE 802.1Q encapsulation which consists of B-SA,
            B-DA and 48-bit I-Tag."

    SYNTAX      OCTET STRING

DocsNsiModeSubtype ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
            "An enumerated integer that defines L2VPN Mode. Two modes
            are supported: Encapsulation Mode and Transport Mode."
    SYNTAX      INTEGER {
                none(1),
                encapsulation(2),
                transport(3)
    }

---------------------------------------------------------------

-- Placeholder for notifications
--
docsL2vpnMIBNotifications OBJECT IDENTIFIER ::= { docsL2vpnMIB 0 }

--  None defined

--
-- L2VPN MIB Objects
--

docsL2vpnMIBObjects OBJECT IDENTIFIER ::= { docsL2vpnMIB 1 }

----------------------------------------------------------------------
--
-- Point-to-Point and Point-to-Multipoint 
-- 
-- The following objects are required for both
-- Point-to-Point and Point-to-Multipoint operation.
--

----------------------------------------------------------------
--
-- L2VPN Identifier to L2VPN Index mapping table
--
docsL2vpnIdToIndexTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnIdToIndexEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Table indexed by the octet string DocsL2vpnIdentifier that
            provides the local agent's internally assigned docsL2vpnIdx
            value for that DocsL2vpnIdentifier value. The mapping of 
            DocsL2vpnIdentifier to docsL2vpnIdx is 1-1. The agent 
            has to instantiate a row in both docsL2vpnIndexToIdTable and
            docsL2vpnIdToIndexTable for each known L2VPN Identifier."
    ::= { docsL2vpnMIBObjects 1 }

docsL2vpnIdToIndexEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnIdToIndexEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Maps a DocsL2vpnIdentifier octet string into the local 
            agent's locally assigned docsL2vpnIdx value."
    INDEX { docsL2vpnId }
    ::= { docsL2vpnIdToIndexTable 1 }

DocsL2vpnIdToIndexEntry ::= SEQUENCE
    {
        docsL2vpnId            DocsL2vpnIdentifier,
        docsL2vpnIdToIndexIdx  DocsL2vpnIndex
    }

docsL2vpnId OBJECT-TYPE
    SYNTAX      DocsL2vpnIdentifier
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
            "An externally configured octet string that identifies an
            L2VPN."
    ::= { docsL2vpnIdToIndexEntry 1 }

docsL2vpnIdToIndexIdx OBJECT-TYPE
    SYNTAX      DocsL2vpnIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "An internally assigned index value for a known L2VPN."
    ::= { docsL2vpnIdToIndexEntry 2 }

----------------------------------------------------------------
--
-- L2VPN Index to L2VPN Identifier mapping tables
--
docsL2vpnIndexToIdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnIndexToIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Table indexed by agent's local docsL2vpnIdx that provides
            the global L2VPN Identifier. The mapping of docsL2vpnIdx to
            DocsL2vpnIdentifier is 1-1. The agent has to instantiate a 
            row in both docsL2vpnIndexToIdTable and 
            docsL2vpnIdToIndexTable for each known L2VPN."
    ::= { docsL2vpnMIBObjects 2 }

docsL2vpnIndexToIdEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnIndexToIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Provides the L2VPN Identifier for each locally-assigned 
            L2vpn Index."
    INDEX { docsL2vpnIdx }
    ::= { docsL2vpnIndexToIdTable 1 }

DocsL2vpnIndexToIdEntry ::= SEQUENCE
    {
        docsL2vpnIdx              DocsL2vpnIndex,
        docsL2vpnIndexToIdId      DocsL2vpnIdentifier
    }

docsL2vpnIdx OBJECT-TYPE
    SYNTAX      DocsL2vpnIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
            "An internally assigned index value for a known L2VPN."
    ::= { docsL2vpnIndexToIdEntry 1 }

docsL2vpnIndexToIdId OBJECT-TYPE
    SYNTAX      DocsL2vpnIdentifier
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "An administered octet string that externally identifies an
            L2VPN."
    ::= { docsL2vpnIndexToIdEntry 2 }

----------------------------------------------------------------------
--
-- L2VPN CM Table
--  Point-to-Point and Multipoint mode
--
docsL2vpnCmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnCmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table describes L2VPN per-CM information that
            is in common with all L2VPNs for the CM, regardless
            of forwarding mode."
    ::= { docsL2vpnMIBObjects 3 }

docsL2vpnCmEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnCmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry is indexed by Cable Modem Index that
            describes L2VPN information for a single CM that is in
            common with all L2VPNs implemented by the CM,
            regardless of the L2VPN forwarding mode.

            An entry in this table is created for every CM that 
            registers with a forwarding L2VPN encoding."
    INDEX { docsIfCmtsCmStatusIndex }
    ::= { docsL2vpnCmTable 1 }

DocsL2vpnCmEntry ::= SEQUENCE {
        docsL2vpnCmCompliantCapability      TruthValue,
        docsL2vpnCmDutFilteringCapability   TruthValue,
        docsL2vpnCmDutCMIM                  CpeInterfaceMaskType,
        docsL2vpnCmDhcpSnooping             CpeInterfaceMaskType
    }

docsL2vpnCmCompliantCapability OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "This object reports whether an L2VPN forwarding CM is
            compliant with the DOCSIS L2VPN specification, as reported
            in the L2VPN Capability encoding in the CM's registration
            request message.

            If the capability encoding was omitted, this object has to
            report the value false(2)."
    ::= { docsL2vpnCmEntry 1 }

docsL2vpnCmDutFilteringCapability OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "This object reports whether an L2VPN forwarding CM is
            capable of Downstream Unencrypted Traffic (DUT) Filtering,
            as reported in the CM's registration request message.

            If the capability encoding was omitted, this object has to
            report the value false(2)."
    ::= { docsL2vpnCmEntry 2 }

docsL2vpnCmDutCMIM OBJECT-TYPE
    SYNTAX      CpeInterfaceMaskType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "This object reports the value configured in a per-CM 
            L2VPN Encoding for Downstream Unencrypted Traffic (DUT)
            Cable Modem Interface Mask (CMIM). 

            The DUT CMIM is a bit string with a '1' for each bit 
            position K for an internal or external CM interface with 
            ifIndex K to which the CM permits DUT to be forwarded. A CM
            capable of DUT filtering MUST discard DUT to interfaces 
            with a '0' in the DUT CMIM. 

            If a CM's top-level registration request L2VPN Encoding
            contained no DUT CMIM subtype, this object is reported
            with its default value of a '1' in bit position 0 
            (corresponding to the eCM's own 'self' host) and a '1' in 
            each bit position K for which an eSAFE interface exists at
            ifIndex K. In other words, the default DUT CMIM includes 
            the eCM and all eSAFE interfaces.

            This value is reported independently of whether the CM is
            actually capable of performing DUT filtering."
    ::= { docsL2vpnCmEntry 3 }

docsL2vpnCmDhcpSnooping OBJECT-TYPE
    SYNTAX      CpeInterfaceMaskType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "This object reports the value of the Enable DHCP Snooping
            subtype of a top-level L2VPN Encoding. 

            It has the syntax of a CM Interface List bitmask and
            represents a set of CM MAC bridge interfaces 
            corresponding to eSAFE hosts for which the CMTS is enabled 
            to snoop DHCP traffic in order to learn the eSAFE host MAC
            address on that interface.  

            Only bits corresponding to eSAFE host MAC addresses may be
            validly set in this object, including cpe(1) for eRouter
            and the eSAFE interfaces in bits positions 16 through 31."
    ::= { docsL2vpnCmEntry 4 }

----------------------------------------------------------------------
--
-- L2VPN/CM Table
--  Point-to-Point and Multipoint mode
--

docsL2vpnVpnCmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnVpnCmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table describes the operation of L2VPN forwarding
            on each CM."
    ::= { docsL2vpnMIBObjects 4 }

docsL2vpnVpnCmEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnVpnCmEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry is indexed by VPN ID and Cable Modem Index that
            describes the operation of L2VPN forwarding for a single
            L2VPN on a single CM."
    INDEX { docsL2vpnIdx, docsIfCmtsCmStatusIndex }
    ::= { docsL2vpnVpnCmTable 1 }

DocsL2vpnVpnCmEntry ::= SEQUENCE {
        docsL2vpnVpnCmCMIM                CpeInterfaceMaskType,
        docsL2vpnVpnCmIndividualSAId      Integer32,
        docsL2vpnVpnCmVendorSpecific      OCTET STRING
    }

docsL2vpnVpnCmCMIM OBJECT-TYPE
    SYNTAX      CpeInterfaceMaskType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "A Cable Modem Interface Mask represents a set of 
            MAC bridge interfaces within the CM. This object
            represents the CMIM within a forwarding per-SF L2VPN 
            encoding, which specifies a set of CM MAC bridge 
            interfaces to which L2VPN forwarding is restricted.

            If the CMIM Subtype is omitted from a forwarding
            per-SF encoding, its default value includes only
            cpePrimary(1) and cableMac(2), which can be encoded
            with a single octet with the value 0x60."
    ::= { docsL2vpnVpnCmEntry 1 }

docsL2vpnVpnCmIndividualSAId OBJECT-TYPE
    SYNTAX      Integer32 (0..16383)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "The BPI+ Security Association ID in which traffic intended
            for point-to-point forwarding through an individual CM is 
            forwarded. 

            If the CMTS does not allocate an individual SAID for
            multipoint forwarding (as is recommended),it MUST 
            report this object as zero." 
    ::= { docsL2vpnVpnCmEntry 2 }

docsL2vpnVpnCmVendorSpecific OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object encodes the concatenation of all Vendor 
            Specific Subtype encodings that appeared in any 
            registration per-CM L2VPN Encoding associated with this 
            entry."
    ::= { docsL2vpnVpnCmEntry 3 }

----------------------------------------------------------------------
--
-- L2VPN/CM Statistics Table
--  Point-to-Point and Multipoint mode
--
docsL2vpnVpnCmStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnVpnCmStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains statistics for forwarding of 
            packets to and from a CM on each VPN."
    ::= { docsL2vpnMIBObjects 5 }

docsL2vpnVpnCmStatsEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnVpnCmStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry is indexed by VPN ID and Cable Modem Index."
    INDEX { docsL2vpnIdx, docsIfCmtsCmStatusIndex }
    ::= { docsL2vpnVpnCmStatsTable 1 }

DocsL2vpnVpnCmStatsEntry ::= SEQUENCE {
        docsL2vpnVpnCmStatsUpstreamPkts       Counter32,
        docsL2vpnVpnCmStatsUpstreamBytes      Counter32,
        docsL2vpnVpnCmStatsUpstreamDiscards   Counter32,
        docsL2vpnVpnCmStatsDownstreamPkts     Counter32,
        docsL2vpnVpnCmStatsDownstreamBytes    Counter32,
        docsL2vpnVpnCmStatsDownstreamDiscards Counter32
    }

docsL2vpnVpnCmStatsUpstreamPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2vpn-forwarded packets received
            from this instance's Cable Modem on
            this instance's L2VPN."
    ::= { docsL2vpnVpnCmStatsEntry 1 }

docsL2vpnVpnCmStatsUpstreamBytes OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2vpn-forwarded bytes received
            from this instance's Cable Modem on
            this instance's L2VPN."
    ::= { docsL2vpnVpnCmStatsEntry 2 }

docsL2vpnVpnCmStatsUpstreamDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded packets 
            discarded from this instance's 
            Cable Modem on this instance's VPN."
    ::= { docsL2vpnVpnCmStatsEntry 3 }

docsL2vpnVpnCmStatsDownstreamPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded packets
            transmitted to this instance's
            Cable Modem on this instance's VPN."
    ::= { docsL2vpnVpnCmStatsEntry 4 }

docsL2vpnVpnCmStatsDownstreamBytes OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded bytes
            transmitted to this instance's
            Cable Modem on this instance's VPN."
    ::= { docsL2vpnVpnCmStatsEntry 5 }

docsL2vpnVpnCmStatsDownstreamDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded packets that were discarded 
            before they could be transmitted to this instance's 
            Cable Modem on this instance's VPN."
    ::= { docsL2vpnVpnCmStatsEntry 6 }

----------------------------------------------------------------------
--
-- VPN Port Status Table
--  (Point-to-Point and Multipoint mode)
--
docsL2vpnPortStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnPortStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table displays summary information for the
            run-time state of each VPN that is currently operating 
            on each bridge port."
    ::= { docsL2vpnMIBObjects 6 }

docsL2vpnPortStatusEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnPortStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Information specific to the operation of L2VPN forwarding
            on a particular CMTS 'bridge port'. A CMTS 'bridge port' 
            may be defined by the CMTS vendor, but is advantageously a
            single DOCSIS MAC Domain."
    INDEX { dot1dBasePort, docsL2vpnIdx }
    ::= { docsL2vpnPortStatusTable 1 }

DocsL2vpnPortStatusEntry ::= SEQUENCE {
        docsL2vpnPortStatusGroupSAId   Integer32
    }

docsL2vpnPortStatusGroupSAId OBJECT-TYPE
    SYNTAX      Integer32 (0..16383)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "The Group SAID associated with this VPN on a 
            particular CMTS MAC domain. This SAID is used to encrypt
            all downstream flooded bridge traffic sent to CMs on 
            this VPN and CMTS MAC domain bridge port. 

            A value of '0' means there is no associated Group SAID for
            this VPN and bridge port, e.g., if the L2VPN uses
            point-to-point individual SAIDs only for forwarding.

            A bridge port that is not a CMTS MAC
            domain will report a value of '0'."
    ::= { docsL2vpnPortStatusEntry 1 }

----------------------------------------------------------------------
--
-- L2VPN Service Flow Status Table
--  (Point-to-Point and Multipoint mode)
--
-- This table has a row for each upstream SF with a per-SF L2VPN 
-- Encoding.
--

docsL2vpnSfStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnSfStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table displays SF-specific L2VPN forwarding status
            for each upstream service flow configured with a per-SF 
            L2VPN Encoding.

            Objects which were signaled in a per-SF L2VPN Encoding but
            apply for the entire CM are shown in the 
            docsL2vpnVpnCmTable."
    ::= { docsL2vpnMIBObjects 7 }

docsL2vpnSfStatusEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnSfStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "SF-specific L2VPN forwarding status information for each
            upstream service flow configured with a per-SF L2VPN 
            Encoding. The ifIndex is of type docsCableMacLayer(127)."
    INDEX { ifIndex, docsQosServiceFlowId }
    ::= { docsL2vpnSfStatusTable 1 }

DocsL2vpnSfStatusEntry ::= SEQUENCE {
        docsL2vpnSfStatusL2vpnId              OCTET STRING,
        docsL2vpnSfStatusUpstreamUserPriority  Unsigned32,
        docsL2vpnSfStatusVendorSpecific       OCTET STRING
    }

docsL2vpnSfStatusL2vpnId OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object represents the value of the L2VPN Identifier
            subtype of a per-SF L2VPN Encoding."
    ::= { docsL2vpnSfStatusEntry 1 }

docsL2vpnSfStatusUpstreamUserPriority OBJECT-TYPE
    SYNTAX      Unsigned32 (0..7)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides the configured Ingress User Priority
            subtype of a per-SF L2VPN Encoding for this CM. If the 
            subtype was omitted, this object's value is zero."
    ::= { docsL2vpnSfStatusEntry 2 }

docsL2vpnSfStatusVendorSpecific OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides the set of configured Vendor Specific
            subtypes within a per-SF L2VPN Encoding for a CM. If no 
            Vendor Specific subtype was specified, this object is a 
            zero length octet string. If one or more Vendor Specific 
            subtype parameters was specified, this object represents 
            the concatenation of all such subtypes."
    ::= { docsL2vpnSfStatusEntry 3 }

----------------------------------------------------------------------
--
-- L2VPN Classifier Table
--  (Point-to-Point and Multipoint mode)
--

docsL2vpnPktClassTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnPktClassEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table provides the L2VPN-specific objects for
            packet classifiers that apply to only L2VPN traffic. 
            The indices of this table are a subset of the
            indices of classifiers in docsQosPktClassTable."
    ::= { docsL2vpnMIBObjects 8 }

docsL2vpnPktClassEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnPktClassEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in this table extends a single row
            of docsQosPktClassTable for a rule that applies only to
            downstream L2VPN forwarded packets.
            The index ifIndex is an ifType of docsCableMaclayer(127)."
    INDEX {
        ifIndex,
        docsQosServiceFlowId,
        docsQosPktClassId
    }
    ::= { docsL2vpnPktClassTable 1 }

DocsL2vpnPktClassEntry ::= SEQUENCE {
        docsL2vpnPktClassL2vpnIdx           DocsL2vpnIndex,
        docsL2vpnPktClassUserPriRangeLow   Unsigned32,
        docsL2vpnPktClassUserPriRangeHigh  Unsigned32,
        docsL2vpnPktClassCMIM              CpeInterfaceMaskType,
        docsL2vpnPktClassVendorSpecific    OCTET STRING
    }

docsL2vpnPktClassL2vpnIdx OBJECT-TYPE
    SYNTAX      DocsL2vpnIndex 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The locally assigned L2VPN index corresponding to the VPN
            Identifier subtype of a Downstream Classifier L2VPN 
            Encoding."
    ::= { docsL2vpnPktClassEntry 1 }

docsL2vpnPktClassUserPriRangeLow OBJECT-TYPE
    SYNTAX      Unsigned32 (0..7)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The lower priority of the user Priority Range subtype
            of a Downstream Classifier L2VPN Encoding. If the subtype
            was omitted, this object has value 0."
    ::= { docsL2vpnPktClassEntry 2 }

docsL2vpnPktClassUserPriRangeHigh OBJECT-TYPE
    SYNTAX      Unsigned32 (0..7)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The higher priority of the user Priority Range subtype
            of a Downstream Classifier L2VPN Encoding. If the subtype
            was omitted, this object has value 7."
    ::= { docsL2vpnPktClassEntry 3 }

docsL2vpnPktClassCMIM OBJECT-TYPE
    SYNTAX      CpeInterfaceMaskType 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The Cable Modem Interface Mask (CMIM) signaled in a 
            Packet Classifier Encoding. In a Downstream Packet 
            Classifier Encoding, a specified CMIM value restricts the 
            classifier to match packets with a Destination MAC address
            corresponding to the interfaces indicated in the CMIM mask.
            The eCM self and any eSAFE interface bits correspond to
            the individual eCM and eSAFE host MAC addresses.

            In an Upstream Packet Classifier encoding, a specified CMIM
            value restricts the classifier to match packets with an 
            ingress bridge port interface matching the bits in the 
            CMIM value.

            If the CMIM subtype was omitted, this object should be 
            reported as a zero length octet string."
    ::= { docsL2vpnPktClassEntry 4 }

docsL2vpnPktClassVendorSpecific OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object provides the set of configured 
            Vendor Specific subtypes within a Packet Classifier 
            Encoding for a CM. If no Vendor Specific subtype was 
            specified, this object is a zero length octet string. 
            If one or more Vendor Specific subtype parameters was 
            specified, this object represents the concatenation of all
            such subtypes."
    ::= { docsL2vpnPktClassEntry 5 }

----------------------------------------------------------------------
--
-- L2VPN CM NSI Table
--  Point-to-Point Only
--
docsL2vpnCmNsiTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnCmNsiEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table describes the NSI configuration for a single
            CM when operating in point-to-point forwarding mode for an
            L2VPN."
    ::= { docsL2vpnMIBObjects 9 }

docsL2vpnCmNsiEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnCmNsiEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry indexed by VPN ID and Cable Modem Index that
            describes the point-to-point forwarding between a single
            NSI encapsulation and a single CM. This table is 
            implemented only for a CM forwarding an L2VPN on a 
            point-to-point basis. It is associated with a single 
            per-CM L2VPN encoding."
    INDEX { docsL2vpnIdx, docsIfCmtsCmStatusIndex }
    ::= { docsL2vpnCmNsiTable 1 }

DocsL2vpnCmNsiEntry ::= SEQUENCE {
        docsL2vpnCmNsiEncapSubtype        DocsNsiEncapSubtype,
        docsL2vpnCmNsiEncapValue          DocsNsiEncapValue,
        docsL2vpnCmNsiAGI                 OCTET STRING,
        docsL2vpnCmNsiSAII                OCTET STRING,
        docsL2vpnCmNsiTAII                OCTET STRING,
 docsL2vpnCmNsiMode                DocsNsiModeSubtype,
        docsL2vpnCmNsiTpidTransDS         Integer32,
        docsL2vpnCmNsiTpidTransUS         Integer32
    }

docsL2vpnCmNsiEncapSubtype OBJECT-TYPE
    SYNTAX      DocsNsiEncapSubtype
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "The General Encapsulation Information (GEI) subtype of the
            Network System Interface (NSI) encapsulation configured
            for the CM."
    ::= { docsL2vpnCmNsiEntry 1 }

docsL2vpnCmNsiEncapValue OBJECT-TYPE
    SYNTAX      DocsNsiEncapValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
            "The encapsulation value for L2VPN forwarded packets on NSI
            ports."
    ::= { docsL2vpnCmNsiEntry 2 }

docsL2vpnCmNsiAGI OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object is the configuration of any Attachment Group 
            Identifier subtype in the per-SF L2VPN Encoding 
            represented by this row. If the subtype was omitted, this 
            object's value is a zero length string."
   ::= { docsL2vpnCmNsiEntry 3 }

docsL2vpnCmNsiSAII OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object is the configuration of any Source 
            Attachment Individual ID subtype in the L2VPN Encoding 
            represented by this row. If the subtype was omitted, this
            object's value is a zero length string."
    ::= { docsL2vpnCmNsiEntry 4 }

docsL2vpnCmNsiTAII OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object is the configuration of any Target
            Attachment Individual ID subtype in the L2VPN Encoding
            represented by this row. If the subtype was omitted, this
            object's value is a zero length string."
    ::= { docsL2vpnCmNsiEntry 5 }

docsL2vpnCmNsiMode OBJECT-TYPE
    SYNTAX      DocsNsiModeSubtype
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object indicates L2VPN Mode, which can be Encapsulation Mode
            or Transport Mode.
            This Mode is configured using TLV 43.5.13.
            In the L2VPN Encapsulation Mode IEEE 802.1Q S-VLAN tagging
            or IEEE 802.1Q encapsulation 
            is added to upstream frames according to operator provisioning. 
            L2VPN Transport Mode is used to forward traffic that belongs
            to a particular EPL service instance without
            adding extra encapsulations or 
            tagging or removing existing ones."
    ::= { docsL2vpnCmNsiEntry 6 }

docsL2vpnCmNsiTpidTransDS OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object is the configuration of the TPID used
            in the Downstream Direction (DS) to translate
            the TPID of the frame.
            Value of 0 indicates that no TPID translation is required in the
            Downstream Direction."
    ::= { docsL2vpnCmNsiEntry 7 }


docsL2vpnCmNsiTpidTransUS OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "This object is the configuration of the TPID used
            in the Upstream Direction (US) by to translate
            the TPID of the frame.
            Value of 0 indicates that no TPID translation is required in the
            Upstream Direction."
    ::= { docsL2vpnCmNsiEntry 8 }

----------------------------------------------------------------------
--
-- Point-to-Multipoint Only
-- 
-- The following objects are required for Point-to-Multipoint
-- operation only.
--
----------------------------------------------------------------------
--
-- Cable Modem/Vpn/CPE Table 
--  (Point-to-Multipoint only)
--

docsL2vpnCmVpnCpeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnCmVpnCpeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table is a list of CPEs, indexed by the VPNs on a 
            Cable Modem."
    ::= { docsL2vpnMIBObjects 10 }

docsL2vpnCmVpnCpeEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnCmVpnCpeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
            "This table is a list of CPEs, indexed by the VPNs on a 
            Cable Modem."
    INDEX { docsIfCmtsCmStatusIndex, 
        docsL2vpnIdx, 
        docsL2vpnCmVpnCpeMacAddress }
    ::= { docsL2vpnCmVpnCpeTable 1 }

DocsL2vpnCmVpnCpeEntry ::= SEQUENCE {
        docsL2vpnCmVpnCpeMacAddress   MacAddress
    }

docsL2vpnCmVpnCpeMacAddress OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The Customer Premise Equipment (CPE) Mac Address
            that is attached to this instance's Cable Modem
            and bridging on this instance's VPN Id."
    ::= { docsL2vpnCmVpnCpeEntry 1 }

--------------------------------------------------------------------
--
-- VPN/Cable Modem/CPE Table
--  (Point-to-Multipoint only)
--
docsL2vpnVpnCmCpeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnVpnCmCpeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
            "This table contains a list of bridging CPEs, indexed by
            L2VPN Index and the corresponding CMs on that VPN."
    ::= { docsL2vpnMIBObjects 11 }

docsL2vpnVpnCmCpeEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnVpnCmCpeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
            "This table contains a list of bridging CPEs, indexed by
            VPN and the corresponding CMs on that VPN."
    INDEX  { docsL2vpnIdx,
        docsIfCmtsCmStatusIndex,
        docsL2vpnVpnCmCpeMacAddress }
    ::= { docsL2vpnVpnCmCpeTable 1 }

DocsL2vpnVpnCmCpeEntry ::= SEQUENCE {
        docsL2vpnVpnCmCpeMacAddress   MacAddress
    }

docsL2vpnVpnCmCpeMacAddress OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The Customer Premise Equipment (CPE) Mac Address
            that is attached to this instance's Cable Modem
            and bridging on this instance's L2vpn Index."
    ::= { docsL2vpnVpnCmCpeEntry 1 }

--------------------------------------------------------------------
--
-- dot1qTpFdbTable Extension
--  (Point-to-Multipoint only)
--
docsL2vpnDot1qTpFdbExtTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnDot1qTpFdbExtEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains packet counters for 
            Unicast MAC Addresses within a VPN."
    ::= { docsL2vpnMIBObjects 12 }

docsL2vpnDot1qTpFdbExtEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnDot1qTpFdbExtEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table extends the dot1qTpFdbTable only for RF network
            bridge port entries. It is implemented by an agent only
            if the agent implements dot1qTpFdbTable for RF network
            bridge ports."
    INDEX { dot1qFdbId, dot1qTpFdbAddress }
    ::= { docsL2vpnDot1qTpFdbExtTable 1 }

DocsL2vpnDot1qTpFdbExtEntry ::= SEQUENCE {
        docsL2vpnDot1qTpFdbExtTransmitPkts    Counter32,
        docsL2vpnDot1qTpFdbExtReceivePkts     Counter32
    }

docsL2vpnDot1qTpFdbExtTransmitPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets where the Destination 
            MAC Address matched this instance 
            dot1qTpFdbAddress and packet was bridged on
            a VPN, where the VPN ID matched this 
            instance's dot1qFdbId."
    ::= { docsL2vpnDot1qTpFdbExtEntry 1 }

docsL2vpnDot1qTpFdbExtReceivePkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets where the Source MAC 
            Address matched this instance dot1qTpFdbAddress
            and the packet was bridged on a VPN,
            where the docsL2vpnIdx matched this instance's 
            dot1qFdbId." 
    ::= { docsL2vpnDot1qTpFdbExtEntry 2 }

--------------------------------------------------------------------
--
-- dot1qTpGroupTable Extension
--  (Point-to-multipoint only)
--
docsL2vpnDot1qTpGroupExtTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnDot1qTpGroupExtEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains packet counters for 
            Multicast MAC Addresses within a VPN."
    ::= { docsL2vpnMIBObjects 13 }

docsL2vpnDot1qTpGroupExtEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnDot1qTpGroupExtEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table extends the dot1qTpGroupTable only for RF 
            Network bridge port entries. It is implemented by an agent
            Only if the agent implements dot1qTpGroupTable for RF 
            network bridge ports."
    INDEX { dot1qVlanIndex, dot1qTpGroupAddress }
    ::= { docsL2vpnDot1qTpGroupExtTable 1 }

DocsL2vpnDot1qTpGroupExtEntry ::= SEQUENCE {
        docsL2vpnDot1qTpGroupExtTransmitPkts    Counter32,
        docsL2vpnDot1qTpGroupExtReceivePkts     Counter32
    }

docsL2vpnDot1qTpGroupExtTransmitPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets where the Destination 
            MAC Address matched this instance 
            dot1qTpGroupAddress and packet was bridged on
            a VPN, where the docsL2vpnIdx matched this 
            instance's dot1qVlanIndex."
    ::= { docsL2vpnDot1qTpGroupExtEntry 1 }

docsL2vpnDot1qTpGroupExtReceivePkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets where the Source MAC 
            Address matched this instance dot1qTpGroupAddress
            and the packet was bridged on a VPN,
            where the docsL2vpnIdx matched this instance's 
            dot1qVlanIndex." 
    ::= { docsL2vpnDot1qTpGroupExtEntry 2 }


----------------------------------------------------------------------
--
-- L2VPN/SF Statistics Table
--  Point-to-Point and Multipoint mode
--
docsL2vpnVpnSfStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DocsL2vpnVpnSfStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This table contains statistics for forwarding of 
            packets on each VPN Service Flow."
    ::= { docsL2vpnMIBObjects 14 }

docsL2vpnVpnSfStatsEntry OBJECT-TYPE
    SYNTAX      DocsL2vpnVpnSfStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry is indexed by ifIndex of the CMTS MAC interface
	    and Service Flow Index. The ifIndex is of type 
	    docsCableMacLayer(127)"
    INDEX { docsL2vpnIdx, docsQosServiceFlowId }
    ::= { docsL2vpnVpnSfStatsTable 1 }

DocsL2vpnVpnSfStatsEntry ::= SEQUENCE {
        docsL2vpnVpnSfStatsUpstreamPkts       Counter32,
        docsL2vpnVpnSfStatsUpstreamBytes      Counter32,
        docsL2vpnVpnSfStatsUpstreamDiscards   Counter32,
        docsL2vpnVpnSfStatsDownstreamPkts     Counter32,
        docsL2vpnVpnSfStatsDownstreamBytes    Counter32,
        docsL2vpnVpnSfStatsDownstreamDiscards Counter32
    }

docsL2vpnVpnSfStatsUpstreamPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2vpn-forwarded packets received
            from this instance's Service Flow on
            this instance's L2VPN."
    ::= { docsL2vpnVpnSfStatsEntry 1 }

docsL2vpnVpnSfStatsUpstreamBytes OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2vpn-forwarded bytes received
            from this instance's Service Flow on
            this instance's L2VPN."
    ::= { docsL2vpnVpnSfStatsEntry 2 }

docsL2vpnVpnSfStatsUpstreamDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded packets 
            discarded from this instance's 
            Service Flow on this instance's VPN."
    ::= { docsL2vpnVpnSfStatsEntry 3 }

docsL2vpnVpnSfStatsDownstreamPkts OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded packets
            transmitted to this instance's
            Service Flow on this instance's VPN."
    ::= { docsL2vpnVpnSfStatsEntry 4 }

docsL2vpnVpnSfStatsDownstreamBytes OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded bytes
            transmitted to this instance's
            Service Flow on this instance's VPN."
    ::= { docsL2vpnVpnSfStatsEntry 5 }

docsL2vpnVpnSfStatsDownstreamDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of L2-forwarded packets that were discarded 
            before they could be transmitted to this instance's 
            Service Flow on this instance's VPN."
    ::= { docsL2vpnVpnSfStatsEntry 6 }

----------------------------------------------------------------------

--
-- Conformance definitions
--
docsL2vpnConformance  OBJECT IDENTIFIER ::= { docsL2vpnMIB 2 }
docsL2vpnCompliances  OBJECT IDENTIFIER ::= { docsL2vpnConformance 1 }
docsL2vpnGroups       OBJECT IDENTIFIER ::= { docsL2vpnConformance 2 }

docsL2vpnCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
            "The compliance statement for the Cable Modem Termination 
            Systems that implement the DOCSIS L2VPN Feature."

    MODULE    -- docsL2vpn
      -- conditionally mandatory groups
    GROUP docsL2vpnBaseGroup
    DESCRIPTION
            "Mandatory in all CMTSs."

    GROUP docsL2vpnPointToPointGroup
    DESCRIPTION
            "Mandatory in all CMTSs that implement point-to-point L2VPN
            forwarding."

    GROUP docsL2vpnMultipointGroup
    DESCRIPTION
            "Mandatory in all CMTSs that implement Multipoint 
            L2VPN Forwarding Mode for any L2VPN."

    ::= { docsL2vpnCompliances 1 }

docsL2vpnBaseGroup OBJECT-GROUP
    OBJECTS {
        docsL2vpnIdToIndexIdx,
        docsL2vpnIndexToIdId,

        docsL2vpnCmCompliantCapability,
        docsL2vpnCmDutFilteringCapability,
        docsL2vpnCmDutCMIM,
        docsL2vpnCmDhcpSnooping,

        docsL2vpnVpnCmCMIM,
        docsL2vpnVpnCmVendorSpecific,
        docsL2vpnVpnCmIndividualSAId,

        docsL2vpnVpnCmStatsUpstreamPkts,
        docsL2vpnVpnCmStatsUpstreamBytes,
        docsL2vpnVpnCmStatsUpstreamDiscards,
        docsL2vpnVpnCmStatsDownstreamPkts,
        docsL2vpnVpnCmStatsDownstreamBytes,
        docsL2vpnVpnCmStatsDownstreamDiscards,

        docsL2vpnPortStatusGroupSAId,

        docsL2vpnSfStatusL2vpnId,
        docsL2vpnSfStatusUpstreamUserPriority,
        docsL2vpnSfStatusVendorSpecific,

        docsL2vpnPktClassL2vpnIdx, 
        docsL2vpnPktClassUserPriRangeLow,
        docsL2vpnPktClassUserPriRangeHigh,
        docsL2vpnPktClassCMIM,
        docsL2vpnPktClassVendorSpecific,

        docsL2vpnVpnSfStatsUpstreamPkts,
        docsL2vpnVpnSfStatsUpstreamBytes,
        docsL2vpnVpnSfStatsUpstreamDiscards,
        docsL2vpnVpnSfStatsDownstreamPkts,
        docsL2vpnVpnSfStatsDownstreamBytes,
        docsL2vpnVpnSfStatsDownstreamDiscards

    }
    STATUS      current
    DESCRIPTION
            "A collection of objects in common for both 
            Point-to-Point and Multipoint L2VPN forwarding
            Modes."
    ::= { docsL2vpnGroups 1 }

docsL2vpnPointToPointGroup OBJECT-GROUP
    OBJECTS {
        docsL2vpnCmNsiEncapSubtype,
        docsL2vpnCmNsiEncapValue,
        docsL2vpnCmNsiAGI,
        docsL2vpnCmNsiSAII,
        docsL2vpnCmNsiTAII,
 docsL2vpnCmNsiMode,
        docsL2vpnCmNsiTpidTransDS,
        docsL2vpnCmNsiTpidTransUS

    }
    STATUS      current
    DESCRIPTION
            "A collection of objects in common for only the
            Point-to-Point forwarding mode."
    ::= { docsL2vpnGroups 2 }

docsL2vpnMultipointGroup OBJECT-GROUP
    OBJECTS {
        docsL2vpnCmVpnCpeMacAddress,

        docsL2vpnVpnCmCpeMacAddress,

        docsL2vpnDot1qTpFdbExtTransmitPkts,
        docsL2vpnDot1qTpFdbExtReceivePkts,

        docsL2vpnDot1qTpGroupExtTransmitPkts,
        docsL2vpnDot1qTpGroupExtReceivePkts
    }
    STATUS      current
    DESCRIPTION
            "A collection of objects required only for Multipoint
            forwarding mode."
    ::= { docsL2vpnGroups 3 }
END
