-- *****************************************************************
-- FS-VPLS-BGP-MIB.mib:
--
-- June 2009, miaoshifu
--
-- Copyright (c) 2009 by FS.COM Inc..
-- All rights reserved.
-- 
-- *****************************************************************
--

FS-VPLS-BGP-MIB DEFINITIONS ::= BEGIN
      IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE,
       Unsigned32, transmission
         FROM SNMPv2-SMI                    -- RFC2578

      MODULE-COMPLIANCE, OBJECT-GROUP
         FROM SNMPv2-CONF                   -- RFC2580

      RowStatus, StorageType,  TEXTUAL-CONVENTION
         FROM SNMPv2-TC                     -- RFC2579

      SnmpAdminString
         FROM SNMP-FRAMEWORK-MIB            -- RFC3411

      fsvplsConfigIndex, fsvplsPwBindIndex
         FROM FS-VPLS-GENERIC-MIB
      fsMgmt
         FROM FS-SMI
      ;

   fsvplsBgpDraft01MIB MODULE-IDENTITY
      LAST-UPDATED "201004281200Z"  -- 28 April 2010 12:00:00 GMT
      ORGANIZATION "FS.COM Inc.."
      CONTACT-INFO
                "
                Tel: 400-865-2852

                E-mail: https://www.fs.com/live_chat_service_mail.html"

      DESCRIPTION
          "Copyright (C) FS Networks (2010).

           This MIB module contains managed object definitions for
           BGP signalled Virtual Private LAN Services as in
           [RFC4761]

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

      -- Revision history.
      REVISION
          "201004281200Z"  -- 28 April 2010 12:00:00 GMT
      DESCRIPTION "Initial version published as part of FS private MIB."
         ::= { fsMgmt 79 }

   -- VPLS BGP specific Textual Conventions.
   FSVplsBgpRouteDistinguisher ::= TEXTUAL-CONVENTION
      STATUS        current
      DESCRIPTION
          "Syntax for a route distinguisher. For a complete
           definition of a route distinguisher, see [RFC4364].
           For more details on use of a route distinguisher
           for a VPLS service, see [RFC4761]"
      REFERENCE
          "[RFC4364]"
      SYNTAX  OCTET STRING(SIZE (0..256))

   FSVplsBgpRouteTarget ::= TEXTUAL-CONVENTION
      STATUS        current
      DESCRIPTION
          "Syntax for a route target. For a complete
           definition of a route target, see [RFC4364]."
      REFERENCE
          "[RFC4364]"
      SYNTAX  OCTET STRING(SIZE (0..256))

   -- Top-level components of this MIB.

   -- Tables, Scalars
   fsvplsBgpObjects       OBJECT IDENTIFIER
                                 ::= { fsvplsBgpDraft01MIB 1 }
   -- Conformance
   fsvplsBgpConformance   OBJECT IDENTIFIER
                                 ::= { fsvplsBgpDraft01MIB 2 }

     -- Vpls Edge Device (VE) Identifier Table

     fsvplsBgpVETable OBJECT-TYPE
         SYNTAX        SEQUENCE OF FSVplsBgpVEEntry
         MAX-ACCESS    not-accessible
         STATUS        current
         DESCRIPTION
            "This table associates VPLS Edge devices to a VPLS instance"
         ::= { fsvplsBgpObjects 1 }

     fsvplsBgpVEEntry OBJECT-TYPE
         SYNTAX        FSVplsBgpVEEntry
         MAX-ACCESS    not-accessible
         STATUS        current
         DESCRIPTION
            "An entry in this table is created for each VE Id
             configured on a PE for a particular VPLS service
             instance."
         INDEX  { fsvplsConfigIndex, fsvplsBgpVEindex }
         ::= { fsvplsBgpVETable 1 }

     FSVplsBgpVEEntry ::= SEQUENCE {
          fsvplsBgpVEindex        Unsigned32,
          fsvplsBgpVEId           Unsigned32,
          fsvplsBgpRangeSize      Unsigned32,
          fsvplsBgpVEPreference   Unsigned32,
          fsvplsBgpVERowStatus    RowStatus
        }

      fsvplsBgpVEindex  OBJECT-TYPE
          SYNTAX          Unsigned32  (1..2147483647)
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION
               "Unique index for the conceptual row identifying
                VE in a VPLS instance."
          ::= { fsvplsBgpVEEntry 1 }

     fsvplsBgpVEId OBJECT-TYPE
        SYNTAX        Unsigned32 (1..256)
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "A secondary index identifying a VE within an
             instance of a VPLS service."
        ::= { fsvplsBgpVEEntry 2 }

     fsvplsBgpRangeSize OBJECT-TYPE
        SYNTAX        Unsigned32 (1..256)
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "Specifies the range size for the given VE ID."
        DEFVAL           { 16 }
        ::= { fsvplsBgpVEEntry 3}

     fsvplsBgpVEPreference OBJECT-TYPE
        SYNTAX        Unsigned32 (0..256)
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "Specifies the preference of the VE Id on this PE
             if the site is multi-homed and VE Id is re-used.

             Set this 0 if the site is NOT dual-homed or multi-homed."
        DEFVAL           { 0 }
        ::= { fsvplsBgpVEEntry 4}

     fsvplsBgpVERowStatus 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.  When a row in this
             table is in active(1) state, no objects in that row
             can be modified except fsvplsBgpSiteRowStatus."
        ::= { fsvplsBgpVEEntry 5 }

      -- VPLS BGP PW Binding Table

      fsvplsBgpPwBindTable OBJECT-TYPE
          SYNTAX          SEQUENCE OF FSVplsBgpPwBindEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION
               "This table provides BGP specific information for
                an association between a VPLS service and the
                corresponding Pseudo Wires. A service can have more
                than one Pseudo Wire association. Pseudo Wires are
                defined in the pwTable."
          ::= { fsvplsBgpObjects 2 }

      fsvplsBgpPwBindEntry OBJECT-TYPE
          SYNTAX          FSVplsBgpPwBindEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION
               "Each row represents an association between a
                VPLS instance and one or more Pseudo Wires
                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.

                An entry in this table in instantiated only when
                BGP signalling is used to configure VPLS service.

                Each entry in this table provides BGP specific
                information for the VPlS represented by
                fsvplsConfigIndex."
          INDEX  { fsvplsConfigIndex, fsvplsPwBindIndex }
          ::= { fsvplsBgpPwBindTable 1 }

      FSVplsBgpPwBindEntry ::=
          SEQUENCE {
              fsvplsBgpPwBindLocalVEId    Unsigned32,
              fsvplsBgpPwBindRemoteVEId   Unsigned32
          }

      fsvplsBgpPwBindLocalVEId   OBJECT-TYPE
           SYNTAX          Unsigned32 (1..256)
           MAX-ACCESS      read-only
           STATUS          current
           DESCRIPTION
                "Identifies the local VE that this Pseudo Wire
                 is associated with."
          ::= { fsvplsBgpPwBindEntry 1 }

      fsvplsBgpPwBindRemoteVEId   OBJECT-TYPE
           SYNTAX          Unsigned32 (1..256)
           MAX-ACCESS      read-only
           STATUS          current
           DESCRIPTION
                "Identifies the remote VE that this Pseudo Wire
                 is associated with."
          ::= { fsvplsBgpPwBindEntry 2 }

   -- Compliance requirement for read-only implementations.

   fsvplsBgpCompliances
     OBJECT IDENTIFIER ::= { fsvplsBgpConformance 1 }

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

      MODULE -- this module

          MANDATORY-GROUPS {
               fsvplsBgpConfigGroup,
               fsvplsBgpVEGroup,
               fsvplsBgpPwBindGroup
           }
      ::= { fsvplsBgpCompliances 1 }


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

      MODULE -- this module

          MANDATORY-GROUPS {
               fsvplsBgpConfigGroup,
               fsvplsBgpVEGroup,
               fsvplsBgpPwBindGroup
           }

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

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

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

      ::= { fsvplsBgpCompliances 2 }

-- Units of conformance.

      fsvplsBgpGroups
        OBJECT IDENTIFIER ::= { fsvplsBgpConformance 2 }


      fsvplsBgpVEGroup OBJECT-GROUP
          OBJECTS {
              fsvplsBgpVEPreference
          }
          STATUS          current
          DESCRIPTION
               "The group of objects supporting management of VPLS
                Edge devices for L2VPN VPLS services using BGP"
          ::= { fsvplsBgpGroups 2 }

      fsvplsBgpPwBindGroup OBJECT-GROUP
          OBJECTS {
              fsvplsBgpPwBindLocalVEId,
              fsvplsBgpPwBindRemoteVEId
          }
          STATUS          current
          DESCRIPTION
               "The group of objects supporting management of
                Pseudo Wires for L2VPN VPLS services using BGP"
          ::= { fsvplsBgpGroups 3 }

END
