// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.8.0" ), 
    UMLPackagePath ( "CIM::Network::ProtocolEndpoints" ), 
    Description ( 
       "A ProtocolEndpoint that is dedicated to running BGP." )]
class CIM_BGPProtocolEndpoint : CIM_ProtocolEndpoint {

      [Description ( 
          "A boolean that, when TRUE, signifies that this is an "
          "instance of the external version of BGP (FALSE is the "
          "internal version)." )]
   boolean IsEBGP;

      [Description ( 
          "Normally, two routers running EBGP must be physically "
          "connected. This boolean, when TRUE, denotes a LOGICAL "
          "connection between two routers that are running EBGP "
          "(e.g., there is an intermediate router or interface "
          "between them)." )]
   boolean IsEBGPMultihop;

      [Description ( 
          "This is the unique identifier of the local BGP router. "
          "This is often the router ID (e.g., an IP address)." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpIdentifier" }]
   string LocalIdentifier;

      [Description ( 
          "This is the unique identifier of the peer BGP router. "
          "This is often the router ID (e.g., an IP address)." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerIdentifier" }]
   string PeerIdentifier;

      [Description ( 
          "This defines the current connection state of the BGP Peer."
           ), 
       ValueMap { "1", "2", "3", "4", "5", "6" }, 
       Values { "Idle", "Connect", "Active", "OpenSet", 
          "OpenConfirm", "Established" }, 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerState" }]
   uint16 State;

      [Deprecated { "CIM_EnabledLogicalElement.RequestedState" }, 
       Description ( 
          "This defines the desired state of the BGP connection. It "
          "is equivalent to the RequestedState property (i.e., "
          "enabled/disabled status) that is inherited from "
          "EnabledLogicalElement. AdminStatus is deprecated in lieu "
          "of this inherited property." ), 
       ValueMap { "1", "2" }, 
       Values { "Stop", "Start" }, 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerAdminStatus" }]
   uint16 AdminStatus;

      [Description ( 
          "This defines the negotiated version of BGP that is "
          "running between the two peers." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerNegotiatedVersion" }]
   string NegotiatedVersion;

      [Deprecated { "CIM_BindsTo", "CIM_IPProtocolEndpoint" }, 
       Description ( 
          "This is the local IP address of this router\'s BGP "
          "connection. It is deprecated since a binding should be "
          "defined using the CIM_BindsTo association. Ideally the "
          "binding is to a TCPProtocolEndpoint which then handles "
          "the association to its IPEndpoint." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerLocalAddr" }]
   string LocalAddress;

      [Deprecated { "CIM_BindsTo", "CIM_TCPProtocolEndpoint" }, 
       Description ( 
          "This is the local port number for the TCP connection of "
          "this router\'s BGP connection. It is deprecated since a "
          "binding should be defined (to a TCPProtocolEndpoint) "
          "using the CIM_BindsTo association." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerLocalPort" }]
   uint16 LocalPort;

      [Deprecated { "CIM_BindsTo", "CIM_RemoteServiceAccessPoint" }, 
       Description ( 
          "This is the remote IP address of this router\'s BGP "
          "connection. It is deprecated since a binding to a Remote "
          "ServiceAccessPoint should be instantiated, using "
          "CIM_BindsTo." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerRemoteAddr" }]
   string RemoteAddress;

      [Deprecated { "CIM_BindsTo", "CIM_RemotePort" }, 
       Description ( 
          "This is the remote port number for the TCP connection of "
          "this router\'s BGP connection. It is deprecated since a "
          "binding to a RemotePort should be instantiated, using "
          "CIM_BindsTo." ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerRemotePort" }]
   uint16 RemotePort;

      [Description ( 
          "This is the remote AS number for this router\'s BGP connection."
           ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerRemoteAs" }]
   uint16 RemoteAS;

      [Description ( 
          "This defines the time interval, in seconds, for the "
          "ConnectRetry timer. 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 "
          "Time configured for this BGP speaker with a peer. This "
          "value is placed in an OPEN message sent to a peer by "
          "this BGP speaker, and is compared with the Hold Time "
          "field in the OPEN message received from the peer. It "
          "enables this speaker to establish a mutually agreeable "
          "Hold Time with the peer. This value must not be less "
          "than three seconds. If it is zero, then the Hold Time is "
          "NOT to be established with the peer. 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 "
          "KeepAlive timer configured for this BGP speaker with a "
          "peer. This value will determine the frequency of the "
          "KEEPALIVE messages relative to the value of the "
          "HoldTimeConfigured property; the actual frequency is "
          "specified by the value of the KeepAlive property. A "
          "reasonable value is one third of that of the value of "
          "the HoldTimeConfigured property. If it is zero, then NO "
          "periodic KEEPALIVE messages are sent to the peer. 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. 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. The suggested value "
          "for this property is 30 seconds." ), 
       Units ( "Seconds" ), 
       MappingStrings { 
          "MIB.IETF|BGP4-MIB.bgpPeerMinRouteAdvertisementInterval" }]
   uint16 MinRouteAdvertisementInterval = 30;

      [Description ( 
          "This defines the maximum amount of time in seconds that "
          "may elapse between the receipt of successive KEEPALIVE "
          "or UPDATE messages. This is instrumented as a counter "
          "that increments from zero to the value specified in this "
          "property. The value of this property is calculated by "
          "the BGP speaker by using the smaller of the values of "
          "bgpPeerHoldTimeConfigured and the Hold Time received in "
          "the OPEN message. This value, if not zero seconds, must "
          "be at least three seconds, up to a maximum of 65535 "
          "seconds. Receipt of either a KEEPALIVE or an UPDATE "
          "message resets this value." ), 
       Units ( "Seconds" ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerHoldTime" }]
   uint16 HoldTime;

      [Description ( 
          "This defines the time interval in seconds for the "
          "KeepAlive timer established with the peer. The value of "
          "this property is calculated by the speaker such that, "
          "when compared with the HoldTime property, it has the "
          "same proportion as the KeepAliveConfigured property has "
          "with the HoldTimeConfigured property. A value of 0 "
          "indicates that the KeepAlive timer has not yet been "
          "established. The maximum value of this property is 21845 "
          "seconds." ), 
       Units ( "Seconds" ), 
       MappingStrings { "MIB.IETF|BGP4-MIB.bgpPeerKeepAlive" }]
   uint16 KeepAlive;

      [Override ( "ProtocolIFType" ), 
       Description ( 
          "ProtocolIFType\'s enumeration is limited to BGP and "
          "reserved values for this subclass of ProtocolEndpoint." ), 
       ValueMap { "1", "225..4095", "4108", "4301..32767", "32768.." }, 
       Values { "Other", "IANA Reserved", "BGP", "DMTF Reserved", 
          "Vendor Reserved" }]
   uint16 ProtocolIFType = 4108;


};
