OpenSDN source code
bgp_server.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_BGP_BGP_SERVER_H_
6 #define SRC_BGP_BGP_SERVER_H_
7 
8 #include <tbb/spin_rw_mutex.h>
9 #include <boost/asio/ip/tcp.hpp>
10 #include <boost/dynamic_bitset.hpp>
11 #include <boost/scoped_ptr.hpp>
12 #include <boost/bind/bind.hpp>
13 #include "io/event_manager.h"
14 
15 #include <map>
16 #include <set>
17 #include <string>
18 #include <vector>
19 #include <atomic>
20 
21 #include "bgp/bgp_common.h"
22 #include "db/db.h"
23 #include "io/tcp_server.h"
24 #include "io/tcp_session.h"
25 #include "base/address.h"
27 
28 using namespace boost::placeholders;
29 
30 class AsPathDB;
31 class AsPath4ByteDB;
32 class As4PathDB;
33 class BgpAttrDB;
35 class BgpConfigManager;
37 class BgpGlobalQosConfig;
39 class BgpOListDB;
40 class BgpPeer;
41 class BgpRouterState;
42 class BgpSessionManager;
43 class BgpUpdateSender;
44 class ClusterListDB;
45 class CommunityDB;
46 class EdgeDiscoveryDB;
47 class EdgeForwardingDB;
48 class ExtCommunityDB;
49 class LargeCommunityDB;
50 class IServiceChainMgr;
51 class IStaticRouteMgr;
52 class LifetimeActor;
53 class LifetimeManager;
54 class OriginVnPathDB;
55 class PmsiTunnelDB;
57 class RoutingInstanceMgr;
58 class RoutingPolicyMgr;
59 class RTargetGroupMgr;
60 class XmppServer;
61 
62 class BgpServer {
63 public:
64  typedef boost::function<void()> AdminDownCb;
65  typedef boost::function<void(uint8_t)> DSCPUpdateCb;
66  typedef boost::function<void(as_t, as_t)> ASNUpdateCb;
67  typedef boost::function<void(Ip4Address)> IdentifierUpdateCb;
68  typedef boost::function<void(BgpPeer *)> VisitorFn;
69  typedef std::set<IStaticRouteMgr *> StaticRouteMgrList;
70 
71  explicit BgpServer(EventManager *evm);
72  virtual ~BgpServer();
73 
74  static void Initialize();
75  static void Terminate();
76 
77  virtual std::string ToString() const;
78 
79  uint16_t GetGracefulRestartTime() const;
80  uint32_t GetLongLivedGracefulRestartTime() const;
81  bool IsFastConvergenceEnabled() const;
82  uint16_t GetXmppHoldTime() const;
83  bool IsNextHopCheckEnabled() const;
84  uint32_t GetEndOfRibReceiveTime() const;
85  uint32_t GetEndOfRibSendTime() const;
86 
87  int RegisterPeer(BgpPeer *peer);
88  void UnregisterPeer(BgpPeer *peer);
89  BgpPeer *FindPeer(const std::string &name);
90  BgpPeer *FindNextPeer(const std::string &name = std::string());
91  void InsertPeer(TcpSession::Endpoint remote, BgpPeer *peer);
92  void RemovePeer(TcpSession::Endpoint remote, BgpPeer *peer);
93  virtual BgpPeer *FindPeer(TcpSession::Endpoint remote) const;
94  BgpPeer *FindExactPeer(const BgpPeer *peer) const;
95 
96  void Shutdown();
97 
98  void VisitBgpPeers(BgpServer::VisitorFn) const;
99 
100  // accessors
101  BgpSessionManager *session_manager() { return session_mgr_; }
102  BgpUpdateSender *update_sender() { return update_sender_.get(); }
103  LifetimeManager *lifetime_manager() { return lifetime_manager_.get(); }
104  BgpConfigManager *config_manager() { return config_mgr_.get(); }
105  const BgpConfigManager *config_manager() const { return config_mgr_.get(); }
106  RoutingInstanceMgr *routing_instance_mgr() { return inst_mgr_.get(); }
108  return inst_mgr_.get();
109  }
110  RoutingPolicyMgr *routing_policy_mgr() { return policy_mgr_.get(); }
112  return policy_mgr_.get();
113  }
114  RTargetGroupMgr *rtarget_group_mgr() { return rtarget_group_mgr_.get(); }
116  return rtarget_group_mgr_.get();
117  }
119  if (family == Address::INET)
120  return inet_condition_listener_.get();
121  if (family == Address::INET6)
122  return inet6_condition_listener_.get();
123  if (family == Address::EVPN)
124  return evpn_condition_listener_.get();
125  assert(false);
126  return NULL;
127  }
129  if (family == SCAddress::INET)
130  return inet_condition_listener_.get();
131  if (family == SCAddress::INET6)
132  return inet6_condition_listener_.get();
133  if (family == SCAddress::EVPN)
134  return evpn_condition_listener_.get();
135  if (family == SCAddress::EVPN6)
136  return evpn6_condition_listener_.get();
137  assert(false);
138  return NULL;
139  }
141  if (family == SCAddress::INET)
142  return inet_service_chain_mgr_.get();
143  if (family == SCAddress::INET6)
144  return inet6_service_chain_mgr_.get();
145  if (family == SCAddress::EVPN)
146  return evpn_service_chain_mgr_.get();
147  if (family == SCAddress::EVPN6)
148  return evpn6_service_chain_mgr_.get();
149  assert(false);
150  return NULL;
151  }
153  if (family == Address::INETVPN)
154  return inetvpn_replicator_.get();
155  if (family == Address::EVPN)
156  return evpn_replicator_.get();
157  if (family == Address::ERMVPN)
158  return ermvpn_replicator_.get();
159  if (family == Address::MVPN)
160  return mvpn_replicator_.get();
161  if (family == Address::INET6VPN)
162  return inet6vpn_replicator_.get();
163  return NULL;
164  }
166  if (family == Address::INETVPN)
167  return inetvpn_replicator_.get();
168  if (family == Address::EVPN)
169  return evpn_replicator_.get();
170  if (family == Address::ERMVPN)
171  return ermvpn_replicator_.get();
172  if (family == Address::MVPN)
173  return mvpn_replicator_.get();
174  if (family == Address::INET6VPN)
175  return inet6vpn_replicator_.get();
176  return NULL;
177  }
178 
179  BgpMembershipManager *membership_mgr() { return membership_mgr_.get(); }
181  return membership_mgr_.get();
182  }
183 
184  AsPathDB *aspath_db() { return aspath_db_.get(); }
185  AsPath4ByteDB *aspath_4byte_db() { return aspath_4byte_db_.get(); }
186  As4PathDB *as4path_db() { return as4path_db_.get(); }
187  BgpAttrDB *attr_db() { return attr_db_.get(); }
188  BgpOListDB *olist_db() { return olist_db_.get(); }
189  ClusterListDB *cluster_list_db() { return cluster_list_db_.get(); }
190  CommunityDB *comm_db() { return comm_db_.get(); }
191  EdgeDiscoveryDB *edge_discovery_db() { return edge_discovery_db_.get(); }
192  EdgeForwardingDB *edge_forwarding_db() { return edge_forwarding_db_.get(); }
193  ExtCommunityDB *extcomm_db() { return extcomm_db_.get(); }
194  LargeCommunityDB *largecomm_db() { return largecomm_db_.get(); }
195  OriginVnPathDB *ovnpath_db() { return ovnpath_db_.get(); }
196  PmsiTunnelDB *pmsi_tunnel_db() { return pmsi_tunnel_db_.get(); }
197 
198  bool IsDeleted() const;
199  bool IsReadyForDeletion();
200  void RetryDelete();
201  bool logging_disabled() const { return logging_disabled_; }
202  void set_logging_disabled(bool flag) { logging_disabled_ = flag; }
203 
204  bool destroyed() const { return destroyed_; }
205  void set_destroyed() { destroyed_ = true; }
206 
207  DB *database() { return &db_; }
208  const std::string &localname() const;
209  bool admin_down() const { return admin_down_; }
210  uint32_t cluster_id() const { return cluster_id_; }
211  void set_cluster_id(uint32_t id) { cluster_id_ = id; }
212  as_t autonomous_system() const { return autonomous_system_; }
213  void set_autonomous_system(as_t asn) { autonomous_system_ = asn; }
214  as_t local_autonomous_system() const { return local_autonomous_system_; }
215  uint32_t bgp_identifier() const { return bgp_identifier_.to_ulong(); }
216  uint32_t bgp_identifier_u32() const { return bgp_identifier_u32_; }
217 
218  std::string bgp_identifier_string() const {
219  return bgp_identifier_.to_string();
220  }
221  void UpdateBgpIdentifier(const Ip4Address &identifier);
222  uint32_t hold_time() const { return hold_time_; }
223  bool HasSelfConfiguration() const;
224 
225  // Status
226  uint32_t num_routing_instance() const;
227  uint32_t num_deleted_routing_instance() const;
228 
229  uint32_t num_bgp_peer() const { return bgp_count_; }
230  uint32_t num_deleting_bgp_peer() const { return deleting_count_; }
231  void increment_deleting_count() { deleting_count_++; }
233  assert(deleting_count_ > 0);
234  deleting_count_--;
235  }
236 
237  uint32_t num_bgpaas_peer() const { return bgpaas_count_; }
238  uint32_t num_deleting_bgpaas_peer() const { return deleting_bgpaas_count_; }
239  void increment_deleting_bgpaas_count() { deleting_bgpaas_count_++; }
241  assert(deleting_bgpaas_count_ > 0);
242  deleting_bgpaas_count_--;
243  }
244 
245  uint32_t get_output_queue_depth() const;
246 
247  uint32_t num_service_chains() const;
248  uint32_t num_down_service_chains() const;
249  uint32_t num_static_routes() const;
250  uint32_t num_down_static_routes() const;
251 
253  num_up_peer_++;
254  }
256  assert(num_up_peer_);
257  num_up_peer_--;
258  }
259  uint32_t NumUpPeer() const {
260  return num_up_peer_;
261  }
263  num_up_bgpaas_peer_++;
264  }
266  assert(num_up_bgpaas_peer_);
267  num_up_bgpaas_peer_--;
268  }
269  uint32_t NumUpBgpaasPeer() const {
270  return num_up_bgpaas_peer_;
271  }
272 
274  boost::asio::io_context *ioservice();
275 
276  void increment_message_build_error() const { ++message_build_error_; }
277  uint64_t message_build_error() const { return message_build_error_; }
278 
279  int RegisterAdminDownCallback(AdminDownCb callback);
280  void UnregisterAdminDownCallback(int listener);
281  void NotifyAdminDown();
282  int RegisterASNUpdateCallback(ASNUpdateCb callback);
283  void UnregisterASNUpdateCallback(int listener);
284  void NotifyASNUpdate(as_t old_asn, as_t old_local_asn);
285  int RegisterIdentifierUpdateCallback(IdentifierUpdateCb callback);
286  void UnregisterIdentifierUpdateCallback(int listener);
287  void NotifyIdentifierUpdate(Ip4Address old_identifier);
288  int RegisterDSCPUpdateCallback(DSCPUpdateCb cb);
289  void UnregisterDSCPUpdateCallback(int listener);
290  void NotifyDSCPUpdate(int new_dscp_value);
291 
292  void InsertStaticRouteMgr(IStaticRouteMgr *srt_manager);
293  void RemoveStaticRouteMgr(IStaticRouteMgr *srt_manager);
294  void NotifyAllStaticRoutes();
295  uint32_t GetStaticRouteCount() const;
296  uint32_t GetDownStaticRouteCount() const;
297  BgpGlobalSystemConfig *global_config() { return global_config_.get(); }
299  return global_config_.get();
300  }
301  BgpGlobalQosConfig *global_qos() { return global_qos_.get(); }
302  bool gr_helper_disable() const { return gr_helper_disable_; }
303  void set_gr_helper_disable(bool gr_helper_disable) {
304  gr_helper_disable_ = gr_helper_disable;
305  }
306  bool IsGRHelperModeEnabled() const;
307  bool CollectStats(BgpRouterState *state, bool first) const;
308  bool IsServerStartingUp() const;
309  time_t GetRTargetTableLastUpdatedTimeStamp() const;
310  bool mvpn_ipv4_enable() const { return mvpn_ipv4_enable_; }
311  void set_mvpn_ipv4_enable(bool flag) { mvpn_ipv4_enable_ = flag; }
312  bool enable_4byte_as() const;
313  void set_enable_4byte_as(bool flag);
314  bool ignore_aspath() const { return ignore_aspath_; }
315  void set_ignore_aspath(bool flag) { ignore_aspath_ = flag; }
316 
317 private:
318  class ConfigUpdater;
319  class DeleteActor;
320  friend class BgpServerTest;
321  friend class BgpServerUnitTest;
322  typedef std::map<std::string, BgpPeer *> BgpPeerList;
323  typedef std::vector<AdminDownCb> AdminDownListenersList;
324  typedef std::vector<ASNUpdateCb> ASNUpdateListenersList;
325  typedef std::vector<IdentifierUpdateCb> IdentifierUpdateListenersList;
326  typedef std::vector<DSCPUpdateCb> DSCPUpdateListenersList;
327  typedef std::multimap<TcpSession::Endpoint, BgpPeer *> EndpointPeerList;
328 
330  void FillPeerStats(const BgpPeer *peer) const;
331  void ClearBgpaaSPeers();
332 
333  // base config variables
334  tbb::spin_rw_mutex rw_mutex_;
337  boost::dynamic_bitset<> admin_down_bmap_; // free list.
338  uint32_t cluster_id_;
342  boost::dynamic_bitset<> asn_bmap_; // free list.
346  boost::dynamic_bitset<> id_bmap_; // free list.
348  boost::dynamic_bitset<> dscp_bmap_; // free list.
349  uint32_t hold_time_;
352 
354  boost::dynamic_bitset<> peer_bmap_;
355  std::atomic<uint32_t> bgp_count_;
356  std::atomic<uint32_t> num_up_peer_;
357  std::atomic<uint32_t> deleting_count_;
358  std::atomic<uint32_t> bgpaas_count_;
359  std::atomic<uint32_t> num_up_bgpaas_peer_;
360  std::atomic<uint32_t> deleting_bgpaas_count_;
363 
364  boost::scoped_ptr<LifetimeManager> lifetime_manager_;
365  boost::scoped_ptr<DeleteActor> deleter_;
370 
371  // databases
372  boost::scoped_ptr<AsPathDB> aspath_db_;
373  boost::scoped_ptr<AsPath4ByteDB> aspath_4byte_db_;
374  boost::scoped_ptr<As4PathDB> as4path_db_;
375  boost::scoped_ptr<BgpOListDB> olist_db_;
376  boost::scoped_ptr<ClusterListDB> cluster_list_db_;
377  boost::scoped_ptr<CommunityDB> comm_db_;
378  boost::scoped_ptr<EdgeDiscoveryDB> edge_discovery_db_;
379  boost::scoped_ptr<EdgeForwardingDB> edge_forwarding_db_;
380  boost::scoped_ptr<ExtCommunityDB> extcomm_db_;
381  boost::scoped_ptr<LargeCommunityDB> largecomm_db_;
382  boost::scoped_ptr<OriginVnPathDB> ovnpath_db_;
383  boost::scoped_ptr<PmsiTunnelDB> pmsi_tunnel_db_;
384  boost::scoped_ptr<BgpAttrDB> attr_db_;
385 
386  // sessions and state managers
388  boost::scoped_ptr<BgpUpdateSender> update_sender_;
389  boost::scoped_ptr<RoutingInstanceMgr> inst_mgr_;
390  boost::scoped_ptr<RoutingPolicyMgr> policy_mgr_;
391  boost::scoped_ptr<RTargetGroupMgr> rtarget_group_mgr_;
392  boost::scoped_ptr<BgpMembershipManager> membership_mgr_;
393  boost::scoped_ptr<BgpConditionListener> inet_condition_listener_;
394  boost::scoped_ptr<BgpConditionListener> inet6_condition_listener_;
395  boost::scoped_ptr<BgpConditionListener> evpn_condition_listener_;
396  boost::scoped_ptr<BgpConditionListener> evpn6_condition_listener_;
397  boost::scoped_ptr<RoutePathReplicator> inetvpn_replicator_;
398  boost::scoped_ptr<RoutePathReplicator> ermvpn_replicator_;
399  boost::scoped_ptr<RoutePathReplicator> mvpn_replicator_;
400  boost::scoped_ptr<RoutePathReplicator> evpn_replicator_;
401  boost::scoped_ptr<RoutePathReplicator> inet6vpn_replicator_;
402  boost::scoped_ptr<IServiceChainMgr> inet_service_chain_mgr_;
403  boost::scoped_ptr<IServiceChainMgr> inet6_service_chain_mgr_;
404  boost::scoped_ptr<IServiceChainMgr> evpn_service_chain_mgr_;
405  boost::scoped_ptr<IServiceChainMgr> evpn6_service_chain_mgr_;
406 
407  // configuration
408  boost::scoped_ptr<BgpGlobalSystemConfig> global_config_;
409  boost::scoped_ptr<BgpGlobalQosConfig> global_qos_;
410  boost::scoped_ptr<BgpConfigManager> config_mgr_;
411  boost::scoped_ptr<ConfigUpdater> updater_;
412 
413  mutable std::atomic<uint64_t> message_build_error_;
414 
416 };
417 
418 #endif // SRC_BGP_BGP_SERVER_H_
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
uint32_t as_t
Definition: bgp_common.h:21
Family
Definition: address.h:24
@ INET
Definition: address.h:26
@ EVPN
Definition: address.h:31
@ INET6VPN
Definition: address.h:29
@ ERMVPN
Definition: address.h:32
@ INET6
Definition: address.h:27
@ INETVPN
Definition: address.h:28
@ MVPN
Definition: address.h:33
std::atomic< uint32_t > num_up_bgpaas_peer_
Definition: bgp_server.h:359
void RoutingInstanceMgrDeletionComplete(RoutingInstanceMgr *mgr)
void decrement_deleting_count()
Definition: bgp_server.h:232
boost::scoped_ptr< BgpAttrDB > attr_db_
Definition: bgp_server.h:384
boost::scoped_ptr< RoutePathReplicator > ermvpn_replicator_
Definition: bgp_server.h:398
boost::scoped_ptr< BgpConditionListener > inet6_condition_listener_
Definition: bgp_server.h:394
RTargetGroupMgr * rtarget_group_mgr()
Definition: bgp_server.h:114
uint32_t num_deleting_bgp_peer() const
Definition: bgp_server.h:230
std::string bgp_identifier_string() const
Definition: bgp_server.h:218
DSCPUpdateListenersList dscp_listeners_
Definition: bgp_server.h:347
uint32_t cluster_id() const
Definition: bgp_server.h:210
bool logging_disabled_
Definition: bgp_server.h:367
as_t local_autonomous_system_
Definition: bgp_server.h:340
ExtCommunityDB * extcomm_db()
Definition: bgp_server.h:193
std::atomic< uint32_t > deleting_count_
Definition: bgp_server.h:357
const RoutingInstanceMgr * routing_instance_mgr() const
Definition: bgp_server.h:107
IServiceChainMgr * service_chain_mgr(SCAddress::Family family)
Definition: bgp_server.h:140
uint32_t bgp_identifier_u32_
Definition: bgp_server.h:344
BgpSessionManager * session_mgr_
Definition: bgp_server.h:387
uint32_t num_bgp_peer() const
Definition: bgp_server.h:229
boost::scoped_ptr< IServiceChainMgr > evpn_service_chain_mgr_
Definition: bgp_server.h:404
void set_logging_disabled(bool flag)
Definition: bgp_server.h:202
const RTargetGroupMgr * rtarget_group_mgr() const
Definition: bgp_server.h:115
AsPathDB * aspath_db()
Definition: bgp_server.h:184
tbb::spin_rw_mutex rw_mutex_
Definition: bgp_server.h:334
std::multimap< TcpSession::Endpoint, BgpPeer * > EndpointPeerList
Definition: bgp_server.h:327
uint32_t hold_time_
Definition: bgp_server.h:349
void IncrementUpBgpaasPeerCount()
Definition: bgp_server.h:262
DISALLOW_COPY_AND_ASSIGN(BgpServer)
void DecrementUpPeerCount()
Definition: bgp_server.h:255
boost::scoped_ptr< RoutePathReplicator > inetvpn_replicator_
Definition: bgp_server.h:397
bool ignore_aspath() const
Definition: bgp_server.h:314
boost::scoped_ptr< LargeCommunityDB > largecomm_db_
Definition: bgp_server.h:381
boost::dynamic_bitset admin_down_bmap_
Definition: bgp_server.h:337
std::atomic< uint32_t > num_up_peer_
Definition: bgp_server.h:356
boost::scoped_ptr< ClusterListDB > cluster_list_db_
Definition: bgp_server.h:376
boost::scoped_ptr< BgpUpdateSender > update_sender_
Definition: bgp_server.h:388
RoutingInstanceMgr * routing_instance_mgr()
Definition: bgp_server.h:106
Ip4Address bgp_identifier_
Definition: bgp_server.h:343
As4PathDB * as4path_db()
Definition: bgp_server.h:186
boost::scoped_ptr< ConfigUpdater > updater_
Definition: bgp_server.h:411
void IncrementUpPeerCount()
Definition: bgp_server.h:252
const RoutingPolicyMgr * routing_policy_mgr() const
Definition: bgp_server.h:111
std::vector< DSCPUpdateCb > DSCPUpdateListenersList
Definition: bgp_server.h:326
bool gr_helper_disable() const
Definition: bgp_server.h:302
void set_destroyed()
Definition: bgp_server.h:205
BgpConditionListener * condition_listener(SCAddress::Family family)
Definition: bgp_server.h:128
void set_gr_helper_disable(bool gr_helper_disable)
Definition: bgp_server.h:303
boost::scoped_ptr< AsPathDB > aspath_db_
Definition: bgp_server.h:372
boost::function< void(BgpPeer *)> VisitorFn
Definition: bgp_server.h:68
uint32_t bgp_identifier() const
Definition: bgp_server.h:215
boost::scoped_ptr< IServiceChainMgr > evpn6_service_chain_mgr_
Definition: bgp_server.h:405
std::vector< AdminDownCb > AdminDownListenersList
Definition: bgp_server.h:323
std::atomic< uint32_t > bgpaas_count_
Definition: bgp_server.h:358
std::vector< ASNUpdateCb > ASNUpdateListenersList
Definition: bgp_server.h:324
std::atomic< uint32_t > bgp_count_
Definition: bgp_server.h:355
boost::scoped_ptr< EdgeDiscoveryDB > edge_discovery_db_
Definition: bgp_server.h:378
void set_ignore_aspath(bool flag)
Definition: bgp_server.h:315
void DecrementUpBgpaasPeerCount()
Definition: bgp_server.h:265
boost::scoped_ptr< BgpOListDB > olist_db_
Definition: bgp_server.h:375
boost::scoped_ptr< BgpConfigManager > config_mgr_
Definition: bgp_server.h:410
std::map< std::string, BgpPeer * > BgpPeerList
Definition: bgp_server.h:322
void decrement_deleting_bgpaas_count()
Definition: bgp_server.h:240
EdgeDiscoveryDB * edge_discovery_db()
Definition: bgp_server.h:191
IdentifierUpdateListenersList id_listeners_
Definition: bgp_server.h:345
uint32_t num_deleting_bgpaas_peer() const
Definition: bgp_server.h:238
AsPath4ByteDB * aspath_4byte_db()
Definition: bgp_server.h:185
boost::dynamic_bitset dscp_bmap_
Definition: bgp_server.h:348
BgpConfigManager * config_manager()
Definition: bgp_server.h:104
BgpGlobalQosConfig * global_qos()
Definition: bgp_server.h:301
StaticRouteMgrList srt_manager_list_
Definition: bgp_server.h:351
boost::function< void(Ip4Address)> IdentifierUpdateCb
Definition: bgp_server.h:67
bool mvpn_ipv4_enable_
Definition: bgp_server.h:368
PmsiTunnelDB * pmsi_tunnel_db()
Definition: bgp_server.h:196
bool logging_disabled() const
Definition: bgp_server.h:201
ASNUpdateListenersList asn_listeners_
Definition: bgp_server.h:341
uint64_t message_build_error() const
Definition: bgp_server.h:277
std::atomic< uint64_t > message_build_error_
Definition: bgp_server.h:413
boost::scoped_ptr< OriginVnPathDB > ovnpath_db_
Definition: bgp_server.h:382
uint32_t NumUpPeer() const
Definition: bgp_server.h:259
boost::scoped_ptr< BgpGlobalQosConfig > global_qos_
Definition: bgp_server.h:409
const BgpMembershipManager * membership_mgr() const
Definition: bgp_server.h:180
as_t autonomous_system_
Definition: bgp_server.h:339
DB * database()
Definition: bgp_server.h:207
BgpConditionListener * condition_listener(Address::Family family)
Definition: bgp_server.h:118
as_t autonomous_system() const
Definition: bgp_server.h:212
boost::scoped_ptr< BgpMembershipManager > membership_mgr_
Definition: bgp_server.h:392
RoutePathReplicator * replicator(Address::Family family)
Definition: bgp_server.h:152
const BgpGlobalSystemConfig * global_config() const
Definition: bgp_server.h:298
bool mvpn_ipv4_enable() const
Definition: bgp_server.h:310
boost::dynamic_bitset asn_bmap_
Definition: bgp_server.h:342
void set_cluster_id(uint32_t id)
Definition: bgp_server.h:211
void increment_message_build_error() const
Definition: bgp_server.h:276
BgpPeer * FindPeer(const std::string &name)
boost::scoped_ptr< RoutePathReplicator > inet6vpn_replicator_
Definition: bgp_server.h:401
boost::scoped_ptr< RoutePathReplicator > evpn_replicator_
Definition: bgp_server.h:400
boost::scoped_ptr< RTargetGroupMgr > rtarget_group_mgr_
Definition: bgp_server.h:391
bool ignore_aspath_
Definition: bgp_server.h:369
boost::scoped_ptr< As4PathDB > as4path_db_
Definition: bgp_server.h:374
boost::scoped_ptr< BgpGlobalSystemConfig > global_config_
Definition: bgp_server.h:408
bool destroyed_
Definition: bgp_server.h:366
boost::function< void(uint8_t)> DSCPUpdateCb
Definition: bgp_server.h:65
void set_mvpn_ipv4_enable(bool flag)
Definition: bgp_server.h:311
void set_autonomous_system(as_t asn)
Definition: bgp_server.h:213
BgpUpdateSender * update_sender()
Definition: bgp_server.h:102
boost::scoped_ptr< CommunityDB > comm_db_
Definition: bgp_server.h:377
const RoutePathReplicator * replicator(Address::Family family) const
Definition: bgp_server.h:165
uint32_t bgp_identifier_u32() const
Definition: bgp_server.h:216
boost::scoped_ptr< EdgeForwardingDB > edge_forwarding_db_
Definition: bgp_server.h:379
boost::scoped_ptr< AsPath4ByteDB > aspath_4byte_db_
Definition: bgp_server.h:373
boost::function< void()> AdminDownCb
Definition: bgp_server.h:64
BgpPeerList peer_list_
Definition: bgp_server.h:361
as_t local_autonomous_system() const
Definition: bgp_server.h:214
boost::scoped_ptr< IServiceChainMgr > inet_service_chain_mgr_
Definition: bgp_server.h:402
EdgeForwardingDB * edge_forwarding_db()
Definition: bgp_server.h:192
OriginVnPathDB * ovnpath_db()
Definition: bgp_server.h:195
boost::scoped_ptr< BgpConditionListener > evpn_condition_listener_
Definition: bgp_server.h:395
const BgpConfigManager * config_manager() const
Definition: bgp_server.h:105
boost::scoped_ptr< RoutePathReplicator > mvpn_replicator_
Definition: bgp_server.h:399
bool admin_down_
Definition: bgp_server.h:335
boost::scoped_ptr< DeleteActor > deleter_
Definition: bgp_server.h:365
bool destroyed() const
Definition: bgp_server.h:204
BgpAttrDB * attr_db()
Definition: bgp_server.h:187
boost::scoped_ptr< RoutingInstanceMgr > inst_mgr_
Definition: bgp_server.h:389
CommunityDB * comm_db()
Definition: bgp_server.h:190
boost::function< void(as_t, as_t)> ASNUpdateCb
Definition: bgp_server.h:66
BgpSessionManager * session_manager()
Definition: bgp_server.h:101
BgpMembershipManager * membership_mgr()
Definition: bgp_server.h:179
BgpGlobalSystemConfig * global_config()
Definition: bgp_server.h:297
RoutingPolicyMgr * routing_policy_mgr()
Definition: bgp_server.h:110
LargeCommunityDB * largecomm_db()
Definition: bgp_server.h:194
boost::scoped_ptr< BgpConditionListener > evpn6_condition_listener_
Definition: bgp_server.h:396
EndpointPeerList endpoint_peer_list_
Definition: bgp_server.h:362
uint32_t NumUpBgpaasPeer() const
Definition: bgp_server.h:269
std::atomic< uint32_t > deleting_bgpaas_count_
Definition: bgp_server.h:360
boost::scoped_ptr< RoutingPolicyMgr > policy_mgr_
Definition: bgp_server.h:390
boost::dynamic_bitset peer_bmap_
Definition: bgp_server.h:354
boost::scoped_ptr< BgpConditionListener > inet_condition_listener_
Definition: bgp_server.h:393
boost::scoped_ptr< ExtCommunityDB > extcomm_db_
Definition: bgp_server.h:380
bool gr_helper_disable_
Definition: bgp_server.h:350
LifetimeManager * lifetime_manager()
Definition: bgp_server.h:103
void increment_deleting_count()
Definition: bgp_server.h:231
bool admin_down() const
Definition: bgp_server.h:209
std::vector< IdentifierUpdateCb > IdentifierUpdateListenersList
Definition: bgp_server.h:325
AdminDownListenersList admin_down_listeners_
Definition: bgp_server.h:336
boost::dynamic_bitset id_bmap_
Definition: bgp_server.h:346
boost::scoped_ptr< PmsiTunnelDB > pmsi_tunnel_db_
Definition: bgp_server.h:383
uint32_t num_bgpaas_peer() const
Definition: bgp_server.h:237
ClusterListDB * cluster_list_db()
Definition: bgp_server.h:189
void increment_deleting_bgpaas_count()
Definition: bgp_server.h:239
uint32_t hold_time() const
Definition: bgp_server.h:222
std::set< IStaticRouteMgr * > StaticRouteMgrList
Definition: bgp_server.h:69
boost::scoped_ptr< IServiceChainMgr > inet6_service_chain_mgr_
Definition: bgp_server.h:403
boost::scoped_ptr< LifetimeManager > lifetime_manager_
Definition: bgp_server.h:364
uint32_t cluster_id_
Definition: bgp_server.h:338
BgpOListDB * olist_db()
Definition: bgp_server.h:188
Definition: db.h:24
This class represents a database for managing LargeCommunity objects. It is used to store,...
Definition: community.h:694
boost::asio::ip::tcp::endpoint Endpoint
Definition: tcp_session.h:58
static EventManager evm
static string ToString(PhysicalDevice::ManagementProtocol proto)