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