// ===================================================================
// Title:       Network BGP Model 2.7
// Filename:    Network27_BGP.mof
// Version:     2.7.0
// Status:      Final
// Date:        April 18, 2003
// ===================================================================
// Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The Network Model extends the management concepts to
//              represent protocol interfaces and network/protocol 
//              services.  This file defines the classes that model  
//              BGP (Border Gateway Protocol).  
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.7
// CR792 - Add the Composition qualifer to BGPClustersInAS, 
//         ASBGPEndpoints, and Confederation
// CR863 - Update the format of the MappingStrings qualifier when
//         referencing IETF RFCs
// CR866 - Fixes to the BGP Model
// CR920 - BGPAttributes.AtomicAggregate is incorrectly defined with 
//         Values/ValueMap qualifiers when it is a boolean - these
//         qualifiers must be removed and the Description updated
// CR965 - Update Description for BGPIPRoute
// CR982 - Removal of Experimental for preliminary to final
// CR983 - v2.7 Deprecations promoted to final
// ===================================================================
 
#pragma Locale ("en_US")


// ==================================================================
// BGPService
// ==================================================================
   [Version ("2.7.0"), Description (
      "This class is used to represent the basic operation of BGP. "
      "It is derived from RouteCalculationService, the superclass "
      "of all routing protocols.") ]
class CIM_BGPService : CIM_RouteCalculationService {

        [Description (
         "The BGPVersion property defines the version of BGP that "
         "this router is using. This is part of the BGP peer "
         "negotiation  process)."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpVersion"} ]
    uint8 BGPVersion; 

        [Description (
         "BGP sends errors using a NOTIFICATION message. This message "
         "contains an error code, an error subcode, and error data. "
         "The error code defines the type of the notification. The "
         "'Cease' error is for all fatal errors that are not one of "
         "the other five types of errors. For several of the errors, "
         "subcode information is also enumerated in other properties "
         "of this class."),
         ValueMap {"0", "1", "2", "3", "4", "5", "6"},
         Values {"None", "Message Header Error", "OPEN Message Error",
            "UPDATE Message Error", "Hold Timer Expired",
            "Finite State Machine Error", "Cease"} ]
    uint16 LastErrorCode;

        [Description (
         "This defines the BGP error subcode for message header "
         "errors (LastErrorCode = 1). If LastErrorCode is any "
         "other value, then this property should be set to NULL."),
         ValueMap {"0", "1", "2", "3"},
         Values {"None", "Connection Not Synchronized",
            "Bad Message Length", "Bad Message Type"},
         ModelCorrespondence {"CIM_BGPService.ErrorCode"} ]
    uint16 LastMessageErrorSubCode;

        [Description (
         "This defines the BGP error subcode for OPEN message "
         "errors (LastErrorCode = 2). If LastErrorCode is any "
         "other value, then this property should be set to NULL."),
         ValueMap {"0", "1", "2", "3", "4", "5", "6"},
         Values {"None", "Unsupported Version Number", "Bad Peer AS",
            "Bad BGP Identifier", "Unsupported Optional Parameter", 
            "Authentication Failure", "Unacceptable Hold Time"},
         ModelCorrespondence {"CIM_BGPService.ErrorCode"} ]
    uint16 LastOpenErrorSubCode;

        [Description (
         "This defines the BGP error subcode for UPDATE message "
         "errors (LastErrorCode = 3). If LastErrorCode is any "
         "other value, then this property should be set to NULL."),
         ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
            "10", "11"},
         Values {"None", "Malformed Attribute List",
            "Unrecognized Well-Known Attribute",
            "Missing Well-Known Attribute", "Attribute Flags Error", 
            "Attribute Length Error", "Invalid Origin Attribute",
            "AS Routing Loop", "Invalid NEXT_HOP Attribute",
            "Optional Attribute Error", "Invalid Network Field",
            "Malformed AS_path"},
         ModelCorrespondence {"CIM_BGPService.ErrorCode"} ]
    uint16 LastUpdateErrorSubCode;
};


// ==================================================================
// BGPAdminDistance
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "This is a specialization of the Dependency association, and "
    "defines the relationship between a BGPService and the "
    "AdministrativeDistances that it uses to control the "
    "(BGP) routing decisions that it makes.") ] 
class CIM_BGPAdminDistance : CIM_Dependency {

        [Override ("Antecedent"), Min (1), Max (1), Description (
         "The table of (global) administrative distances that are "
         "used by the BGPService.") ] 
    CIM_AdministrativeDistance REF Antecedent;

        [Override ("Dependent"), Description (
         "The BGPService object that makes BGP routing decisions.") ]
    CIM_BGPService REF Dependent;
};


// ==================================================================
// BGPCluster
// ==================================================================
   [Version ("2.6.0"), Description (
      "The BGP speakers in an AS are required to be fully meshed. "
      "This can lead to a huge number of TCP connections per "
      "router. One way to reduce the peering requirements is to "
      "use a route reflector. This is based on specifying one or "
      "more routers to act as focal points for IBGP sessions. \n"
      "\n"
      "The route reflector as a whole is called a cluster. It is "
      "logically divided into three types of routers: reflectors, "
      "clients of the route reflector(s), and non-clients of the "
      "route reflector. There can be more than one route "
      "reflector in a cluster, and there can be more than one "
      "cluster in an AS.") ]
class CIM_BGPCluster : CIM_CollectionOfMSEs {

        [Key, Description (
         "If a cluster has more than one route reflector, all of the "
         "route reflectors in the cluster need to be configured with "
         "a 4-byte cluster ID. This allows route reflectors to "
         "recognize updates from other route reflectors in the "
         "same cluster.") ] 
    uint32 ClusterID;
};


// ==================================================================
// RoutersInBGPCluster
// ==================================================================
   [Association, Aggregation, Version ("2.6.0"), 
    Description (
      "This aggregation establishes the routers (ComputerSystems) "
      "in a BGPCluster. At least three routers are "
      "required to form a cluster - a reflector and two clients. "
      "The routers that form a cluster share common configuration "
      "information.") ]
class CIM_RoutersInBGPCluster : CIM_CollectedMSEs {

        [Override ("Collection"), Aggregate, Max (1), 
         Description (
         "The Cluster that aggregates the routers participating "
         "in it.") ]
    CIM_BGPCluster REF Collection;
 
        [Override ("Member"), Min (3), Description (
         "The routers that form the Cluster.") ] 
    CIM_ComputerSystem REF Member;
};


// ==================================================================
// BGPClustersInAS
// ==================================================================
   [Association, Aggregation, Composition, Version ("2.7.0"), 
    Description (
      "This aggregation establishes 'whole-part' relationships "
      "between an AutonomousSystem and the BGPClusters that it "
      "contains.") ]
class CIM_BGPClustersInAS {

        [Key, Aggregate, Max (1), Description (
         "The AutonomousSystem that aggregates the Clusters belonging "
         "to it and administers them.") ]
    CIM_AutonomousSystem REF GroupAS;

        [Key, Description (
         "The Clusters that are contained in the AS.") ] 
    CIM_BGPCluster REF PartAS;
};


// ==================================================================
// Confederation
// ==================================================================
   [Association, Aggregation, Composition, Version ("2.7.0"), 
    Description (
      "The BGP speakers in an AS are required to be fully meshed. "
      "This can lead to a huge number of TCP connections per "
      "router. One way to reduce the peering requirements is to "
      "use a confederation. A confederation effectively partitions "
      "one AS into a group of 'sub-ASs'. This enables all of the "
      "benefits of IBGP to be applied inside the confederation, "
      "while enabling EBGP to be run between each confederation. "
      "It also enables certain BGP attribute values to be preserved "
      "between confederations. However, to the outside world, the "
      "AS with its confederations appear to be a single AS.") ]
class CIM_Confederation : CIM_SystemComponent {

        [Override ("GroupComponent"), Aggregate, Max (1), 
         Description (
         "The AutonomousSystem that contains the confederations.") ]
    CIM_AutonomousSystem REF GroupComponent;

        [Override ("PartComponent"), Description (
         "The Confederation within the AutonomousSystem.") ]
    CIM_AutonomousSystem REF PartComponent;

        [Description (
         "A unique identifier of the AutonomousSystem that contains "
         "the confederations.") ]
    uint32 ParentASNumber;

        [Description (
         "A unique identifier of the Confederation within the "
         "AutonomousSystem.") ]
    uint32 ChildASNumber;
};


// ==================================================================
// BGPIPRoute
// ==================================================================
   [Version ("2.6.0"), Description (
    "BGPIPRoute describes a BGP routing entry that connects two "
    "peer routers that are running BGP. The source and "
    "destination addresses may be either specific IP endpoints "
    "or IP subnets. Examining the BGPIPRoute class definition, "
    "note that its superclass IPRoute is deprecated. "
    "Unfortunately, IPRoute cannot be removed from "
    "the object hierarchy without a major Schema release. "
    "When/if this occurs, the IPRoute superclass "
    "will be removed, and BGPIPRoute will subclass "
    "from CIM_NextHopRouting directly. ") ]
class CIM_BGPIPRoute : CIM_IPRoute {

        [Description (
         "Usually, the administrative distance is used to determine "
         "which route gets installed in the routing table. Using this "
         "scheme, routes learned via EBGP will win over routes "
         "learned via an IGP. If this is not desired, then this "
         "assigns the administrative distance of this route to be "
         "equal to that of a local route, which means that the same "
         "route learned by an IGP will have a lower administrative "
         "distance and be installed instead.") ]
    boolean IsBackDoorRoute;
 
        [Description (
         "Loopback interfaces are often used by IBGP peers, because "
         "they eliminate a dependency that would otherwise occur if "
         "the actual IP address of a physical interface was used to "
         "configure BGP. The loopback interface instead instructs the "
         "router to use any available interface.") ]
    boolean UsesLoopbackPeering;
};


// ==================================================================
// RoutesBGP
// ==================================================================
   [Association, Version ("2.6.0"), Description (
      "This association defines a BGP route, and makes explicit "
      "the dependency between a BGPIPRoute and a "
      "BGPProtocolEndpoint.") ]
class CIM_RoutesBGP : CIM_Dependency {

        [Override ("Antecedent"), Max (2), Description (
         "The BGPProtocolEndpoints that represent the source and "
         "destination (or at least the next hop) of the BGP route.") ]
    CIM_BGPProtocolEndpoint REF Antecedent;

        [Override ("Dependent"), Min (1), Description (
         "The routing table entry that represents a BGP route.") ]
    CIM_BGPIPRoute REF Dependent;
};


// ==================================================================
// EGPRouteCalcDependency
// ==================================================================
   [Association, Version ("2.6.0"), Description (
      "This is a specialization of ServiceServiceDependency, and "
      "captures the dependency that external gateway protocols " 
      "(such as BGP) have on interior gateway protocols (such "
      "as OSPF).") ] 
class CIM_EGPRouteCalcDependency : CIM_ServiceServiceDependency {

        [Override ("Antecedent"), Description (
         "The independent RouteCalculationService that provides "
         "routing information from the AS, for the EGP to use.") ]
    CIM_RouteCalculationService REF Antecedent;
 
        [Override ("Dependent"), Description (
         "The dependent RouteCalculationService (e.g., the Route"
         "CalculationService) that is functioning as an EGP.") ]
    CIM_RouteCalculationService REF Dependent;

        [Description (
         "Sometimes it is necessary to inject EGP information, such "
         "as that from BGP, into IGPs. This attribute defines whether "
         "this should be done for the two routing protocols that are "
         "defined by this association. The values below mean that no, "
         " partial, and full EGP information is injected into the "
         "IGP, respectively."),
         ValueMap {"1", "2", "3"},
         Values {"None", "Partial", "Full"} ]
    uint16 IGPInjection;
};


// ==================================================================
// BGPPeerGroup
// ==================================================================
   [Version ("2.7.0"), Description (
      "A BGP Peer Group is a set of BGP neighbors that share the "
      "same update policies. This enables an administrator to "
      "assign policies to the peer group, instead of individually. "
      "This enables the routers in the Peer Group to optimize "
      "UPDATE messages. Consequently, Peer Groups have a set of "
      "restrictions that must be followed in order to work "
      "correctly with external BGP peers. Otherwise, loss of "
      "routing information could occur. \n"
      "\n"
      "A BGPPeerGroup is weak to the AutonomousSystem that "
      "contains it. Therefore, the keys from System must be "
      "propagated to it.") ]
class CIM_BGPPeerGroup : CIM_CollectionOfMSEs {

        [Propagated ("CIM_AutonomousSystem.CreationClassName"), Key, 
         MaxLen (256), Description (
         "The scoping AutonomousSystem's CreationClassName.") ] 
    string SystemCreationClassName;
 
        [Propagated ("CIM_AutonomousSystem.Name"), Key, MaxLen (256),
         Description ("The scoping AutonomousSystem's Name.") ] 
    string SystemName;

        [Key, Description (
         "CreationClassName indicates the name of the class or the "
         "subclass used in the creation of an instance. When used "
         "with the other key properties of this class, this property "
         "allows all instances of this class and its subclasses to "
         "be uniquely identified.") ]
    string CreationClassName;

        [MaxLen(256), Key, Description (
         "This is the name of the BGP Peer Group.") ]
    string Name;

        [Description (
         "This defines the time interval, in seconds, for the "
         "ConnectRetry timer for the endpoints of the routers in "
         "the PeerGroup. The suggested value is 120 seconds."),
         Units ("Seconds"),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpConnectRetryInterval"} ]
    uint32 ConnectRetryInterval = 120;

        [Description (
         "This defines the time interval in seconds for the Hold"
         "TimeConfigured property of the endpoints of the routers in "
         "the PeerGroup. This value must not be less than three "
         "seconds. The suggested value for this timer is 90 seconds."),
         Units ("Seconds"),
         MappingStrings
          {"MIB.IETF|BGP4-MIB.bgpPeerHoldTimeConfigured"} ]
    uint16 HoldTimeConfigured = 90;

        [Description (
         "This defines the time interval in seconds for the "
         "KeepAliveConfigured timer for the endpoints of the routers "
         "in the PeerGroup. The suggested value for this property "
         "is 30 seconds. The maximum value of this property is "
         "21845 seconds."),
         Units ("Seconds"),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgpPeerKeepAliveConfigured"} ]
    uint16 KeepAliveConfigured = 30;

        [Description (
         "This defines the time interval in seconds for the "
         "MinASOriginationInterval timer for the endpoints of "
         "the routers in the PeerGroup. The suggested value for "
         "this property is 15 seconds."),
         Units ("Seconds"),
         MappingStrings
          {"MIB.IETF|BGP4-MIB.bgpPeerMinASOriginationInterval"} ]
    uint16 MinASOriginationInterval = 15;
 
        [Description (
         "This defines the time interval in seconds for the "
         "MinRouteAdvertisementInterval timer for the endpoints "
         "of the routers in the PeerGroup. The suggested value "
         "for this property is 30 seconds."),
         Units ("Seconds"),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgpPeerMinRouteAdvertisementInterval"} ]
    uint16 MinRouteAdvertisementInterval = 30;
};


// ==================================================================
// HostedBGPPeerGroup
// ==================================================================
   [Association, Version ("2.6.0"), Description (
      "A BGPPeerGroup is weak to the AutonomousSystem that "
      "contains it. This association formalizes that "
      "relationship.") ]
class CIM_HostedBGPPeerGroup : CIM_Dependency {

        [Override ("Antecedent"), Min (1), Max (1), Description (
         "The AutonomousSystem that scopes the BGP peer group.") ]
    CIM_AutonomousSystem REF Antecedent;

        [Override ("Dependent"), Weak, Description (
         "The BGP peer group defined in the context of the "
         "AutonomousSystem.") ] 
    CIM_BGPPeerGroup REF Dependent;
};

// ==================================================================
// InBGPPeerGroup
// ==================================================================
   [Association, Aggregation, Version ("2.6.0"), 
    Description (
    "This aggregation defines the specific routers (i.e., "
    "ComputerSystems) that participate in a PeerGroup.") ] 
class CIM_InBGPPeerGroup : CIM_CollectedMSEs {

        [Override ("Collection"), Aggregate, Max (1), Description (
         "The PeerGroup that aggregates the routers.") ] 
    CIM_BGPPeerGroup REF Collection;

        [Override ("Member"), Min (2), Description (
         "The routers that comprise the PeerGroup.") ] 
    CIM_ComputerSystem REF Member;
};


// ==================================================================
// BGPPeerGroupService
// ==================================================================
   [Association, Version ("2.7.0"), Description (
    "This defines the relationship between a BGPService and a "
    "specific BGPPeerGroup in which it is executing.") ] 
class CIM_BGPPeerGroupService : CIM_Dependency {

        [Override ("Antecedent"), Description (
         "The BGPPeerGroup in which the BGPService is executing.") ] 
    CIM_BGPPeerGroup REF Antecedent;

        [Override ("Dependent"), Description (
         "The BGPService that is executing in the BGPPeerGroup.") ] 
    CIM_BGPService REF Dependent;
};


// ==================================================================
// ReflectorService
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "This association will serve as the base class for defining "
    "and distributing BGP routing information for the reflector "
    "of this Cluster.") ] 
class CIM_ReflectorService : CIM_Dependency {

        [Override ("Antecedent"), Max (1), Description (
         "The Cluster for which this Service is being defined.") ] 
    CIM_BGPCluster REF Antecedent;

        [Override ("Dependent"), Min (1), Description (
         "The BGPService which distributes routing information in "
         "the Cluster.") ]
    CIM_BGPService REF Dependent;
};


// ==================================================================
// ReflectorClientService
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "This association will serve as the base class for handling "
    "BGP routing information for clients of the reflector of "
    "this Cluster.") ] 
class CIM_ReflectorClientService : CIM_Dependency {

        [Override ("Antecedent"), Max (1), Description (
         "The Cluster for which this Service is being defined.") ] 
    CIM_BGPCluster REF Antecedent;

        [Override ("Dependent"), Min (1), Description (
         "The BGPService to handles routing information as a client "
         "in the Cluster.") ]
    CIM_BGPService REF Dependent;
};


// ==================================================================
// ReflectorNonClientService
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "This association will serve as the base class for handling "
    "BGP routing information for the non-clients of the reflector "
    "of this Cluster.") ] 
class CIM_ReflectorNonClientService : CIM_Dependency {

        [Override ("Antecedent"), Max (1), Description (
         "The Cluster for which this Service is being defined.") ] 
    CIM_BGPCluster REF Antecedent;

        [Override ("Dependent"), Description (
         "The BGPService which handles routing information as a "
         "non-client of the Cluster.") ]
    CIM_BGPService REF Dependent;
};


// ==================================================================
// BGPRoutingPolicy
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "This is a specialization of the Dependency association, "
    "and defines the relationship between a BGPService and the "
    "RoutingPolicy that control it.") ] 
class CIM_BGPRoutingPolicy : CIM_Dependency {

        [Override ("Antecedent"), Description (
         "The BGP routing policy object.") ] 
    CIM_RoutingPolicy REF Antecedent;

        [Override ("Dependent"), Description (
         "The BGPService that operates according to the routing "
         "policy.") ] 
    CIM_BGPService REF Dependent;
};


// ==================================================================
// BGPAttributes 
// ==================================================================
   [Version ("2.7.0"), Description (
    "This class defines the BGP Attributes, that can be used to affect "
    "routing decisions. BGPAttributes are specific to a given "
    "AutonomousSystem that contains it. Hence, the keys of the "
    "AutonomousSystem are propagated to this class.") ]
class CIM_BGPAttributes : CIM_LogicalElement {

        [Propagated ("CIM_AutonomousSystem.CreationClassName"), Key, 
         MaxLen (256), Description (
         "The scoping AutonomousSystem's CreationClassName.") ] 
    string SystemCreationClassName;

        [Propagated ("CIM_AutonomousSystem.Name"), Key, 
         MaxLen (256),
         Description ("The scoping AutonomousSystem's Name.") ] 
    string SystemName; 

        [Key, Description (
         "This defines the version of the BGP protocol.") ]
    string Version;

        [Description (
         "This defines the priority, or preference, of a route, in "
         "order to better compare it with other routes for the same "
         "destination. Higher values indicate a higher preference "
         "for a route."),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgp4PathAttrLocalPref"} ]
    uint16 LocalPreference;

        [Description (
         "This attribute is a sequences of the AS numbers through "
         "which routing information carried in this UPDATE message "
         "has passed. The components of this list can be AS_SETs "
         "or AS_SEQUENCEs."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrASPath"} ]
    string ASPath;

        [Description (
         "This is the set of all elements contained in all specific "
         "paths that are being summarized, so that those attributes "
         "will remain available to the routing decision process.") ]
    string AS_Set;

        [Description (
         "This attribute defines the IP address of the border router "
         "that should be used as the next hop to the destinations "
         "listed in the UPDATE message."),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgp4PathAttrNextHop"} ]
    string NextHop; 

        [Description (
         "This defines the next hop to be the IP address of the "
         "border IBGP neighbor.") ]
    string NextHopSelf;

        [Description (
         "This is used on external (e.g., inter-AS) links to indicate "
         "which is the preferred entry point into an AS, when that AS "
         "has multiple entry points. Lower MED values have "
         "preference."),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgp4PathAttrMultiExitDisc"} ]
    uint32 MED;

        [Description (
         "This defines a group of destinations that share a similar "
         "property. Communities are not restricted to a single AS, "
         "and can span multiple ASs. This attribute is used to "
         "simplify routing policies by basing policies on a logical "
         "value, as opposed to an IP address or an AS number.") ]
    uint32 BGPCommunityValue;

        [Description (
         "This property is set to TRUE if there are overlapping "
         "routes, and a less-specific route is selected instead of a "
         "more specific one (e.g., a system propagates an aggregate "
         "that causes loss of information). The value is set to "
         "FALSE if a less-specific route is NOT selected."),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgp4PathAttrAtomicAggregate"} ]
    boolean AtomicAggregate;

        [Description (
         "This specifies the AS and IP address of the router that has "
         "generated an aggregate."),
         MappingStrings {
          "MIB.IETF|BGP4-MIB.bgp4PathAttrAggregatorAS"} ]
    string Aggregator;

        [Description (
         "This is generated by the AS that originates the routing "
         "information. There are three types of origins - IGP, EGP, "
         "and INCOMPLETE. These correspond to whether the information "
         "was learned internally in the AS, externally via an EGP, "
         "or by some other means."),
         ValueMap {"1", "2", "3"},
         Values {"IGP", "EGP", "INCOMPLETE"},
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrOrigin"} ]
    uint16 Origin; 

        [Description (
         "This is the router ID for the ORIGIN attribute.") ]
    string OriginatorID;
};


// ==================================================================
// HostedBGPAttributes
// ==================================================================
   [Association, Version ("2.7.0"), Description (
    "The class BGPAttributes is weak to the AutonomousSystem "
    "that contains it. This association formalizes that "
    "relationship.") ] 
class CIM_HostedBGPAttributes : CIM_Dependency {

        [Override ("Antecedent"), Min (1), Max (1), 
         Description (
         "The AutonomousSystem that scopes the BGP attributes.") ]
    CIM_AutonomousSystem REF Antecedent;

        [Override ("Dependent"), Weak, 
         Description (
         "The BGP attributes defined in the context of the "
         "AutonomousSystem.") ] 
    CIM_BGPAttributes REF Dependent;
};


// ==================================================================
// FilteredBGPAttributes 
// ==================================================================
   [Association, Aggregation, 
    Version ("2.7.0"), Description (
    "This is a specialization of the Component aggregation, "
    "which is used to define the set of BGP Attributes that are "
    "used by a particular Routing Policy.") ] 
class CIM_FilteredBGPAttributes : CIM_Component {

        [Override ("GroupComponent"), Aggregate, 
         Description (
         "The RoutingPolicy, which aggregates a set of BGP "
         "attributes.") ]
    CIM_RoutingPolicy REF GroupComponent;

        [Override ("PartComponent"), Description (
         "A BGP attribute, which is part-of the RoutingPolicy.") ]
    CIM_BGPAttributes REF PartComponent;
};


// ==================================================================
// BGPRouteMap
// ==================================================================
   [Version ("2.7.0"), Description (
    "A route map is used to control and modify routing "
    "information as well as to define when a route is "
    "redistributed between routing domains. Route maps are "
    "placed in router configuration files, and several "
    "instances of the same route map may be used to implement "
    "different actions. RouteMaps MAY use FilterLists to "
    "identify the route. \n"
    "\n"
    "A BGPRouteMap is specific to a given AutonomousSystem that "
    "contains it. Hence, the keys of the AutonomousSystem are "
    "propagated to this class.") ]
class CIM_BGPRouteMap : CIM_LogicalElement {

        [Propagated ("CIM_AutonomousSystem.CreationClassName"), Key, 
         MaxLen (256), Description (
         "The scoping AutonomousSystem's CreationClassName.") ] 
    string SystemCreationClassName;

        [Propagated ("CIM_AutonomousSystem.Name"), Key, MaxLen (256),
         Description ("The scoping AutonomousSystem's Name.") ] 
    string SystemName; 

        [Key, Description (
         "CreationClassName indicates the name of the class or the "
         "subclass used in the creation of an instance. When used "
         "with the other key properties of this class, this property "
         "allows all instances of this class and its subclasses to "
         "be uniquely identified.") ]
    string CreationClassName;

        [Override ("Name"), Key, MaxLen(256), Description (
         "This is the name of the RouteMap class.") ]
    string Name; 

        [Description (
         "This defines whether this RouteMap is used for input, "
         "output, or both input and output filtering."),
         ValueMap {"1", "2", "3"},
         Values {"Input", "Output", "Both"} ]
    uint16 Direction;

        [Description (
         "This defines whether the action should be to forward or "
         "deny traffic meeting the match condition specified in this "
         "RouteMap."),
         ValueMap {"1", "2"},
         Values {"Permit", "Deny"} ] 
    uint16 Action;

        [Description (
         "This specifies the criteria that must be matched in order "
         "for the corresponding MatchAction to take effect. The "
         "matching of the criteria may be specified by using a "
         "FilterList. For example, the command 'match ip address foo' "
         "uses the FilterList named 'foo' to do the matching of IP "
         "addresses."),
         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
         Values {"Other", "Source Address and Mask",
            "Destination Address and Mask", "Source Port",
            "Source Port Range", "Destination Port",
            "Destination Port Range", "Protocol Type",
            "Protocol Type and Option"},
         ModelCorrespondence { 
            "CIM_RouteMap.OtherMatchConditionType"} ]
    uint16 MatchConditionType;

        [Description (
         "If the value of the MatchConditionType property in this "
         "class is 1 (i.e., \"Other\"), then the specific type of "
         "filtering is specified in this property."),
         ModelCorrespondence { 
          "CIM_RouteMap.MatchConditionType"} ]
    string OtherMatchConditionType; 

        [Description (
         "This defines an additional action to take if the "
         "MatchCondition is satisfied. This definition is "
         "specifically limited to BGP filtering at this time. The "
         "actual value of the metric is specified in the "
         "SetMetricValue property."),
         ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
         Values {"Origin", "AS_Path", "NEXT_HOP", "Multi_Exit_Disc",
            "Local_Pref", "Atomic_Aggregate", "Aggregator", "Community",
            "Originator_ID"},
         ModelCorrespondence {"CIM_BGPRouteMap.SetMetricValue"} ]
    uint16 SetMetricType;

        [Description (
         "This is the value of the metric that is being set for the "
         "BGP attribute defined in the SetMetricType property.") ]
    string SetMetricValue;
};


// ==================================================================
// HostedBGPRouteMap
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "A BGPRouteMap is weak to the AutonomousSystem that "
    "contains it. This association formalizes that "
    "relationship.") ]
class CIM_HostedBGPRouteMap : CIM_Dependency {

        [Override ("Antecedent"), Min (1), Max (1), Description (
         "The AutonomousSystem that scopes the BGPRouteMap.") ]
    CIM_AutonomousSystem REF Antecedent;

        [Override ("Dependent"), Weak, Description (
         "The BGPRouteMap defined in the context of the "
         "AutonomousSystem.") ] 
    CIM_BGPRouteMap REF Dependent;
};


// ==================================================================
// BGPRouteMapsInRoutingPolicy
// ==================================================================
   [Association, Aggregation, Version ("2.6.0"), 
    Description (
    "This aggregation defines the BGPRouteMaps that are used by a "
    "particular RoutingPolicy object. Multiple instances of the "
    "same RouteMap may be used in the same RoutingPolicy "
    "instance. If this is desired, then the Sequence attribute "
    "of this aggregation can be used to disambiguate them.") ]
class CIM_BGPRouteMapsInRoutingPolicy : CIM_Component {

        [Override ("GroupComponent"), Aggregate, Description (
         "The RoutingPolicy that aggregates the RouteMaps.") ] 
    CIM_RoutingPolicy REF GroupComponent;

        [Override ("PartComponent"), Description (
         "The RouteMaps that are used by the RoutingPolicy.") ] 
    CIM_BGPRouteMap REF PartComponent;

        [Description (
         "This defines the position of this RouteMap instance "
         "relative to all other instances of the same RouteMap.") ]
    uint16 MapSequence;
};


// ==================================================================
// BGPPeerUsesRouteMap
// ==================================================================
   [Association, Aggregation, Version ("2.6.0"), 
    Description (
    "This association defines the RouteMaps that are aggregated "
    "and used by a particular BGPPeerGroup object. Multiple "
    "instances of the same RouteMap may be aggregated into the "
    "same BGPPeerGroup. If this is desired, then the MapSequence "
    "attribute of the association can be used to disambiguate "
    "them.") ]
class CIM_BGPPeerUsesRouteMap : CIM_CollectedMSEs {

        [Override ("Collection"), Aggregate, 
         Description (
         "The BGPPeerGroup that aggregates the RouteMaps.") ] 
    CIM_BGPPeerGroup REF Collection;

        [Override ("Member"), 
         Description (
         "The RouteMaps that are used by the BGPPeerGroup.") ] 
    CIM_BGPRouteMap REF Member;

        [Description (
         "This defines the position of this RouteMap instance "
         "relative to all other instances of the same RouteMap.") ]
    uint16 MapSequence;
};


// ==================================================================
// FilterListsInBGPRouteMap
// ==================================================================
   [Association, Version ("2.6.0"), Description (
    "RouteMaps do not have to use FilterLists, but if they do, "
    "this association defines which FilterList is used by a "
    "particular RouteMap.") ] 
class CIM_FilterListsInBGPRouteMap : CIM_Dependency {

        [Override ("Antecedent"), Description (
         "The FilterList used by a RouteMap.") ] 
    CIM_FilterList REF Antecedent;

        [Override ("Dependent"), Description (
         "The RouteMap using the FilterList.") ] 
    CIM_BGPRouteMap REF Dependent;
};


// ==================================================================
// BGPPathAttributes 
// ==================================================================
   [Version ("2.7.0"), Description (
    "This class defines the per-path information used to process "
    "specific BGP attribute information, as defined in the "
    "bgp4PathAttrTable of RFC 1657.") ]
class CIM_BGPPathAttributes : CIM_LogicalElement {

        [Key, MaxLen (512), Description (
         "A comma-separated list of AS numbers, as would be stored "
         "in the value portion of the path segment in the "
         "PathAttrASPathSegment property. This list can be ordered "
         "or unordered.") ]
    string ASNumbers;

        [Key, MaxLen (32), Description (
         "This is the address of the border router that should be "
         "used for the destination network."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrNextHop"} ]
    string PathAttrNextHop;

        [OctetString, Description (
         "This property and its description are taken directly from "
         "RFC 1657. The property represents a sequence of AS path "
         "segments. Each AS path segment is represented by the "
         "tuple: \n"
         "     <type, length, value> \n"
         "The type is a 1-octet field which has two possible values: \n"
         " 1 = AS_SET \n"
         " 2 = AS_SEQUENCE \n"
         "An AS_SET is an unordered set of ASs representing the path "
         "that an UPDATE message has traversed, and an AS_SEQUENCE is "
         "an ordered set of ASs representing the path that an UPDATE "
         "message has traversed. \n"
         "The length is a 1-octet field containing the number of ASs "
         "in the value field. \n"
         "The value field contains one or more AS numbers, each AS is "
         "represented in the octet string as a pair of octets "
         "according to the following algorithm: \n"
         "    first-byte-of-pair = ASNumber / 256; \n"
         "    second-byte-of-pair = ASNumber & 255; \n"
         "This property is mapped from the bgp4PathAttrASPathSegment "
         "MIB variable, which is an OctetString. Its length is "
         "defined as a minimum of 2 and a maximum of 255 octets."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrASPathSegment"} ]
    uint8 PathAttrASPathSegment[];

        [Description (
         "This is an enumeration that defines the ultimate origin of "
         "the path information. The value 'IGP' means that the origin "
         "is interior; the value 'EGP' means that it was learned via "
         "an EGP; the value 'INCOMPLETE' means that the origin is "
         "undetermined."),
         ValueMap {"1", "2", "3"},
         Values {"IGP", "EGP", "Incomplete"},
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrOrigin"} ]
    uint16 PathAttrOrigin;

        [Description (
         "This metric is used to discriminate between multiple "
         "adjacent autonomous systems. A value of -1 indicates the "
         "absence of this attribute. The range of this attribute "
         "is defined to be -1 to 2147483647."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrMultiExitDisc"} ]
    sint32 PathAttrMultiExitDisc;

        [Description (
         "This is the originating BGP4 speaker's degree of preference "
         "for an advertised route. A value of -1 indicates the "
         "absence of this attribute. The range of this attribute is "
         "defined to be -1 to 2147483647."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrLocalPref"} ]
    sint32 PathAttrLocalPref;

        [Description (
         "This is an enumeration that defines whether or not the "
         "local system has selected a less specific route without "
         "selecting a more specific route. There are two values, 1 "
         "and 2, indicating that a less specific route has not and "
         "has been selected, respectively. This is a 32-bit integer "
         "to correspond to the IETF MIB."),
         ValueMap {"0", "1", "2"},
         Values {"Unknown", "Less Specific Not Selected",
            "Less Specific Selected"},
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrAtomicAggregate"} ]
    uint32 PathAttrAtomicAggregate;

        [Description (
         "This is the AS number of the last BGP speaker that "
         "performed route aggregation. A value of 0 indicates the "
         "absence of this attribute. The range of this attribute is "
         "defined to be 0 to 65535."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrAggregatorAS"} ]
    uint16 PathAttrAggregatorAS; 

        [Description (
         "This is the IP address of the last BGP speaker that "
         "performed route aggregation. A value of 0.0.0.0 indicates "
         "the absence of this attribute."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrAggregatorAddr"} ]
    string PathAttrAggregatorAddr;

        [Description (
         "This is the degree of preference calculated by the "
         "receiving BGP speaker for an advertised route. A value of "
         "-1 indicates the absence of this attribute. The range of "
         "this attribute is defined to be -1 to 2147483647."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrCalcLocalPref"} ]
    sint16 PathAttrCalcLocalPref;

        [Description (
         "This is an indication of whether or not this route was "
         "chosen as the best BGP route. There are three possible "
         "values, 0 (Unknown), 1 (FALSE) and 2 (TRUE)."),
         ValueMap {"0", "1", "2"},
         Values {"Unknown", "False", "True"}, 
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrBest"} ]
    uint16 PathAttrBest;

        [OctetString, Description (
         "This contains one or more path atributes not understood by "
         "this BGP speaker. It is a array of path attributes that are "
         "not understood. The number of attributes is placed in a "
         "separate property of this class, PathAttrUnknownNumber."),
         ModelCorrespondence { 
            "CIM_BGPPathAttributes.PathAttrUnknownNumber"},
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrUnknown"} ]
    string PathAttrUnknown[];

        [Description (
         "The number of unknown attributes in the array, "
         "PathAttrUnknown."),
         ModelCorrespondence { 
            "CIM_BGPPathAttributes.PathAttrUnknown"},
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrUnknown"} ]
    uint16 PathAttrUnknownNumber;
};


// ==================================================================
// BGPAttributesForRoute
// ==================================================================
   [Association, Version ("2.7.0"), Description (
    "This defines the attributes that are transmitted between "
    "BGP peers on a per-route basis.") ] 
class CIM_BGPAttributesForRoute : CIM_Dependency {

        [Override ("Antecedent"), Max (1), Description (
         "The BGPPathAttribute object that may be associated with "
         "a BGPIPRoute.") ]
    CIM_BGPPathAttributes REF Antecedent;

        [Override ("Dependent"), Max (1), Description (
         "The BGPIPRoute that may have an associated set of "
         "per-peer attributes.") ]
    CIM_BGPIPRoute REF Dependent;

        [Description (
         "This defines the IP address of the peer where the path "
         "information was learned."),
         ModelCorrespondence {
            "CIM_BGPPathAttributes.PathAttrIpAddrPrefixLen", 
            "CIM_BGPPathAttributes.PathAttrIpAddrPrefix"},
         MappingStrings {"MIB.IETF|BGP4-MIB.bgp4PathAttrPeer"} ]
    string PathAttrPeer;

        [Description (
         "This defines the length in bits of the IP address prefix "
         "for the property, PathAttrPeer. The range is 0 to 32."),
         ModelCorrespondence {
            "CIM_BGPPathAttributes.PathAttrPeer"}, 
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrIpAddrPrefixLen"} ]
    uint8 PathAttrIPAddrPrefixLen; 

        [Description (
         "The IP address prefix of the property, PathAttrPeer. " 
         "Its length is specified by the property, "
         "PathAttrIpAddrPrefixLen."),
         ModelCorrespondence {
            "CIM_BGPPathAttributes.PathAttrPeer", 
            "CIM_BGPPathAttributes.PathAttrIpAddrPrefixLen"},
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgp4PathAttrIpAddrPrefix"} ]
    string PathAttrIPAddrPrefix; 
};


// ==================================================================
// BGPServiceAttributes 
// ==================================================================
   [Association, Aggregation, 
    Deprecated {"No value"}, Version ("2.7.0"), 
    Description (
    "This is a specialization of the Component aggregation. This "
    "aggregation defines the set of BGPPathAttributes that are "
    "transmitted in per-path UPDATE messages. The association is "
    "deprecated since it is incorrectly defined as a Component "
    "relationship, and since the properties of BGPPathAttribute are "
    "path/endpoint-specific (not defined at the level of the Service).") ]
class CIM_BGPServiceAttributes : CIM_Component {

        [Override ("GroupComponent"), Aggregate, Max (1),
         Deprecated {"No value"},
         Description (
         "The BGPService that aggregates BGPPathAttributes as part of "
         "its routing information.") ]
    CIM_BGPService REF GroupComponent;

        [Override ("PartComponent"), Max (1), 
         Deprecated {"No value"}, Description (
         "The BGP attribute, which are part-of the BGP UPDATE "
         "message.") ]
    CIM_BGPPathAttributes REF PartComponent;
};


// ==================================================================
// BGPEndpointStatistics
// ==================================================================
   [Version ("2.7.0"), Description (
    "This class contains statistical information for a "
    "connection on a BGPProtocolEndpoint. It is defined as a "
    "subclass of StatisticalData and associated with the Endpoint "
    "using the relationship, ElementStatisticalData.") ]
class CIM_BGPEndpointStatistics : CIM_StatisticalData {

        [Counter, Description (
         "This is the number of BGP UPDATE messages received on this "
         "router's BGP connection. This is a 32-bit counter."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpPeerInUpdates"} ]
    uint32 InUpdates; 

        [Counter, Description (
         "This is the number of BGP UPDATE messages transmitted on "
         "this router's BGP connection. This is a 32-bit counter."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpPeerOutUpdates"} ]
    uint32 OutUpdates; 

        [Counter, Description (
         "This is the total number of BGP messages received on this "
         "router's BGP connection. This is a 32-bit counter."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerInTotalMessages"} ]
    uint32 InTotalMessages;

        [Counter, Description (
         "This is the total number of BGP messages transmitted on "
         "this router's BGP connection. This is a 32-bit counter."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerOutTotalMessages"} ]
    uint32 OutTotalMessages;

        [Description (
         "This contains the last error code and error subcode for "
         "this router's BGP connection. If no error has occurred, "
         "then each integer in the array is zero."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpPeerLastError"} ]
    uint8 LastError [2]; 

        [Counter, Description (
         "This contains the total number of times that the BGP Finite "
         "State Machine has transitioned into the established state "
         "for this router's BGP connection. This is a 32-bit "
         "counter."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerFsmEstablishedTransitions"} ]
    uint32 FsmEstablishedTransitions;

        [Gauge, Description (
         "This indicates how long, in seconds, this peer has been in "
         "the established state, or how long since this peer was last "
         "in the established state. It is set to zero when a new peer "
         "is configured or when the router is booted. This has the "
         "semantics of a 32-bit gauge."),
         Units ("Seconds"),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerFsmEstablishedTime"} ]
    uint32 FsmEstablishedTime; 

        [Gauge, Description (
         "This defines the time in seconds since the last BGP UPDATE "
         "message was received from the peer. This has the semantics "
         "of a 32-bit gauge."),
         Units ("Seconds"),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerInUpdateElapsedTime"} ]
    uint32 InUpdateElapsedTime;
};


// ==================================================================
// BGPStatistics
// ==================================================================
   [Deprecated {"CIM_BGPEndpointStatistics"}, Version ("2.7.0"), 
    Description (
    "This class contains statistical information for a "
    "Service's sessions. It is deprecated since the statistics are "
    "defined in the BGP4 MIB at the level of individual peers/"
    "endpoints.") ]
class CIM_BGPStatistics : CIM_ServiceStatisticalInformation {

        [Deprecated {"CIM_BGPEndpointStatistics.InUpdates"}, 
         Counter, Description (
         "This is the number of BGP UPDATE messages received on this "
         "router's BGP connection. This is a 32-bit counter."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpPeerInUpdates"} ]
    uint32 InUpdates; 

        [Deprecated {"CIM_BGPEndpointStatistics.OutUpdates"}, 
         Counter, Description (
         "This is the number of BGP UPDATE messages transmitted on "
         "this router's BGP connection. This is a 32-bit counter."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpPeerOutUpdates"} ]
    uint32 OutUpdates; 

        [Deprecated {"CIM_BGPEndpointStatistics.InTotalMessages"}, 
         Counter, Description (
         "This is the total number of BGP messages received on this "
         "router's BGP connection. This is a 32-bit counter."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerInTotalMessages"} ]
    uint32 InTotalMessages;

        [Deprecated {"CIM_BGPEndpointStatistics.OutTotalMessages"}, 
         Counter, Description (
         "This is the total number of BGP messages transmitted on "
         "this router's BGP connection. This is a 32-bit counter."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerOutTotalMessages"} ]
    uint32 OutTotalMessages;

        [Deprecated {"CIM_BGPEndpointStatistics.LastError"}, 
         Description (
         "This contains the last error code and error subcode for "
         "this router's BGP connection. If no error has occurred, "
         "then each integer in the array is zero."),
         MappingStrings {"MIB.IETF|BGP4-MIB.bgpPeerLastError"} ]
    uint8 LastError [2]; 

        [Deprecated {"CIM_BGPEndpointStatistics.FsmEstablishedTransitions"}, 
         Counter, Description (
         "This contains the total number of times that the BGP Finite "
         "State Machine has transitioned into the established state "
         "for this router's BGP connection. This is a 32-bit "
         "counter."),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerFsmEstablishedTransitions"} ]
    uint32 FsmEstablishedTransitions;

        [Deprecated {"CIM_BGPEndpointStatistics.FsmEstablishedTime"}, 
         Gauge, Description (
         "This indicates how long, in seconds, this peer has been in "
         "the established state, or how long since this peer was last "
         "in the established state. It is set to zero when a new peer "
         "is configured or when the router is booted. This has the "
         "semantics of a 32-bit gauge."),
         Units ("Seconds"),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerFsmEstablishedTime"} ]
    uint32 FsmEstablishedTime; 

        [Deprecated {"CIM_BGPEndpointStatistics.InUpdateEstablishedTime"}, 
         Gauge, Description (
         "This defines the time in seconds since the last BGP UPDATE "
         "message was received from the peer. This has the semantics "
         "of a 32-bit gauge."),
         Units ("Seconds"),
         MappingStrings {
            "MIB.IETF|BGP4-MIB.bgpPeerInUpdateElapsedTime"} ]
    uint32 InUpdateElapsedTime;
};


// ==================================================================
// BGPServiceStatistics
// ================================================================== 
   [Association, Deprecated {"CIM_ElementStatisticalData"}, 
    Version ("2.7.0"), Description ( 
    "This association defines statistics collected for a BGP " 
    "Service. The relationship is deprecated since the class "
    "BGPStatistics is deprecated. It is incorrectly associated "
    "with a BGPService, but should instead be associated with "
    "a BGPProtocolEndpoint using the ElementStatisticalData "
    "relationship.") ]
class CIM_BGPServiceStatistics : CIM_ServiceStatistics { 

        [Override ("Stats"), Max (1), 
         Deprecated {"CIM_ElementStatisticalData.Stats"}, 
         Description (
         "The statistics object for the BGP session.") ] 
    CIM_BGPStatistics REF Stats;

        [Override ("Element"), Min (1), Max (1), 
         Deprecated {"CIM_ElementStatisticalData.ManagedElement"},
         Description ( 
         "The BGPService for which statistics are being gathered.") ] 
    CIM_BGPService REF Element;
};


// ===================================================================
// end of file
// ===================================================================
