OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bgp_config.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
3  */
4 #ifndef SRC_BGP_BGP_CONFIG_H__
5 #define SRC_BGP_BGP_CONFIG_H__
6 
7 #include <algorithm>
8 #include <map>
9 #include <set>
10 #include <string>
11 #include <utility>
12 #include <vector>
13 
14 #include "base/util.h"
15 #include "base/address.h"
16 #include "bgp/bgp_common.h"
18 #include "io/tcp_session.h"
19 #include "schema/vnc_cfg_types.h"
20 
21 class BgpServer;
22 
25  }
26 
27  bool operator<(const AuthenticationKey &rhs) const;
28  bool operator==(const AuthenticationKey &rhs) const;
29  void Reset() {
30  value = "";
31  start_time = 0;
32  }
33 
34  int id;
35  std::string value;
36  time_t start_time;
37 };
38 
39 typedef std::vector<AuthenticationKey> AuthenticationKeyChain;
40 
42 public:
43  enum KeyType {
44  NIL = 0,
45  MD5,
46  };
47  typedef AuthenticationKeyChain::iterator iterator;
48  typedef AuthenticationKeyChain::const_iterator const_iterator;
49 
50  iterator begin() { return key_chain_.begin(); }
51  iterator end() { return key_chain_.end(); }
52  const_iterator begin() const { return key_chain_.begin(); }
53  const_iterator end() const { return key_chain_.end(); }
54 
57 
58  bool operator==(const AuthenticationData &rhs) const;
59  bool operator<(const AuthenticationData &rhs) const;
61 
62  const AuthenticationKey *Find(int key_id) const;
63  bool IsMd5() const { return key_type_ == MD5; }
64  bool Empty() const;
65  void Clear();
66  std::string KeyTypeToString() const;
67  static std::string KeyTypeToString(KeyType key_type);
68  void AddKeyToKeyChain(const AuthenticationKey &key);
69 
70  KeyType key_type() const { return key_type_; }
71  void set_key_type(KeyType in_type) {
72  key_type_ = in_type;
73  }
74  const AuthenticationKeyChain &key_chain() const { return key_chain_; }
75  void set_key_chain(const AuthenticationKeyChain &in_chain) {
76  key_chain_ = in_chain;
77  }
78  std::vector<std::string> KeysToString() const;
79  std::vector<std::string> KeysToStringDetail() const;
80 
81 private:
84 };
85 
86 //
87 // Per address family configuration for a BGP neighbor.
88 //
90  explicit BgpFamilyAttributesConfig(const std::string &family)
91  : family(family), loop_count(0), prefix_limit(0), idle_timeout(0) {
92  }
93  bool operator==(const BgpFamilyAttributesConfig &rhs) const;
94 
95  std::string family;
96  uint8_t loop_count;
97  uint32_t prefix_limit;
98  uint32_t idle_timeout;
99  std::vector<std::string> default_tunnel_encap_list;
100 };
101 
102 //
103 // Comparator for BgpFamilyAttributesConfig.
104 //
107  const BgpFamilyAttributesConfig rhs) const {
108  KEY_COMPARE(lhs.family, rhs.family);
114  return 0;
115  }
116 };
117 
118 //
119 // The configuration associated with a BGP neighbor.
120 //
121 // BgpNeighborConfig represents a single session between the local bgp-router
122 // and a remote bgp-router. There may be multiple BgpNeighborConfigs for one
123 // BgpIfmapPeeringConfig, though there's typically just one.
124 //
125 // Each BgpNeighborConfig causes creation of a BgpPeer. BgpPeer has a pointer
126 // to the BgpNeighborConfig. This pointer is invalidated and cleared when the
127 // BgpPeer is undergoing deletion.
128 //
129 // BgpNeighborConfigs get created/updated/deleted when the
130 // BgpIfmapPeeringConfig is created/updated/deleted.
131 //
132 // The uuid_ field is used is there are multiple sessions to the same remote
133 // bgp-router i.e. there's multiple BgpNeighborConfigs for a BgpPeeringConfig.
134 //
135 // The name_ field contains the fully qualified name for the peer. If uuid_
136 // is non-empty i.e. there's multiple sessions to the same remote bgp-router,
137 // the uuid_ is appended to the remote peer's name to make it unique.
138 //
140 public:
141  typedef std::vector<std::string> AddressFamilyList;
142  typedef std::vector<BgpFamilyAttributesConfig> FamilyAttributesList;
143 
144  enum Type {
148  };
149 
152  bool operator<(const OriginOverrideConfig &rhs) const;
153 
155  std::string origin;
156  };
157 
159 
160  void CopyValues(const BgpNeighborConfig &rhs);
161 
162  const std::string &name() const { return name_; }
163  void set_name(const std::string &name) { name_ = name; }
164 
165  const std::string &uuid() const { return uuid_; }
166  void set_uuid(const std::string &uuid) { uuid_ = uuid; }
167 
168  const std::string &instance_name() const { return instance_name_; }
169  void set_instance_name(const std::string &instance_name) {
171  }
172 
173  const std::string &group_name() const { return group_name_; }
174  void set_group_name(const std::string &group_name) {
176  }
177 
178  Type peer_type() const { return type_; }
180 
181  bool admin_down() const { return admin_down_; }
183 
184  bool passive() const { return passive_; }
186 
187  bool as_override() const { return as_override_; }
189 
190  std::string private_as_action() const { return private_as_action_; }
191  void set_private_as_action(const std::string &private_as_action) {
193  }
194 
195  uint32_t cluster_id() const { return cluster_id_; }
197 
198  uint32_t peer_as() const { return peer_as_; }
199  void set_peer_as(uint32_t peer_as) { peer_as_ = peer_as; }
200 
201  const IpAddress &peer_address() const { return address_; }
202  void set_peer_address(const IpAddress &address) { address_ = address; }
203  std::string peer_address_string() const { return address_.to_string(); }
204 
205  uint32_t peer_identifier() const { return identifier_; }
206  void set_peer_identifier(uint32_t identifier) {
207  identifier_ = identifier;
208  }
209  std::string peer_identifier_string() const {
210  return Ip4Address(ntohl(identifier_)).to_string();
211  }
212 
213  const IpAddress &gateway_address(Address::Family family) const;
214  void set_gateway_address(Address::Family family, const IpAddress &address);
215 
216  uint16_t port() const { return port_; }
217  void set_port(uint16_t port) { port_ = port; }
218 
219  uint16_t source_port() const { return source_port_; }
221 
222  std::string router_type() const { return router_type_; }
223  void set_router_type(const std::string &router_type) {
225  }
226 
227  int hold_time() const { return hold_time_; }
229 
230  uint8_t loop_count() const { return loop_count_; }
232 
233  uint32_t local_as() const { return local_as_; }
234  void set_local_as(uint32_t local_as) { local_as_ = local_as; }
235 
236  uint32_t local_identifier() const { return local_identifier_; }
237  void set_local_identifier(uint32_t identifier) {
238  local_identifier_ = identifier;
239  }
240  std::string local_identifier_string() const {
241  return Ip4Address(ntohl(local_identifier_)).to_string();
242  }
243 
244  const AuthenticationData &auth_data() const {
245  return auth_data_;
246  }
247  void set_keydata(const AuthenticationData &in_auth_data) {
248  auth_data_ = in_auth_data;
249  }
250 
252 
255  }
256 
260  }
261 
262  uint64_t last_change_at() const { return last_change_at_; }
263  void set_last_change_at(uint64_t tstamp) const { last_change_at_ = tstamp; }
264 
265  std::string AuthKeyTypeToString() const;
266  std::vector<std::string> AuthKeysToString() const;
267 
268  int CompareTo(const BgpNeighborConfig &rhs) const;
269  bool operator!=(const BgpNeighborConfig &rhs) const {
270  return CompareTo(rhs) != 0;
271  }
272 
274  return origin_override_;
275  }
276  void SetOriginOverride(bool origin_override, std::string origin);
277 
278 private:
279  std::string name_;
280  std::string uuid_;
281  std::string instance_name_;
282  std::string group_name_;
284  std::string router_type_;
286  bool passive_;
288  std::string private_as_action_;
289  uint32_t cluster_id_;
290  uint32_t peer_as_;
291  uint32_t identifier_;
295  uint16_t port_;
296  uint16_t source_port_;
299  uint8_t loop_count_;
300  uint32_t local_as_;
302  mutable uint64_t last_change_at_;
306 
308 };
309 
310 //
311 // AggregateRouteConfig represents the route-aggregation config on a
312 // routing instance. This config is derived from routing-instance to
313 // route-aggregate link in schema. "route-aggregate" is a config object
314 // containing information about prefix to aggregate and nexthop.
315 // Routing instance may refer to multiple route-aggregate config object hence
316 // a list of AggregateRouteConfig is maintained in BgpInstanceConfig
317 // This list is not an ordered list.
318 //
323 };
324 
327  std::string routing_instance;
328  std::vector<std::string> prefix;
330  std::string service_instance;
332  std::string service_chain_id;
333  bool sc_head;
335 };
336 
338  bool operator<(const StaticRouteConfig &rhs) const;
342  std::vector<std::string> route_targets;
343  std::vector<std::string> communities;
344 };
345 
346 typedef std::vector<as_t> AsnList;
347 typedef std::vector<std::string> CommunityList;
348 typedef std::vector<std::string> ProtocolList;
349 
351  PrefixMatchConfig(std::string to_match, std::string match_type)
352  : prefix_to_match(to_match), prefix_match_type(match_type) {
353  }
354  std::string prefix_to_match;
355  std::string prefix_match_type;
356 };
357 
358 typedef std::vector<PrefixMatchConfig> PrefixMatchConfigList;
359 
367  std::string ToString() const;
368 };
369 
370 struct ActionUpdate {
378  uint32_t local_pref;
379  uint32_t med;
380 };
381 
383  enum ActionType {
387  };
390  std::string ToString() const;
391 };
392 
396 };
397 
398 // Route Policy configuration.
400 public:
401  typedef std::vector<RoutingPolicyTermConfig> RoutingPolicyTermList;
402  explicit BgpRoutingPolicyConfig(const std::string &name);
403  virtual ~BgpRoutingPolicyConfig();
404 
405  const std::string &name() const { return name_; }
406  void set_last_change_at(uint64_t tstamp) const { last_change_at_ = tstamp; }
407  void add_term(const RoutingPolicyTermConfig &term) {
408  terms_.push_back(term);
409  }
410  const RoutingPolicyTermList &terms() const { return terms_;}
411  void Clear();
412 
413 private:
414  std::string name_;
415  mutable uint64_t last_change_at_;
418 };
419 
420 // Instance configuration.
422 public:
423  typedef std::set<std::string> NeighborList;
424  typedef std::set<std::string> RouteTargetList;
425  typedef std::set<StaticRouteConfig> StaticRouteList;
426  typedef std::vector<ServiceChainConfig> ServiceChainList;
427  typedef std::vector<AggregateRouteConfig> AggregateRouteList;
428 
429  explicit BgpInstanceConfig(const std::string &name);
430  virtual ~BgpInstanceConfig();
431 
432  const std::string &name() const { return name_; }
433 
434  const NeighborList &neighbor_list() const { return neighbor_list_; }
435  void add_neighbor(const std::string &neighbor) {
436  neighbor_list_.insert(neighbor);
437  }
438  void delete_neighbor(const std::string &neighbor) {
439  neighbor_list_.erase(neighbor);
440  }
441 
442  const RouteTargetList &import_list() const { return import_list_; }
445  }
446  const RouteTargetList &export_list() const { return export_list_; }
449  }
450 
451  bool has_pnf() const { return has_pnf_; }
453 
454  const std::string &virtual_network() const { return virtual_network_; }
455  void set_virtual_network(const std::string &virtual_network) {
457  }
458 
462  }
463 
466  }
467  void set_virtual_network_allow_transit(bool allow_transit) {
468  virtual_network_allow_transit_ = allow_transit;
469  }
470 
473  }
476  }
477 
478 
479  int vxlan_id() const { return vxlan_id_; }
481 
482  uint64_t last_change_at() const { return last_change_at_; }
483  void set_last_change_at(uint64_t tstamp) const { last_change_at_ = tstamp; }
484 
485  const StaticRouteList &static_routes(Address::Family family) const;
487 
489  return service_chain_list_;
490  }
492  std::swap(service_chain_list_, *list);
493  }
495  const;
496 
498  return routing_policies_;
499  }
501  std::swap(routing_policies_, *list);
502  }
503 
506  AggregateRouteList *list);
507  void Clear();
508  void set_index(int index) { index_ = index; }
509  int index() const { return index_; }
510 
511  const std::string &routing_instance_vxlan() const {
513  }
516  }
517 
518 private:
519  friend class BgpInstanceConfigTest;
520 
521  std::string name_;
525  bool has_pnf_;
526  std::string virtual_network_;
530  int index_;
532  mutable uint64_t last_change_at_;
540 
542 };
543 
544 // Local configuration.
546 public:
547  explicit BgpProtocolConfig(const std::string &instance_name);
548  const std::string &instance_name() const {
549  return instance_name_;
550  }
551 
552  int CompareTo(const BgpProtocolConfig &rhs) const;
553 
554  bool admin_down() const { return admin_down_; }
556 
557  uint32_t cluster_id() const { return cluster_id_; }
559 
560  uint32_t identifier() const { return identifier_; }
562 
563  const std::string& subcluster_name() const { return subcluster_name_; }
564  void set_subcluster_name(const std::string& name) {
565  subcluster_name_ = name;
566  }
568 
569  uint32_t subcluster_id() const { return subcluster_id_; }
570  void set_subcluster_id(uint32_t id) {
571  subcluster_id_ = id;
572  }
574 
575  uint32_t autonomous_system() const { return autonomous_system_; }
578  }
579 
580  uint32_t local_autonomous_system() const {
582  }
585  }
586 
587  int port() const { return port_; }
588  void set_port(int port) { port_ = port; }
589 
590  uint32_t hold_time() const { return hold_time_; }
592 
593  uint64_t last_change_at() const { return last_change_at_; }
594  void set_last_change_at(uint64_t tstamp) const { last_change_at_ = tstamp; }
595 
596 private:
597  std::string instance_name_;
599  uint32_t cluster_id_;
602  uint32_t identifier_;
603  std::string subcluster_name_;
604  uint32_t subcluster_id_;
605  int port_;
606  uint32_t hold_time_;
607  mutable uint64_t last_change_at_;
608 
610 };
611 
612 // Global system configuration.
614 public:
615  static const int kEndOfRibTime = 300; // seconds
619  gr_bgp_helper_(false), gr_xmpp_helper_(false),
620  enable_4byte_as_(false),
622  bgpaas_port_end_(0),
623  fc_enabled_(false),
624  nh_check_enabled_(false),
625  always_compare_med_(false),
626  rd_cluster_seed_(0),
627  xmpp_hold_time_(90),
628  all_tags_are_global_(false) {
629  }
631 
632  uint16_t gr_time() const { return gr_time_; }
633  void set_gr_time(uint16_t gr_time) { gr_time_ = gr_time; }
634  uint32_t llgr_time() const { return llgr_time_; }
636  uint32_t last_change_at() const { return last_change_at_; }
637  void set_last_change_at(uint32_t tstamp) const { last_change_at_ = tstamp; }
638  uint16_t end_of_rib_timeout() const { return end_of_rib_timeout_; }
639  void set_end_of_rib_timeout(uint16_t time) { end_of_rib_timeout_ = time; }
640  bool gr_bgp_helper() const { return gr_bgp_helper_; }
641  void set_gr_bgp_helper(bool helper) { gr_bgp_helper_ = helper; }
642  bool gr_xmpp_helper() const { return gr_xmpp_helper_; }
643  void set_gr_xmpp_helper(bool helper) { gr_xmpp_helper_ = helper; }
644  bool gr_enable() const { return gr_enable_; }
645  void set_gr_enable(bool enable) { gr_enable_ = enable; }
646  bool enable_4byte_as() const { return enable_4byte_as_; }
647  void set_enable_4byte_as(bool as_4byte) { enable_4byte_as_ = as_4byte; }
648  bool fc_enabled() const {
649  return fc_enabled_;
650  }
651  void set_fc_enabled(bool enable) {
652  fc_enabled_ = enable;
653  }
654  bool nh_check_enabled() const {
655  return nh_check_enabled_;
656  }
657  void set_nh_check_enabled(bool enable) {
658  nh_check_enabled_ = enable;
659  }
660  bool always_compare_med() const { return always_compare_med_; }
663  }
664  uint8_t xmpp_hold_time() const {
665  return xmpp_hold_time_;
666  }
667  void set_xmpp_hold_time(uint8_t hold_time) {
668  xmpp_hold_time_ = hold_time;
669  }
670  uint16_t rd_cluster_seed() const {
671  return rd_cluster_seed_;
672  }
673  void set_rd_cluster_seed(uint16_t seed) {
674  rd_cluster_seed_ = seed;
675  }
676  uint16_t bgpaas_port_start() const { return bgpaas_port_start_; }
679  }
680  uint16_t bgpaas_port_end() const { return bgpaas_port_end_; }
683  }
684  bool all_tags_are_global() const { return all_tags_are_global_; }
687  }
688 private:
689  mutable uint64_t last_change_at_;
690  uint16_t gr_time_;
691  uint32_t llgr_time_;
705 
707 };
708 
709 // Global Qos configuration.
711 public:
714  }
716  uint64_t last_change_at() const { return last_change_at_; }
717  void set_last_change_at(uint64_t tstamp) const { last_change_at_ = tstamp; }
718  uint8_t control_dscp() const { return control_dscp_; }
719  void set_control_dscp(uint8_t value) { control_dscp_ = value; }
720  uint8_t analytics_dscp() const { return analytics_dscp_; }
721  void set_analytics_dscp(uint8_t value) { analytics_dscp_ = value; }
722 
723 private:
724  mutable uint64_t last_change_at_;
725  uint8_t control_dscp_;
727 
729 };
730 
731 /*
732  * BgpConfigManager defines the interface between the BGP server and the
733  * configuration sub-system. Multiple configuration sub-systems are
734  * supported.
735  */
737 public:
738  enum EventType {
743  };
744 
745  typedef boost::function<void(const BgpProtocolConfig *, EventType)>
747  typedef boost::function<void(const BgpInstanceConfig *, EventType)>
749  typedef boost::function<void(const BgpNeighborConfig *, EventType)>
751  typedef boost::function<void(const BgpRoutingPolicyConfig *, EventType)>
753  typedef boost::function<void(const BgpGlobalSystemConfig *, EventType)>
755  typedef boost::function<void(const BgpGlobalQosConfig *, EventType)>
757 
758  struct Observers {
765  };
766 
767  typedef std::map<std::string, BgpRoutingPolicyConfig *> RoutingPolicyMap;
768  typedef std::pair<RoutingPolicyMap::const_iterator,
769  RoutingPolicyMap::const_iterator> RoutingPolicyMapRange;
770  typedef std::map<std::string, BgpInstanceConfig *> InstanceMap;
771  typedef std::pair<InstanceMap::const_iterator,
772  InstanceMap::const_iterator> InstanceMapRange;
773  typedef std::map<std::string, BgpNeighborConfig *> NeighborMap;
774  typedef std::pair<NeighborMap::const_iterator,
775  NeighborMap::const_iterator> NeighborMapRange;
776 
777  static const char *kMasterNetwork;
778  static const char *kMasterInstance;
779  static const char *kFabricInstance;
780  static const int kDefaultPort;
781  static const uint32_t kDefaultAutonomousSystem;
782 
783  explicit BgpConfigManager(BgpServer *server);
784  virtual ~BgpConfigManager();
785 
786  void RegisterObservers(const Observers &obs) { obs_.push_back(obs); }
787 
788  virtual void Terminate() = 0;
789  virtual const std::string &localname() const = 0;
790 
792  const std::string &start_policy = std::string()) const = 0;
794  const std::string &start_instance = std::string()) const = 0;
796  const std::string &instance_name) const = 0;
797 
798  virtual int NeighborCount(const std::string &instance_name) const = 0;
799 
800  virtual void ResetRoutingInstanceIndexBit(int index) = 0;
801  virtual const BgpInstanceConfig *FindInstance(
802  const std::string &name) const = 0;
804  const std::string &name) const = 0;
805  virtual const BgpProtocolConfig *GetProtocolConfig(
806  const std::string &instance_name) const = 0;
807  virtual const BgpNeighborConfig *FindNeighbor(
808  const std::string &instance_name, const std::string &name) const = 0;
809 
810  // Invoke registered observer
811  template <typename BgpConfigObject>
812  void Notify(const BgpConfigObject *, EventType);
813 
814  const BgpServer *server() { return server_; }
815 
816 private:
818  std::vector<Observers> obs_;
819 
821 };
822 
823 #endif // SRC_BGP_BGP_CONFIG_H__
std::string virtual_network_
Definition: bgp_config.h:526
uint64_t last_change_at_
Definition: bgp_config.h:532
int port() const
Definition: bgp_config.h:587
std::vector< std::string > route_targets
Definition: bgp_config.h:342
void set_peer_address(const IpAddress &address)
Definition: bgp_config.h:202
const std::string & virtual_network() const
Definition: bgp_config.h:454
BgpGlobalSystemConfigObserver system
Definition: bgp_config.h:763
virtual void ResetRoutingInstanceIndexBit(int index)=0
uint32_t local_pref
Definition: bgp_config.h:378
virtual NeighborMapRange NeighborMapItems(const std::string &instance_name) const =0
boost::asio::ip::tcp::endpoint Endpoint
Definition: tcp_session.h:62
uint8_t analytics_dscp_
Definition: bgp_config.h:726
const RouteTargetList & import_list() const
Definition: bgp_config.h:442
bool nh_check_enabled() const
Definition: bgp_config.h:654
void delete_neighbor(const std::string &neighbor)
Definition: bgp_config.h:438
const OriginOverrideConfig & origin_override() const
Definition: bgp_config.h:273
void set_last_change_at(uint64_t tstamp) const
Definition: bgp_config.h:406
std::vector< std::string > AddressFamilyList
Definition: bgp_config.h:141
std::map< std::string, BgpRoutingPolicyConfig * > RoutingPolicyMap
Definition: bgp_config.h:767
void set_cluster_id(uint32_t cluster_id)
Definition: bgp_config.h:558
void set_subcluster_name(const std::string &name)
Definition: bgp_config.h:564
std::string name_
Definition: bgp_config.h:279
void add_term(const RoutingPolicyTermConfig &term)
Definition: bgp_config.h:407
RouteTargetList import_list_
Definition: bgp_config.h:523
ServiceChainList service_chain_list_
Definition: bgp_config.h:537
BgpRoutingPolicyConfig(const std::string &name)
Definition: bgp_config.cc:409
void set_virtual_network_index(int virtual_network_index)
Definition: bgp_config.h:460
uint32_t hold_time() const
Definition: bgp_config.h:590
IpAddress address
Definition: bgp_config.h:339
bool admin_down() const
Definition: bgp_config.h:181
void set_virtual_network_pbb_evpn_enable(bool pbb_evpn)
Definition: bgp_config.h:474
void set_gateway_address(Address::Family family, const IpAddress &address)
Definition: bgp_config.cc:272
uint64_t last_change_at() const
Definition: bgp_config.h:262
RoutingPolicyTermList terms_
Definition: bgp_config.h:416
uint8_t control_dscp() const
Definition: bgp_config.h:718
std::pair< RoutingPolicyMap::const_iterator, RoutingPolicyMap::const_iterator > RoutingPolicyMapRange
Definition: bgp_config.h:769
void set_name(const std::string &name)
Definition: bgp_config.h:163
void set_group_name(const std::string &group_name)
Definition: bgp_config.h:174
AuthenticationKeyChain::const_iterator const_iterator
Definition: bgp_config.h:48
SCAddress::Family family
Definition: bgp_config.h:326
void set_virtual_network_allow_transit(bool allow_transit)
Definition: bgp_config.h:467
const std::string & name() const
Definition: bgp_config.h:162
std::pair< InstanceMap::const_iterator, InstanceMap::const_iterator > InstanceMapRange
Definition: bgp_config.h:772
void set_gr_time(uint16_t gr_time)
Definition: bgp_config.h:633
BgpInstanceObserver instance
Definition: bgp_config.h:760
void set_identifier(uint32_t identifier)
Definition: bgp_config.h:561
uint32_t hold_time_
Definition: bgp_config.h:606
int CompareTo(const BgpProtocolConfig &rhs) const
Definition: bgp_config.cc:321
std::vector< AuthenticationKey > AuthenticationKeyChain
Definition: bgp_config.h:39
const std::string & instance_name() const
Definition: bgp_config.h:168
uint32_t autonomous_system() const
Definition: bgp_config.h:575
bool IsMd5() const
Definition: bgp_config.h:63
void set_virtual_network(const std::string &virtual_network)
Definition: bgp_config.h:455
bool gr_bgp_helper() const
Definition: bgp_config.h:640
std::string KeyTypeToString() const
Definition: bgp_config.cc:114
Family
Definition: address.h:24
void set_always_compare_med(bool always_compare_med)
Definition: bgp_config.h:661
#define KEY_COMPARE(x, y)
Definition: util.h:70
static const char * kMasterInstance
Definition: bgp_config.h:778
bool virtual_network_allow_transit_
Definition: bgp_config.h:528
void reset_subcluster_id()
Definition: bgp_config.h:573
BgpConfigManager(BgpServer *server)
Definition: bgp_config.cc:505
void swap_aggregate_routes(Address::Family family, AggregateRouteList *list)
Definition: bgp_config.cc:399
void Notify(const BgpConfigObject *, EventType)
boost::asio::ip::address IpAddress
Definition: address.h:13
const AuthenticationKeyChain & key_chain() const
Definition: bgp_config.h:74
uint32_t last_change_at() const
Definition: bgp_config.h:636
DISALLOW_COPY_AND_ASSIGN(BgpGlobalSystemConfig)
boost::function< void(const BgpGlobalSystemConfig *, EventType)> BgpGlobalSystemConfigObserver
Definition: bgp_config.h:754
PrefixMatchConfigList prefixes_to_match
Definition: bgp_config.h:362
void set_key_chain(const AuthenticationKeyChain &in_chain)
Definition: bgp_config.h:75
void RegisterObservers(const Observers &obs)
Definition: bgp_config.h:786
uint16_t rd_cluster_seed() const
Definition: bgp_config.h:670
std::string instance_name_
Definition: bgp_config.h:597
void set_peer_type(Type type)
Definition: bgp_config.h:179
void set_local_as(uint32_t local_as)
Definition: bgp_config.h:234
void set_subcluster_id(uint32_t id)
Definition: bgp_config.h:570
CommunityList community_match
Definition: bgp_config.h:363
BgpInstanceConfig(const std::string &name)
Definition: bgp_config.cc:331
const std::string & routing_instance_vxlan() const
Definition: bgp_config.h:511
const std::string & group_name() const
Definition: bgp_config.h:173
void set_vxlan_id(int vxlan_id)
Definition: bgp_config.h:480
void swap_routing_policy_list(RoutingPolicyConfigList *list)
Definition: bgp_config.h:500
std::vector< AggregateRouteConfig > AggregateRouteList
Definition: bgp_config.h:427
void set_private_as_action(const std::string &private_as_action)
Definition: bgp_config.h:191
virtual ~BgpRoutingPolicyConfig()
Definition: bgp_config.cc:414
void set_peer_identifier(uint32_t identifier)
Definition: bgp_config.h:206
int CompareTo(const BgpNeighborConfig &rhs) const
Definition: bgp_config.cc:227
void set_import_list(const RouteTargetList &import_list)
Definition: bgp_config.h:443
uint16_t bgpaas_port_end_
Definition: bgp_config.h:698
std::set< std::string > RouteTargetList
Definition: bgp_config.h:424
StaticRouteList inet6_static_routes_
Definition: bgp_config.h:534
boost::uuids::uuid uuid
void set_loop_count(uint8_t loop_count)
Definition: bgp_config.h:231
IpAddress nexthop
Definition: bgp_config.h:341
TcpSession::Endpoint remote_endpoint_
Definition: bgp_config.h:297
uint32_t subcluster_id_
Definition: bgp_config.h:604
const RouteTargetList & export_list() const
Definition: bgp_config.h:446
bool Empty() const
Definition: bgp_config.cc:106
void set_hold_time(int hold_time)
Definition: bgp_config.h:228
const FamilyAttributesList & family_attributes_list() const
Definition: bgp_config.h:253
BgpProtocolObserver protocol
Definition: bgp_config.h:759
uint32_t local_autonomous_system() const
Definition: bgp_config.h:580
std::set< StaticRouteConfig > StaticRouteList
Definition: bgp_config.h:425
std::vector< std::string > communities
Definition: bgp_config.h:343
std::vector< std::string > KeysToString() const
Definition: bgp_config.cc:132
uint32_t local_identifier_
Definition: bgp_config.h:301
AuthenticationKeyChain key_chain_
Definition: bgp_config.h:83
std::string router_type() const
Definition: bgp_config.h:222
bool virtual_network_pbb_evpn_enable() const
Definition: bgp_config.h:471
uint32_t autonomous_system_
Definition: bgp_config.h:600
uint64_t last_change_at() const
Definition: bgp_config.h:593
virtual const BgpInstanceConfig * FindInstance(const std::string &name) const =0
void set_source_port(uint16_t source_port)
Definition: bgp_config.h:220
CommunityList ext_community_remove
Definition: bgp_config.h:377
StaticRouteList inet_static_routes_
Definition: bgp_config.h:533
std::string private_as_action() const
Definition: bgp_config.h:190
std::string prefix_to_match
Definition: bgp_config.h:354
static const int kEndOfRibTime
Definition: bgp_config.h:615
void set_last_change_at(uint64_t tstamp) const
Definition: bgp_config.h:483
uint8_t loop_count() const
Definition: bgp_config.h:230
IpAddress address_
Definition: bgp_config.h:292
void set_last_change_at(uint64_t tstamp) const
Definition: bgp_config.h:594
std::string uuid_
Definition: bgp_config.h:280
virtual const std::string & localname() const =0
const AuthenticationKey * Find(int key_id) const
Definition: bgp_config.cc:95
std::string group_name_
Definition: bgp_config.h:282
ProtocolList protocols_match
Definition: bgp_config.h:361
std::vector< std::string > KeysToStringDetail() const
Definition: bgp_config.cc:143
PrefixMatchConfig(std::string to_match, std::string match_type)
Definition: bgp_config.h:351
bool admin_down() const
Definition: bgp_config.h:554
bool has_pnf() const
Definition: bgp_config.h:451
CommunityList community_remove
Definition: bgp_config.h:374
RoutingPolicyActionConfig action
Definition: bgp_config.h:395
bool gr_xmpp_helper() const
Definition: bgp_config.h:642
void set_local_autonomous_system(uint32_t local_autonomous_system)
Definition: bgp_config.h:583
int hold_time() const
Definition: bgp_config.h:227
uint32_t peer_as() const
Definition: bgp_config.h:198
virtual int NeighborCount(const std::string &instance_name) const =0
const std::string & name() const
Definition: bgp_config.h:405
uint16_t source_port() const
Definition: bgp_config.h:219
DISALLOW_COPY_AND_ASSIGN(BgpConfigManager)
bool always_compare_med() const
Definition: bgp_config.h:660
void SetOriginOverride(bool origin_override, std::string origin)
Definition: bgp_config.cc:256
boost::function< void(const BgpRoutingPolicyConfig *, EventType)> BgpRoutingPolicyObserver
Definition: bgp_config.h:752
uint32_t identifier_
Definition: bgp_config.h:602
BgpProtocolConfig(const std::string &instance_name)
Definition: bgp_config.cc:309
boost::function< void(const BgpNeighborConfig *, EventType)> BgpNeighborObserver
Definition: bgp_config.h:750
std::vector< std::string > default_tunnel_encap_list
Definition: bgp_config.h:99
uint16_t gr_time() const
Definition: bgp_config.h:632
void set_hold_time(uint32_t hold_time)
Definition: bgp_config.h:591
AuthenticationKeyChain::iterator iterator
Definition: bgp_config.h:47
Type peer_type() const
Definition: bgp_config.h:178
void set_key_type(KeyType in_type)
Definition: bgp_config.h:71
std::string peer_address_string() const
Definition: bgp_config.h:203
int index() const
Definition: bgp_config.h:509
DISALLOW_COPY_AND_ASSIGN(BgpNeighborConfig)
uint8_t type
Definition: load_balance.h:109
IpAddress inet_gateway_address_
Definition: bgp_config.h:293
void set_router_type(const std::string &router_type)
Definition: bgp_config.h:223
std::string routing_instance_vxlan_
Definition: bgp_config.h:539
std::vector< Observers > obs_
Definition: bgp_config.h:818
BgpFamilyAttributesConfig(const std::string &family)
Definition: bgp_config.h:90
bool operator==(const AuthenticationData &rhs) const
Definition: bgp_config.cc:63
bool fc_enabled() const
Definition: bgp_config.h:648
iterator begin()
Definition: bgp_config.h:50
const ServiceChainConfig * service_chain_info(SCAddress::Family family) const
Definition: bgp_config.cc:379
uint32_t identifier() const
Definition: bgp_config.h:560
virtual const BgpRoutingPolicyConfig * FindRoutingPolicy(const std::string &name) const =0
bool as_override() const
Definition: bgp_config.h:187
std::vector< std::string > prefix
Definition: bgp_config.h:328
std::vector< PrefixMatchConfig > PrefixMatchConfigList
Definition: bgp_config.h:358
void swap_service_chain_list(ServiceChainList *list)
Definition: bgp_config.h:491
BgpServer * server_
Definition: bgp_config.h:817
std::string prefix_match_type
Definition: bgp_config.h:355
DISALLOW_COPY_AND_ASSIGN(BgpRoutingPolicyConfig)
uint32_t cluster_id_
Definition: bgp_config.h:599
bool all_tags_are_global() const
Definition: bgp_config.h:684
uint8_t control_dscp_
Definition: bgp_config.h:725
static const char * kMasterNetwork
Definition: bgp_config.h:777
uint64_t last_change_at_
Definition: bgp_config.h:302
void swap_static_routes(Address::Family family, StaticRouteList *list)
Definition: bgp_config.cc:369
BgpGlobalQosConfigObserver qos
Definition: bgp_config.h:764
bool operator==(const BgpFamilyAttributesConfig &rhs) const
Definition: bgp_config.cc:170
std::pair< NeighborMap::const_iterator, NeighborMap::const_iterator > NeighborMapRange
Definition: bgp_config.h:775
uint64_t last_change_at() const
Definition: bgp_config.h:482
FamilyAttributesList family_attributes_list_
Definition: bgp_config.h:304
std::string router_type_
Definition: bgp_config.h:284
std::string routing_instance
Definition: bgp_config.h:327
std::vector< RoutingPolicyAttachInfo > RoutingPolicyConfigList
Definition: bgp_common.h:40
bool virtual_network_pbb_evpn_enable_
Definition: bgp_config.h:529
void set_analytics_dscp(uint8_t value)
Definition: bgp_config.h:721
uint16_t bgpaas_port_start_
Definition: bgp_config.h:697
std::vector< std::string > AuthKeysToString() const
Definition: bgp_config.cc:297
uint32_t peer_as_
Definition: bgp_config.h:290
void set_family_attributes_list(const FamilyAttributesList &family_attributes_list)
Definition: bgp_config.h:257
BgpNeighborObserver neighbor
Definition: bgp_config.h:761
std::string ToString() const
Definition: bgp_config.cc:464
bool operator<(const StaticRouteConfig &rhs) const
Definition: bgp_config.cc:302
uint16_t end_of_rib_timeout() const
Definition: bgp_config.h:638
CommunityList community_add
Definition: bgp_config.h:373
const AuthenticationData & auth_data() const
Definition: bgp_config.h:244
uint16_t port() const
Definition: bgp_config.h:216
uint32_t med
Definition: bgp_config.h:379
RoutingPolicyMatchConfig match
Definition: bgp_config.h:394
std::string peer_identifier_string() const
Definition: bgp_config.h:209
std::set< std::string > NeighborList
Definition: bgp_config.h:423
void set_last_change_at(uint32_t tstamp) const
Definition: bgp_config.h:637
std::vector< std::string > CommunityList
Definition: bgp_config.h:347
void set_local_identifier(uint32_t identifier)
Definition: bgp_config.h:237
void set_enable_4byte_as(bool as_4byte)
Definition: bgp_config.h:647
std::string source_routing_instance
Definition: bgp_config.h:331
std::vector< RoutingPolicyTermConfig > RoutingPolicyTermList
Definition: bgp_config.h:401
bool operator<(const AuthenticationKey &rhs) const
Definition: bgp_config.cc:39
std::string AuthKeyTypeToString() const
Definition: bgp_config.cc:292
CommunityList ext_community_set
Definition: bgp_config.h:375
uint32_t local_as() const
Definition: bgp_config.h:233
void set_gr_xmpp_helper(bool helper)
Definition: bgp_config.h:643
friend class BgpInstanceConfigTest
Definition: bgp_config.h:519
std::string ToString() const
Definition: bgp_config.cc:421
const ServiceChainList & service_chain_list() const
Definition: bgp_config.h:488
AggregateRouteList inet6_aggregate_routes_
Definition: bgp_config.h:536
virtual const BgpNeighborConfig * FindNeighbor(const std::string &instance_name, const std::string &name) const =0
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
uint32_t subcluster_id() const
Definition: bgp_config.h:569
std::vector< as_t > AsnList
Definition: bgp_config.h:346
std::string value
Definition: bgp_config.h:35
uint16_t bgpaas_port_start() const
Definition: bgp_config.h:676
uint32_t cluster_id() const
Definition: bgp_config.h:195
virtual InstanceMapRange InstanceMapItems(const std::string &start_instance=std::string()) const =0
DISALLOW_COPY_AND_ASSIGN(BgpProtocolConfig)
AddressFamilyList GetAddressFamilies() const
Definition: bgp_config.cc:283
RouteTargetList export_list_
Definition: bgp_config.h:524
std::map< std::string, BgpInstanceConfig * > InstanceMap
Definition: bgp_config.h:770
std::vector< BgpFamilyAttributesConfig > FamilyAttributesList
Definition: bgp_config.h:142
std::string service_instance
Definition: bgp_config.h:330
std::vector< ServiceChainConfig > ServiceChainList
Definition: bgp_config.h:426
void set_llgr_time(uint64_t llgr_time)
Definition: bgp_config.h:635
void set_keydata(const AuthenticationData &in_auth_data)
Definition: bgp_config.h:247
uint8_t analytics_dscp() const
Definition: bgp_config.h:720
const_iterator end() const
Definition: bgp_config.h:53
uint8_t xmpp_hold_time() const
Definition: bgp_config.h:664
void set_fc_enabled(bool enable)
Definition: bgp_config.h:651
uint32_t identifier_
Definition: bgp_config.h:291
const AggregateRouteList & aggregate_routes(Address::Family family) const
Definition: bgp_config.cc:390
uint16_t bgpaas_port_end() const
Definition: bgp_config.h:680
const IpAddress & gateway_address(Address::Family family) const
Definition: bgp_config.cc:262
int virtual_network_index_
Definition: bgp_config.h:527
void set_rd_cluster_seed(uint16_t seed)
Definition: bgp_config.h:673
virtual ~BgpInstanceConfig()
Definition: bgp_config.cc:342
void set_gr_bgp_helper(bool helper)
Definition: bgp_config.h:641
uint64_t last_change_at() const
Definition: bgp_config.h:716
void set_last_change_at(uint64_t tstamp) const
Definition: bgp_config.h:263
uint32_t cluster_id_
Definition: bgp_config.h:289
void set_last_change_at(uint64_t tstamp) const
Definition: bgp_config.h:717
BgpRoutingPolicyObserver policy
Definition: bgp_config.h:762
IpAddress inet6_gateway_address_
Definition: bgp_config.h:294
boost::function< void(const BgpGlobalQosConfig *, EventType)> BgpGlobalQosConfigObserver
Definition: bgp_config.h:756
AggregateRouteList inet_aggregate_routes_
Definition: bgp_config.h:535
NeighborList neighbor_list_
Definition: bgp_config.h:522
DISALLOW_COPY_AND_ASSIGN(BgpGlobalQosConfig)
void set_bgpaas_port_start(uint16_t bgpaas_port_start)
Definition: bgp_config.h:677
void set_admin_down(bool admin_down)
Definition: bgp_config.h:182
uint64_t last_change_at_
Definition: bgp_config.h:689
void set_export_list(const RouteTargetList &export_list)
Definition: bgp_config.h:447
void set_admin_down(bool admin_down)
Definition: bgp_config.h:555
const RoutingPolicyConfigList & routing_policy_list() const
Definition: bgp_config.h:497
bool operator<(const OriginOverrideConfig &rhs) const
Definition: bgp_config.cc:157
AuthenticationData auth_data_
Definition: bgp_config.h:303
uint16_t rd_cluster_seed_
Definition: bgp_config.h:702
void set_gr_enable(bool enable)
Definition: bgp_config.h:645
CommunityList ext_community_match
Definition: bgp_config.h:365
static const char * kFabricInstance
Definition: bgp_config.h:779
void set_all_tags_are_global(bool all_tags_are_global)
Definition: bgp_config.h:685
void set_has_pnf(bool has_pnf)
Definition: bgp_config.h:452
void set_instance_name(const std::string &instance_name)
Definition: bgp_config.h:169
std::string private_as_action_
Definition: bgp_config.h:288
bool passive() const
Definition: bgp_config.h:184
static const int kDefaultPort
Definition: bgp_config.h:780
std::map< std::string, BgpNeighborConfig * > NeighborMap
Definition: bgp_config.h:773
bool enable_4byte_as() const
Definition: bgp_config.h:646
uint16_t source_port_
Definition: bgp_config.h:296
uint64_t last_change_at_
Definition: bgp_config.h:724
void set_passive(bool passive)
Definition: bgp_config.h:185
uint32_t local_autonomous_system_
Definition: bgp_config.h:601
void add_neighbor(const std::string &neighbor)
Definition: bgp_config.h:435
void set_xmpp_hold_time(uint8_t hold_time)
Definition: bgp_config.h:667
void set_autonomous_system(uint32_t autonomous_system)
Definition: bgp_config.h:576
KeyType key_type() const
Definition: bgp_config.h:70
std::string name_
Definition: bgp_config.h:521
int vxlan_id() const
Definition: bgp_config.h:479
void set_cluster_id(uint32_t cluster_id)
Definition: bgp_config.h:196
const_iterator begin() const
Definition: bgp_config.h:52
OriginOverrideConfig origin_override_
Definition: bgp_config.h:305
void set_port(int port)
Definition: bgp_config.h:588
void set_index(int index)
Definition: bgp_config.h:508
const std::string & uuid() const
Definition: bgp_config.h:165
void set_peer_as(uint32_t peer_as)
Definition: bgp_config.h:199
uint32_t local_identifier() const
Definition: bgp_config.h:236
uint8_t loop_count_
Definition: bgp_config.h:299
void set_port(uint16_t port)
Definition: bgp_config.h:217
void AddKeyToKeyChain(const AuthenticationKey &key)
Definition: bgp_config.cc:91
std::string local_identifier_string() const
Definition: bgp_config.h:240
uint32_t local_as_
Definition: bgp_config.h:300
bool operator==(const AuthenticationKey &rhs) const
Definition: bgp_config.cc:44
const NeighborList & neighbor_list() const
Definition: bgp_config.h:434
AuthenticationData & operator=(const AuthenticationData &rhs)
Definition: bgp_config.cc:84
boost::function< void(const BgpProtocolConfig *, EventType)> BgpProtocolObserver
Definition: bgp_config.h:746
virtual ~BgpConfigManager()
Definition: bgp_config.cc:509
virtual const BgpProtocolConfig * GetProtocolConfig(const std::string &instance_name) const =0
void set_as_override(bool as_override)
Definition: bgp_config.h:188
int virtual_network_index() const
Definition: bgp_config.h:459
bool operator!=(const BgpNeighborConfig &rhs) const
Definition: bgp_config.h:269
boost::function< void(const BgpInstanceConfig *, EventType)> BgpInstanceObserver
Definition: bgp_config.h:748
const std::string & instance_name() const
Definition: bgp_config.h:548
const std::string & name() const
Definition: bgp_config.h:432
uint64_t last_change_at_
Definition: bgp_config.h:607
bool virtual_network_allow_transit() const
Definition: bgp_config.h:464
CommunityList community_set
Definition: bgp_config.h:372
RoutingPolicyConfigList routing_policies_
Definition: bgp_config.h:538
uint32_t llgr_time() const
Definition: bgp_config.h:634
CommunityList ext_community_add
Definition: bgp_config.h:376
std::string service_chain_address
Definition: bgp_config.h:329
const IpAddress & peer_address() const
Definition: bgp_config.h:201
const BgpServer * server()
Definition: bgp_config.h:814
void set_end_of_rib_timeout(uint16_t time)
Definition: bgp_config.h:639
void CopyValues(const BgpNeighborConfig &rhs)
Definition: bgp_config.cc:202
std::string instance_name_
Definition: bgp_config.h:281
bool gr_enable() const
Definition: bgp_config.h:644
bool operator<(const AuthenticationData &rhs) const
Definition: bgp_config.cc:57
AsnList aspath_expand
Definition: bgp_config.h:371
virtual RoutingPolicyMapRange RoutingPolicyMapItems(const std::string &start_policy=std::string()) const =0
const std::string & subcluster_name() const
Definition: bgp_config.h:563
const StaticRouteList & static_routes(Address::Family family) const
Definition: bgp_config.cc:359
void reset_subcluster_name()
Definition: bgp_config.h:567
std::vector< std::string > ProtocolList
Definition: bgp_config.h:348
void set_uuid(const std::string &uuid)
Definition: bgp_config.h:166
std::string subcluster_name_
Definition: bgp_config.h:603
int operator()(const BgpFamilyAttributesConfig lhs, const BgpFamilyAttributesConfig rhs) const
Definition: bgp_config.h:106
void set_bgpaas_port_end(uint16_t bgpaas_port_end)
Definition: bgp_config.h:681
DISALLOW_COPY_AND_ASSIGN(BgpInstanceConfig)
uint32_t cluster_id() const
Definition: bgp_config.h:557
uint16_t end_of_rib_timeout_
Definition: bgp_config.h:692
std::string service_chain_id
Definition: bgp_config.h:332
uint32_t peer_identifier() const
Definition: bgp_config.h:205
virtual void Terminate()=0
iterator end()
Definition: bgp_config.h:51
static const uint32_t kDefaultAutonomousSystem
Definition: bgp_config.h:781
void set_nh_check_enabled(bool enable)
Definition: bgp_config.h:657
void set_routing_instance_vxlan(const std::string &routing_instance_vxlan)
Definition: bgp_config.h:514
void set_control_dscp(uint8_t value)
Definition: bgp_config.h:719
const RoutingPolicyTermList & terms() const
Definition: bgp_config.h:410