VPLS-GENERIC-MIB DEFINITIONS ::= BEGIN

IMPORTS

NOTIFICATION-TYPE, MODULE-IDENTITY, OBJECT-TYPE,
Unsigned32, Counter32, transmission
   FROM SNMPv2-SMI                    -- RFC 2578

MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
   FROM SNMPv2-CONF                   -- RFC 2580

TruthValue, RowStatus, StorageType, TEXTUAL-CONVENTION
   FROM SNMPv2-TC                     -- RFC 2579

SnmpAdminString
   FROM SNMP-FRAMEWORK-MIB            -- RFC 3411

pwIndex
   FROM PW-STD-MIB                    -- RFC 5601

VPNIdOrZero
   FROM VPN-TC-STD-MIB                -- RFC 4265

;

vplsGenericMIB MODULE-IDENTITY
   LAST-UPDATED "201405191200Z"  -- 19 May 2014 12:00:00 GMT
   ORGANIZATION "Layer 2 Virtual Private Networks (L2VPN)
                              Working Group"
   CONTACT-INFO
       "
        Thomas D. Nadeau
        Email:  tnadeau@lucidvison.com

        The L2VPN Working Group (email distribution l2vpn@ietf.org,
        http://www.ietf.org/wg/l2vpn/charter)
        "
 DESCRIPTION
       "Copyright (c) 2014 IETF Trust and the persons
        identified as authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with
        or without modification, is permitted pursuant to, and
        subject to the license terms contained in, the Simplified
        BSD License set forth in Section 4.c of the IETF Trust's
        Legal Provisions Relating to IETF Documents
        (http://trustee.ietf.org/license-info).

        The initial version of this MIB module was published in
        RFC 7257; for full legal notices see the RFC itself.

        This MIB module contains generic managed object definitions
        for Virtual Private LAN Service as defined in RFC 4761 and
        RFC 4762.

        This MIB module enables the use of any underlying pseudowire
        network."

   -- Revision history.
  REVISION
      "201405191200Z"  -- 19 May 2014 12:00:00 GMT
  DESCRIPTION "Initial version published as part of RFC 7257."
     ::= { transmission 274 }

VplsBgpRouteDistinguisher ::= TEXTUAL-CONVENTION
  STATUS        current
  DESCRIPTION
      "Syntax for a route distinguisher that matches the
       definition in RFC 4364.  For a complete
       definition of a route distinguisher, see RFC 4364.
       For more details on use of a route distinguisher
       for a VPLS service, see RFC 4761."
  REFERENCE
      "RFC 4364"
  SYNTAX       OCTET STRING(SIZE (0..256))

VplsBgpRouteTarget ::= TEXTUAL-CONVENTION
   STATUS        current
   DESCRIPTION
       "Syntax for a Route Target that matches the
        definition in RFC 4364.  For a complete
        definition of a Route Target, see RFC 4364."
   REFERENCE
       "RFC 4364"
   SYNTAX       OCTET STRING(SIZE (0..256))

VplsBgpRouteTargetType ::= TEXTUAL-CONVENTION
   STATUS        current
   DESCRIPTION
    "Used to define the type of a Route Target usage.
     Route Targets can be specified to be imported,
     exported, or both.  For a complete definition of a
     Route Target, see RFC 4364."
   REFERENCE
     "RFC 4364"
   SYNTAX         INTEGER { import(1), export(2), both(3) }

-- Top-level components of this MIB.

-- Notifications
vplsNotifications OBJECT IDENTIFIER
                              ::= { vplsGenericMIB 0 }
-- Tables, Scalars
vplsObjects       OBJECT IDENTIFIER
                              ::= { vplsGenericMIB 1 }
-- Conformance
vplsConformance   OBJECT IDENTIFIER
                              ::= { vplsGenericMIB 2 }

-- PW Virtual Connection Table

vplsConfigIndexNext OBJECT-TYPE
   SYNTAX            Unsigned32
   MAX-ACCESS        read-only
   STATUS            current
   DESCRIPTION
       "This object contains an appropriate value to be used
        for vplsConfigIndex when creating entries in the
        vplsConfigTable.  The value 0 indicates that no
        unassigned entries are available.  To obtain the
        value of vplsConfigIndex for a new entry in the
        vplsConfigTable, the manager issues a management
        protocol retrieval operation to obtain the current
        value of vplsConfigIndex.  After each retrieval
        operation, the agent should modify the value to
        reflect the next unassigned index.  After a manager
        retrieves a value the agent will determine through
        its local policy when this index value will be made
        available for reuse."
   ::= { vplsObjects 1 }

   vplsConfigTable OBJECT-TYPE
       SYNTAX          SEQUENCE OF VplsConfigEntry
       MAX-ACCESS      not-accessible
       STATUS          current
       DESCRIPTION
            "This table specifies information for configuring
             and monitoring Virtual Private LAN Service (VPLS).
             "
       ::= { vplsObjects 2 }

   vplsConfigEntry OBJECT-TYPE
       SYNTAX          VplsConfigEntry
       MAX-ACCESS      not-accessible
       STATUS          current
       DESCRIPTION
        "A row in this table represents a Virtual Private LAN
         Service (VPLS) in a packet network.  It is indexed by
         vplsConfigIndex, which uniquely identifies a single VPLS.

         A row is created via SNMP or by the agent if a
         VPLS service is created by a non-SNMP application or
         due to the Auto-Discovery process.

         All of the read-create objects values except
         vplsConfigSignalingType can be changed when
         vplsConfigRowStatus is in the active(1)
         state.  Changes for vplsConfigSignalingType are only
         allowed when the vplsConfigRowStatus is in
         notInService(2) or notReady(3) states.
         "
       INDEX           { vplsConfigIndex }
       ::= { vplsConfigTable 1 }

  VplsConfigEntry ::=
     SEQUENCE {
      vplsConfigIndex                               Unsigned32,
      vplsConfigName                                SnmpAdminString,
      vplsConfigDescr                               SnmpAdminString,
      vplsConfigAdminStatus                         INTEGER,
      vplsConfigMacLearning                         TruthValue,
      vplsConfigDiscardUnknownDest                  TruthValue,
      vplsConfigMacAging                            TruthValue,
      vplsConfigFwdFullHighWatermark                Unsigned32,
      vplsConfigFwdFullLowWatermark                 Unsigned32,
      vplsConfigRowStatus                           RowStatus,
      vplsConfigMtu                                 Unsigned32,
      vplsConfigVpnId                               VPNIdOrZero,
      vplsConfigStorageType                         StorageType,
      vplsConfigSignalingType                       INTEGER

       }

   vplsConfigIndex  OBJECT-TYPE
       SYNTAX          Unsigned32 (1..2147483647)
       MAX-ACCESS      not-accessible
       STATUS          current
       DESCRIPTION
            "Unique index for the conceptual row identifying
             a VPLS service."
       ::= { vplsConfigEntry 1 }

   vplsConfigName  OBJECT-TYPE
       SYNTAX          SnmpAdminString
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "A textual name of the VPLS.
             If there is no local name, or this object is
             otherwise not applicable, then this object MUST
             contain a zero-length octet string."
       DEFVAL           { "" }
       ::= { vplsConfigEntry 2 }

   vplsConfigDescr  OBJECT-TYPE
       SYNTAX          SnmpAdminString
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "A textual string containing information about the
            VPLS service.  If there is no information for this VPLS
            service, then this object MUST contain a zero-length
            octet string."
       DEFVAL           { "" }
       ::= { vplsConfigEntry 3 }

   vplsConfigAdminStatus OBJECT-TYPE
       SYNTAX          INTEGER {
                           up(1),
                           down(2),
                           testing(3)   -- in some test mode

                       }
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "The desired administrative state of the VPLS
             service.  If the administrative status of the
             VPLS service is changed to enabled, then this

             service is able to utilize pseudowires to
             perform the tasks of a VPLS service.
             The testing(3) state indicates that no operational
             packets can be passed."
       DEFVAL           { down }
       ::= { vplsConfigEntry 4 }

   vplsConfigMacLearning OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "This object specifies if MAC Learning is enabled
             in this service.  If this object is true then MAC
             Learning is enabled.  If false, then MAC Learning is
             disabled."
       DEFVAL          { true }
       ::= { vplsConfigEntry 6 }

   vplsConfigDiscardUnknownDest OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "If the value of this object is 'true', then frames
             received with an unknown destination MAC are discarded
             in this VPLS.  If 'false', then the packets are
             processed."
       DEFVAL          { false }
       ::= { vplsConfigEntry 7 }

   vplsConfigMacAging OBJECT-TYPE
       SYNTAX          TruthValue
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "If the value of this object is 'true',
             then the MAC aging process is enabled in
             this VPLS.  If 'false', then the MAC aging process
             is disabled."
       DEFVAL          { true }
       ::= { vplsConfigEntry 8 }

   vplsConfigFwdFullHighWatermark OBJECT-TYPE
       SYNTAX          Unsigned32 (0..100)
       UNITS           "percentage"
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "This object specifies the utilization of the
             forwarding database for this VPLS instance at
             which the vplsFwdFullAlarmRaised notification
             will be sent.  The value of this object must
             be higher than vplsConfigFwdFullLowWatermark."
       DEFVAL          { 95 }
       ::= { vplsConfigEntry 10 }

   vplsConfigFwdFullLowWatermark OBJECT-TYPE
       SYNTAX          Unsigned32 (0..99)
       UNITS           "percentage"
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "This object specifies the utilization of the
             forwarding database for this VPLS instance
             at which the vplsFwdFullAlarmCleared
             notification will be sent.  The value of this
             object must be less than
             vplsConfigFwdFullHighWatermark."
       DEFVAL          { 90 }
       ::= { vplsConfigEntry 11 }

   vplsConfigRowStatus OBJECT-TYPE
       SYNTAX          RowStatus
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "For creating, modifying, and deleting this row.

             All other objects in this row must be set to valid
             values before this object can be set to active(1).

             None of the read-create objects in the
             conceptual rows may be changed when this
             object is in the active(1) state.

             If this object is set to destroy(6) or deleted by the
             agent, all associated entries in the vplsPwBindTable,
             vplsBgpRteTargetTable, and vplsBgpVETable shall be
             deleted."
       ::= { vplsConfigEntry 12 }

   vplsConfigMtu OBJECT-TYPE
       SYNTAX          Unsigned32 (64..9192)
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "The value of this object specifies the MTU of this
             VPLS instance.  This can be used to limit the MTU to a
             value lower than the MTU supported by the associated
             pseudowires."
       DEFVAL          { 1518 }
       ::= { vplsConfigEntry 13 }

   vplsConfigVpnId OBJECT-TYPE
       SYNTAX          VPNIdOrZero
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "This objects indicates the IEEE 802-1990
             VPN ID of the associated VPLS service."
       ::= { vplsConfigEntry 14 }

   vplsConfigStorageType OBJECT-TYPE
       SYNTAX        StorageType
       MAX-ACCESS    read-create
       STATUS        current
       DESCRIPTION
            "This variable indicates the storage type for this row."
       DEFVAL { nonVolatile }
       ::= { vplsConfigEntry 15 }

   vplsConfigSignalingType OBJECT-TYPE
       SYNTAX          INTEGER {
                           ldp(1),
                           bgp(2),
                           none(3)

                       }
       MAX-ACCESS      read-create
       STATUS          current
       DESCRIPTION
            "Desired signaling type of the VPLS service.

            If the value of this object is ldp(1), then a
            corresponding entry in vplsLdpConfigTable is required.

            If the value of this object is bgp(2), then a
            corresponding entry in vplsBgpConfigTable is required.

            If the value of this object is none(3), then it
            indicates a static configuration of PW labels."
       DEFVAL           { none }
       ::= { vplsConfigEntry 16 }

-- VPLS Status table

vplsStatusTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF VplsStatusEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
          "This table provides information for monitoring
          Virtual Private LAN Service (VPLS).
          "
    ::= { vplsObjects 3 }

vplsStatusEntry OBJECT-TYPE
    SYNTAX          VplsStatusEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
     "A row in this table represents a Virtual Private LAN
      Service (VPLS) in a packet network.  It is indexed by
      vplsConfigIndex, which uniquely identifies a single VPLS.

      A row in this table is automatically created by the agent
      when a VPLS service is first set to active.
      "
    AUGMENTS           { vplsConfigEntry }
    ::= { vplsStatusTable 1 }

VplsStatusEntry ::=
   SEQUENCE {
    vplsStatusOperStatus                        INTEGER,
    vplsStatusPeerCount                         Counter32
     }

 vplsStatusOperStatus OBJECT-TYPE
     SYNTAX          INTEGER {
                         other(0),
                         up(1),
                         down(2)
                     }
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
          "The current operational state of this VPLS service."
     ::= { vplsStatusEntry 1 }

 vplsStatusPeerCount OBJECT-TYPE
     SYNTAX          Counter32
     MAX-ACCESS      read-only
     STATUS          current
     DESCRIPTION
          "This objects specifies the number of peers
           (pseudowires) present in this VPLS instance."
     ::= { vplsStatusEntry 2 }

 -- VPLS PW Binding Table

 vplsPwBindTable  OBJECT-TYPE
     SYNTAX          SEQUENCE OF VplsPwBindEntry
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
          "This table provides an association between a
           VPLS service and the corresponding pseudowires.
           A service can have more than one pseudowire
           association.  Pseudowires are defined in
           the pwTable"
     ::= { vplsObjects 4 }

 vplsPwBindEntry OBJECT-TYPE
     SYNTAX          VplsPwBindEntry
     MAX-ACCESS      not-accessible
     STATUS          current
     DESCRIPTION
          "Each row represents an association between a
           VPLS instance and a pseudowire
           defined in the pwTable.  Each index is unique
           in describing an entry in this table.  However,
           both indexes are required to define the one
           to many association of service to
           pseudowire.

           Entries in this table may be created or deleted
           through SNMP, as side effects of console or other
           non-SNMP management commands, or upon learning via
           autodiscovery.

           It is optional for the agent to allow entries to be
           created that point to nonexistent entries in
           vplsConfigTable."
     INDEX  { vplsConfigIndex, pwIndex }
     ::= { vplsPwBindTable 1 }

 VplsPwBindEntry ::=
     SEQUENCE {

         vplsPwBindConfigType              INTEGER,
         vplsPwBindType                  INTEGER,
         vplsPwBindRowStatus             RowStatus,
         vplsPwBindStorageType             StorageType
     }

 vplsPwBindConfigType   OBJECT-TYPE
      SYNTAX          INTEGER {
                              manual        (1),
                              autodiscovery (2)
                      }
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
           "The value of this object indicates
            whether the pseudowire Binding was created
            via SNMP/Console or via Auto-Discovery.

            The value of this object must be
            specified when the row is created and cannot
            be changed while the row status is active(1)"
     ::= { vplsPwBindEntry 1 }

 vplsPwBindType   OBJECT-TYPE
      SYNTAX          INTEGER {
                              mesh  (1),
                              spoke (2)
                      }
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
           "The value of this object indicates
            whether the pseudowire Binding is of
            type mesh or spoke.

            The value of this object must be
            specified when the row is created and cannot
            be changed while the row status is active(1)"
     ::= { vplsPwBindEntry 2 }

 vplsPwBindRowStatus  OBJECT-TYPE
      SYNTAX          RowStatus
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
           "For creating, modifying, and deleting this row.

            All other objects in this row must be set to valid

            values before this object can be set to active(1).

            None of the read-create objects in the
            conceptual rows may be changed when this
            object is in the active(1) state.

            If autodiscovered entries are deleted they would
            likely re-appear in the next autodiscovery interval."
     ::= { vplsPwBindEntry 3 }

 vplsPwBindStorageType OBJECT-TYPE
      SYNTAX        StorageType
      MAX-ACCESS    read-create
      STATUS        current
      DESCRIPTION
          "This variable indicates the storage type for this row."
      DEFVAL { volatile }
      ::= { vplsPwBindEntry 4 }

-- vplsBgpADConfigTable

vplsBgpADConfigTable OBJECT-TYPE
      SYNTAX          SEQUENCE OF VplsBgpADConfigEntry
      MAX-ACCESS      not-accessible
      STATUS          current
      DESCRIPTION
      "This table specifies information for configuring
       BGP Auto-Discovery parameters for a given VPLS service.
      "
      ::= { vplsObjects 5 }

vplsBgpADConfigEntry OBJECT-TYPE
      SYNTAX          VplsBgpADConfigEntry
      MAX-ACCESS      not-accessible
      STATUS          current
      DESCRIPTION
      "A row in this table indicates that BGP based Auto-
       Discovery is in use for this instance of VPLS.
       A row in this table is indexed by vplsConfigIndex, which
       uniquely identifies a single VPLS.

       Entries in this table may be created or deleted
       through SNMP, as side effects of console or other
       non-SNMP management commands, or upon learning via
       autodiscovery.

       All of the read-create objects can be changed when
       vplsBGPADConfigRowStatus is in active(1) state."
      INDEX      { vplsConfigIndex }
      ::= { vplsBgpADConfigTable 1 }

VplsBgpADConfigEntry ::=
   SEQUENCE {
    vplsBgpADConfigRouteDistinguisher  VplsBgpRouteDistinguisher,
    vplsBgpADConfigPrefix              Unsigned32,
    vplsBgpADConfigVplsId              VplsBgpRouteDistinguisher,
    vplsBgpADConfigRowStatus           RowStatus,
    vplsBgpADConfigStorageType         StorageType
   }

vplsBgpADConfigRouteDistinguisher OBJECT-TYPE
      SYNTAX          VplsBgpRouteDistinguisher
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
      "The route distinguisher for this VPLS.  See RFC 4364
      for a complete definition of a route distinguisher.
      For more details on use of a route distinguisher
      for a VPLS service, see RFC 4761.  When not configured, the
      value is derived from the lower 6 bytes of
      vplsBgpADConfigVplsId.
      "
      ::= { vplsBgpADConfigEntry 1 }

      vplsBgpADConfigPrefix      OBJECT-TYPE
      SYNTAX          Unsigned32
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
      "In case of auto-discovery, the default prefix advertised
      is the IP address of the loopback.  In case the user wants
      to override the loopback address, vplsBgpADConfigPrefix
      should be set.  When this value is non-zero, this value is
      used along with vplsBgpADConfigRouteDistinguisher in the
      Network Layer Reachability Information (NLRI), see RFC 6074.
      "
      DEFVAL { 0 }
      ::= { vplsBgpADConfigEntry 2 }

vplsBgpADConfigVplsId          OBJECT-TYPE
      SYNTAX          VplsBgpRouteDistinguisher
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
      "VplsId is a unique identifier for all Virtual Switch
       Instances (VSIs) belonging to the same VPLS.  It is

       advertised as an extended community.
      "
      ::= { vplsBgpADConfigEntry 3 }

vplsBgpADConfigRowStatus OBJECT-TYPE
      SYNTAX          RowStatus
      MAX-ACCESS      read-create
      STATUS          current
      DESCRIPTION
      "For creating, modifying, and deleting this row.

      All other objects in this row must be set to valid
      values before this object can be set to active(1).

      None of the read-create objects in the
      conceptual rows may be changed when this
      object is in the active(1) state."
      ::= { vplsBgpADConfigEntry 4 }

vplsBgpADConfigStorageType OBJECT-TYPE
     SYNTAX        StorageType
     MAX-ACCESS    read-create
     STATUS        current
     DESCRIPTION
     "This variable indicates the storage type for this row."
     DEFVAL { nonVolatile }
     ::= { vplsBgpADConfigEntry 5 }

-- vplsBgpRteTargetTable

  vplsBgpRteTargetTable   OBJECT-TYPE
        SYNTAX          SEQUENCE OF VplsBgpRteTargetEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
        "This table specifies the list of Route Targets
         imported or exported by BGP during
         auto-discovery of VPLS.
        "
        ::= { vplsObjects 6 }

  vplsBgpRteTargetEntry   OBJECT-TYPE
        SYNTAX          VplsBgpRteTargetEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
        "An entry in this table specifies the value of the
        Route Target being used by BGP.  Depending on the value

        of vplsBgpRteTargetType, a Route Target might be
        exported, imported, or both.  Every VPLS that
        uses auto-discovery for finding peer nodes can
        import and export multiple Route Targets.  This
        representation allows support for hierarchical VPLS.

        Entries in this table may be created or deleted
        through SNMP, as side effects of console or other
        non-SNMP management commands, or upon learning via
        autodiscovery.

        It is optional for the agent to allow entries to be
        created that point to nonexistent entries in
        vplsConfigTable."
        INDEX     { vplsConfigIndex, vplsBgpRteTargetIndex }
        ::= { vplsBgpRteTargetTable 1 }

  VplsBgpRteTargetEntry ::=
     SEQUENCE {
      vplsBgpRteTargetIndex          Unsigned32,
      vplsBgpRteTargetRTType         VplsBgpRouteTargetType,
      vplsBgpRteTargetRT             VplsBgpRouteTarget,
      vplsBgpRteTargetRowStatus      RowStatus,
      vplsBgpRteTargetStorageType    StorageType
     }

  vplsBgpRteTargetIndex   OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
        "This index, along with vplsConfigIndex, identifies one
        entry in the vplsBgpRteTargetTable.  By keeping
        vplsConfigIndex constant and using a new value of
        vplsBgpRteTargetIndex, users can configure multiple
        Route Targets for the same VPLS.
        "
        ::= { vplsBgpRteTargetEntry 1 }

  vplsBgpRteTargetRTType  OBJECT-TYPE
        SYNTAX          VplsBgpRouteTargetType
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION
        "Used to define the type of a Route Target usage.
         Route Targets can be specified to be imported,
         exported, or both.  For a complete definition of a
         Route Target, see RFC 4364."
        ::= { vplsBgpRteTargetEntry 2 }

  vplsBgpRteTargetRT     OBJECT-TYPE
        SYNTAX          VplsBgpRouteTarget
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION
        "The Route Target associated with the VPLS service.
         For more details on use of Route Targets
         for a VPLS service, see RFC 4761.
        "
        ::= { vplsBgpRteTargetEntry 3 }

  vplsBgpRteTargetRowStatus     OBJECT-TYPE
        SYNTAX          RowStatus
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION
        "This variable is used to create, modify, and/or
         delete a row in this table.

         All other objects in this row must be set to valid
         values before this object can be set to active(1).

         When a row in this table is in active(1) state, no
         objects in that row can be modified.

         If autodiscovered entries are deleted they would
         likely re-appear in the next autodiscovery interval."
        ::= { vplsBgpRteTargetEntry 4 }

  vplsBgpRteTargetStorageType OBJECT-TYPE
       SYNTAX        StorageType
       MAX-ACCESS    read-create
       STATUS        current
       DESCRIPTION
       "This variable indicates the storage type for this row."
       DEFVAL { volatile }
       ::= { vplsBgpRteTargetEntry 5 }

  vplsStatusNotifEnable  OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
        "If this object is set to true(1), then it enables
         the emission of a vplsStatusChanged
         notification; otherwise, this notification is not

         emitted."
        REFERENCE
        "See also RFC 3413 for explanation that
        notifications are under the ultimate control of the
        MIB module in this document."
        DEFVAL { false }
        ::= { vplsObjects 7 }

   vplsNotificationMaxRate OBJECT-TYPE
      SYNTAX       Unsigned32
      MAX-ACCESS   read-write
      STATUS       current
      DESCRIPTION
       "This object indicates the maximum number of
        notifications issued per second.  If events occur
        more rapidly, the implementation may simply fail to
        emit these notifications during that period, or it may
        queue them until an appropriate time.  A value of 0
        means no throttling is applied and events may be
        notified at the rate at which they occur."
      DEFVAL       { 0 }
      ::= { vplsObjects 8 }
  -- VPLS Service Notifications

  vplsStatusChanged NOTIFICATION-TYPE
      OBJECTS {
          vplsConfigVpnId,
          vplsConfigAdminStatus,
          vplsStatusOperStatus
      }
      STATUS          current
      DESCRIPTION
           "The vplsStatusChanged notification is generated
            when there is a change in the administrative or
            operating status of a VPLS service.

            The object instances included in the notification
            are the ones associated with the VPLS service
            whose status has changed."
      ::= { vplsNotifications 1 }

  vplsFwdFullAlarmRaised NOTIFICATION-TYPE
      OBJECTS {
          vplsConfigVpnId,
          vplsConfigFwdFullHighWatermark,
          vplsConfigFwdFullLowWatermark
      }
      STATUS          current
      DESCRIPTION
           "The vplsFwdFullAlarmRaised notification is
            generated when the utilization of the Forwarding
            database is above the value specified by
            vplsConfigFwdFullHighWatermark.

            The object instances included in the notification
            are the ones associated with the VPLS service
            that has exceeded the threshold."
      ::= { vplsNotifications 2 }

  vplsFwdFullAlarmCleared NOTIFICATION-TYPE
      OBJECTS {
          vplsConfigVpnId,
          vplsConfigFwdFullHighWatermark,
          vplsConfigFwdFullLowWatermark
      }
      STATUS          current
      DESCRIPTION
           "The vplsFwdFullAlarmCleared notification is
            generated when the utilization of the Forwarding
            database is below the value specified by
            vplsConfigFwdFullLowWatermark.

            The object instances included in the notification
            are the ones associated with the VPLS service
            that has fallen below the threshold."
      ::= { vplsNotifications 3 }

-- Conformance Section

vplsCompliances
  OBJECT IDENTIFIER ::= { vplsConformance 1 }
-- Compliance requirement for fully compliant implementations

vplsModuleFullCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
        "Compliance requirement for implementations that
         provide full support for VPLS-GENERIC-MIB.
         Such devices can then be monitored and configured using
         this MIB module."
   MODULE -- this module

       MANDATORY-GROUPS {
            vplsGroup,
            vplsPwBindGroup,
            vplsNotificationGroup

        }
   ::= { vplsCompliances 1 }

-- Compliance requirement for read-only implementations.

vplsModuleReadOnlyCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
        "Compliance requirement for implementations that only
         provide read-only support for VPLS-GENERIC-MIB.
         Such devices can then be monitored but cannot be
         configured using this MIB modules."

   MODULE -- this module

       MANDATORY-GROUPS {
            vplsGroup,
            vplsPwBindGroup,
            vplsNotificationGroup
        }

        OBJECT          vplsConfigName
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigDescr
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigAdminStatus
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigMacLearning
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigDiscardUnknownDest
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigMacAging
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigFwdFullHighWatermark
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigFwdFullLowWatermark
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigRowStatus
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsConfigMtu
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsPwBindConfigType
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsPwBindType
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT          vplsPwBindRowStatus
        MIN-ACCESS      read-only
        DESCRIPTION
            "Write access is not required."
   ::= { vplsCompliances 2 }

-- Units of conformance.

vplsGroups
  OBJECT IDENTIFIER ::= { vplsConformance 2 }

vplsGroup OBJECT-GROUP
    OBJECTS {
        vplsConfigName,
        vplsBgpADConfigRouteDistinguisher,
        vplsBgpRteTargetRTType,
        vplsBgpRteTargetRT,
        vplsBgpRteTargetRowStatus,
        vplsBgpRteTargetStorageType,
        vplsBgpADConfigPrefix,
        vplsBgpADConfigVplsId,
        vplsBgpADConfigRowStatus,
        vplsBgpADConfigStorageType,
        vplsConfigDescr,
        vplsConfigAdminStatus,
        vplsConfigMacLearning,
        vplsConfigDiscardUnknownDest,
        vplsConfigMacAging,
        vplsConfigVpnId,
        vplsConfigFwdFullHighWatermark,
        vplsConfigFwdFullLowWatermark,
        vplsConfigRowStatus,
        vplsConfigIndexNext,
        vplsConfigMtu,
        vplsConfigStorageType,
        vplsConfigSignalingType,
        vplsStatusOperStatus,
        vplsStatusPeerCount,
        vplsStatusNotifEnable,
        vplsNotificationMaxRate
    }
    STATUS          current
    DESCRIPTION
         "The group of objects supporting
          management of L2VPN VPLS services"
    ::= { vplsGroups 1 }

vplsPwBindGroup OBJECT-GROUP
    OBJECTS {
        vplsPwBindConfigType,
        vplsPwBindType,
        vplsPwBindRowStatus,
        vplsPwBindStorageType
    }
    STATUS          current
    DESCRIPTION
         "The group of objects supporting
          management of
          pseudowire (PW) Binding to VPLS."
    ::= { vplsGroups 2 }

vplsNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS   {
        vplsStatusChanged,
        vplsFwdFullAlarmRaised,
        vplsFwdFullAlarmCleared
    }
    STATUS          current
    DESCRIPTION
         "The group of notifications supporting
          the Notifications generated for
          VPLS services."
    ::= { vplsGroups 3 }

 END
