OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
agent.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_hpp
6 #define vnsw_agent_hpp
7 
8 #include <vector>
9 #include <stdint.h>
10 #include <string>
11 #include <net/ethernet.h>
12 #include <boost/intrusive_ptr.hpp>
14 #include <cmn/agent_cmn.h>
15 #include <base/connection_info.h>
16 #include "net/mac_address.h"
17 #include "oper/agent_types.h"
18 
19 class Agent;
20 class AgentParam;
21 class AgentConfig;
22 class AgentStats;
23 class KSync;
24 class AgentUveBase;
25 class PktModule;
26 class VirtualGateway;
27 class ServicesModule;
28 class MulticastHandler;
29 class AgentDBEntry;
30 class XmppClient;
31 class OperDB;
32 class AgentRoute;
33 class TaskScheduler;
34 class AgentInit;
36 class FlowStatsCollector;
38 class FlowStatsManager;
40 class ResourceManager;
42 struct PortConfig;
43 namespace OVSDB {
44 class OvsdbClient;
45 };
46 class ConfigManager;
47 class EventNotifier;
48 
49 class Interface;
50 typedef boost::intrusive_ptr<Interface> InterfaceRef;
51 typedef boost::intrusive_ptr<const Interface> InterfaceConstRef;
52 void intrusive_ptr_release(const Interface* p);
53 void intrusive_ptr_add_ref(const Interface* p);
57 
58 class VmEntry;
59 typedef boost::intrusive_ptr<VmEntry> VmEntryRef;
60 typedef boost::intrusive_ptr<const VmEntry> VmEntryConstRef;
61 void intrusive_ptr_release(const VmEntry* p);
62 void intrusive_ptr_add_ref(const VmEntry* p);
65 void intrusive_ptr_add_back_ref(const IntrusiveReferrer ref, const VmEntry* p);
66 void intrusive_ptr_del_back_ref(const IntrusiveReferrer ref, const VmEntry* p);
67 
68 class VnEntry;
69 typedef boost::intrusive_ptr<VnEntry> VnEntryRef;
70 typedef boost::intrusive_ptr<const VnEntry> VnEntryConstRef;
71 void intrusive_ptr_release(const VnEntry* p);
72 void intrusive_ptr_add_ref(const VnEntry* p);
73 
74 class SgEntry;
75 typedef boost::intrusive_ptr<SgEntry> SgEntryRef;
76 typedef boost::intrusive_ptr<const SgEntry> SgEntryConstRef;
77 void intrusive_ptr_release(const SgEntry* p);
78 void intrusive_ptr_add_ref(const SgEntry* p);
79 
80 class TagEntry;
81 typedef boost::intrusive_ptr<TagEntry> TagEntryRef;
82 typedef boost::intrusive_ptr<const TagEntry> TagEntryConstRef;
83 void intrusive_ptr_release(const TagEntry* p);
84 void intrusive_ptr_add_ref(const TagEntry* p);
85 
86 class VrfEntry;
89 void intrusive_ptr_add_back_ref(const IntrusiveReferrer ref, const VrfEntry* p);
90 void intrusive_ptr_del_back_ref(const IntrusiveReferrer ref, const VrfEntry* p);
91 void intrusive_ptr_release(const VrfEntry* p);
92 void intrusive_ptr_add_ref(const VrfEntry* p);
93 
94 class MplsLabel;
95 typedef boost::intrusive_ptr<MplsLabel> MplsLabelRef;
96 void intrusive_ptr_release(const MplsLabel* p);
97 void intrusive_ptr_add_ref(const MplsLabel* p);
98 
100 typedef boost::intrusive_ptr<MirrorEntry> MirrorEntryRef;
101 void intrusive_ptr_release(const MirrorEntry* p);
102 void intrusive_ptr_add_ref(const MirrorEntry* p);
103 
104 class VxLanId;
105 typedef boost::intrusive_ptr<VxLanId> VxLanIdRef;
106 void intrusive_ptr_release(const VxLanId* p);
107 void intrusive_ptr_add_ref(const VxLanId* p);
108 
110 typedef boost::intrusive_ptr<MulticastPolicyEntry> MulticastPolicyEntryRef;
111 typedef boost::intrusive_ptr<const MulticastPolicyEntry> MulticastPolicyEntryConstRef;
114 
117 class EvpnRouteEntry;
118 class BridgeRouteEntry;
119 class Route;
120 typedef boost::intrusive_ptr<Route> RouteRef;
121 void intrusive_ptr_release(const Route* p);
122 void intrusive_ptr_add_ref(const Route* p);
123 
124 class NextHop;
125 typedef boost::intrusive_ptr<NextHop> NextHopRef;
126 typedef boost::intrusive_ptr<const NextHop> NextHopConstRef;
127 void intrusive_ptr_release(const NextHop* p);
128 void intrusive_ptr_add_ref(const NextHop* p);
129 
131 typedef boost::intrusive_ptr<CryptTunnelEntry> CryptTunnelEntryRef;
132 typedef boost::intrusive_ptr<const CryptTunnelEntry> CryptTunnelEntryConstRef;
135 
136 class AddrBase;
137 typedef boost::intrusive_ptr<AddrBase> AddrRef;
138 void intrusive_ptr_release(const AddrBase* p);
139 void intrusive_ptr_add_ref(const AddrBase* p);
140 
142 typedef boost::intrusive_ptr<AclDBEntry> AclDBEntryRef;
143 typedef boost::intrusive_ptr<const AclDBEntry> AclDBEntryConstRef;
144 void intrusive_ptr_release(const AclDBEntry* p);
145 void intrusive_ptr_add_ref(const AclDBEntry* p);
146 
147 class PolicySet;
148 typedef boost::intrusive_ptr<PolicySet> PolicySetRef;
149 typedef boost::intrusive_ptr<const AclDBEntry> PolicySetConstRef;
150 void intrusive_ptr_release(const PolicySet* p);
151 void intrusive_ptr_add_ref(const PolicySet* p);
152 
154 typedef boost::intrusive_ptr<PhysicalDevice> PhysicalDeviceRef;
155 typedef boost::intrusive_ptr<const PhysicalDevice> PhysicalDeviceConstRef;
158 
160 typedef boost::intrusive_ptr<PhysicalDeviceVn> PhysicalDeviceVnRef;
161 typedef boost::intrusive_ptr<const PhysicalDeviceVn> PhysicalDeviceVnConstRef;
164 
166 typedef boost::intrusive_ptr<HealthCheckService> HealthCheckServiceRef;
169 
171 typedef boost::intrusive_ptr<ForwardingClass> ForwardingClassRef;
172 typedef boost::intrusive_ptr<const ForwardingClass> ForwardingClassConstRef;
175 
177 typedef boost::intrusive_ptr<AgentQosConfig> AgentQosConfigRef;
178 typedef boost::intrusive_ptr<const AgentQosConfig> AgentQosConfigConstRef;
181 
182 class QosQueue;
183 typedef boost::intrusive_ptr<QosQueue> QosQueueRef;
184 typedef boost::intrusive_ptr<const QosQueue> QosQueueConstRef;
185 void intrusive_ptr_release(const QosQueueRef *p);
186 void intrusive_ptr_add_ref(const QosQueueRef *p);
187 
189 typedef boost::intrusive_ptr<BridgeDomainEntry> BridgeDomainRef;
190 typedef boost::intrusive_ptr<const BridgeDomainEntry> BridgeDomainConstRef;
193 
195 typedef boost::intrusive_ptr<SecurityLoggingObject> SecurityLoggingObjectRef;
196 typedef boost::intrusive_ptr<const SecurityLoggingObject> SecurityLoggingObjectConstRef;
199 
200 //class SecurityGroup;
201 typedef std::vector<int> SecurityGroupList;
202 typedef std::vector<int> TagList;
203 typedef std::vector<boost::uuids::uuid> UuidList;
204 typedef std::vector<std::string> CommunityList;
205 
207 typedef boost::intrusive_ptr<MulticastPolicyEntry> MulticastPolicyEntryRef;
208 typedef boost::intrusive_ptr<const MulticastPolicyEntry> MulticastPolicyEntryConstRef;
211 
212 typedef std::set<std::string> VnListType;
213 
214 typedef std::map<std::string, std::string> VrLimitExceeded;
215 typedef std::pair<std::string, std::string> VrLimitData;
216 
217 typedef std::vector<Ip4Address> AddressList;
218 typedef std::vector<Interface *> InterfaceList;
219 typedef std::vector<std::string> InterfaceNameList;
220 
221 class AgentDBTable;
222 class InterfaceTable;
223 class HealthCheckTable;
224 class NextHopTable;
225 class CryptTunnelTable;
226 class VmTable;
227 class VnTable;
228 class SgTable;
229 class TagTable;
230 class VrfTable;
231 class MplsTable;
232 class RouteTable;
233 class AgentRouteTable;
236 class EvpnAgentRouteTable;
238 class AclTable;
239 class PolicySetTable;
240 class MirrorTable;
241 class VrfAssignTable;
242 class DomainConfig;
243 class VxLanTable;
245 class PhysicalDeviceTable;
248 class AgentQosConfigTable;
249 class QosQueueTable;
250 class MirrorCfgTable;
251 class IntfMirrorCfgTable;
252 class BridgeDomainTable;
254 
255 class XmppInit;
256 class AgentXmppChannel;
258 class AgentDnsXmppChannel;
259 class EventManager;
260 class TaskTbbKeepAwake;
262 
263 class ArpProto;
264 class DhcpProto;
265 class Dhcpv6Proto;
266 class DnsProto;
267 class BfdProto;
268 class IcmpProto;
269 class Icmpv6Proto;
270 class FlowProto;
271 class IgmpProto;
272 
273 class Peer;
274 class LifetimeManager;
275 class DiagTable;
276 class VNController;
277 class AgentSignal;
279 class Agent;
280 class RestServer;
281 class PortIpcHandler;
282 class MacLearningProto;
283 class MacLearningModule;
284 
285 extern void RouterIdDepInit(Agent *agent);
286 
287 #define MULTICAST_LABEL_RANGE_START 1024
288 #define MULTICAST_LABEL_BLOCK_SIZE 2048
289 
290 #define MIN_UNICAST_LABEL_RANGE 4098
291 #define MAX_XMPP_SERVERS 2
292 #define XMPP_SERVER_PORT 5269
293 #define XMPP_DNS_SERVER_PORT 53
294 #define METADATA_IP_ADDR ntohl(inet_addr("169.254.169.254"))
295 #define METADATA_PORT 8775
296 #define METADATA_NAT_PORT 80
297 #define AGENT_INIT_TASKNAME "Agent::Init"
298 #define INSTANCE_MANAGER_TASK_NAME "Agent::InstanceManager"
299 #define AGENT_SHUTDOWN_TASKNAME "Agent::Shutdown"
300 #define AGENT_FLOW_STATS_MANAGER_TASK "Agent::FlowStatsManager"
301 #define AGENT_SANDESH_TASKNAME "Agent::Sandesh"
302 #define IPV4_MULTICAST_BASE_ADDRESS "224.0.0.0"
303 #define IPV6_MULTICAST_BASE_ADDRESS "ff00::"
304 #define MULTICAST_BASE_ADDRESS_PLEN 8
305 
306 #define VROUTER_SERVER_PORT 20914
307 
308 #define kLogFilesCount 10
309 #define kLogFileSize (2*1024*1024)
310 /****************************************************************************
311  * Definitions related to config/resource backup/restore
312  ****************************************************************************/
313 #define CFG_BACKUP_DIR "/var/lib/contrail/backup"
314 #define CFG_BACKUP_COUNT 2
315 #define CFG_BACKUP_IDLE_TIMEOUT (10*1000)
316 #define CFG_RESTORE_AUDIT_TIMEOUT (15*1000)
317 
318 /****************************************************************************
319  * Task names
320  ****************************************************************************/
321 #define kTaskFlowEvent "Agent::FlowEvent"
322 #define kTaskFlowKSync "Agent::FlowKSync"
323 #define kTaskFlowUpdate "Agent::FlowUpdate"
324 #define kTaskFlowDelete "Agent::FlowDelete"
325 #define kTaskFlowMgmt "Agent::FlowMgmt"
326 #define kTaskFlowAudit "KSync::FlowAudit"
327 #define kTaskFlowLogging "Agent::FlowLogging"
328 #define kTaskFlowStatsCollector "Flow::StatsCollector"
329 #define kTaskSessionStatsCollector "Flow::SessionStatsCollector"
330 #define kTaskSessionStatsCollectorEvent "Flow::SessionStatsCollectorEvent"
331 #define kTaskFlowStatsUpdate "Agent::FlowStatsUpdate"
332 
333 #define kTaskHealthCheck "Agent::HealthCheck"
334 #define kTaskCryptTunnel "Agent::CryptTunnel"
335 
336 #define kTaskDBExclude "Agent::DBExcludeTask"
337 #define kTaskConfigManager "Agent::ConfigManager"
338 #define kTaskHttpRequstHandler "http::RequestHandlerTask"
339 #define kAgentResourceRestoreTask "Agent::ResoureRestore"
340 #define kAgentResourceBackUpTask "Agent::ResourceBackup"
341 #define kTaskMacLearning "Agent::MacLearning"
342 #define kTaskMacLearningMgmt "Agent::MacLearningMgmt"
343 #define kTaskMacAging "Agent::MacAging"
344 
345 #define kInterfaceDbTablePrefix "db.interface"
346 #define kVnDbTablePrefix "db.vn"
347 #define kVmDbTablePrefix "db.vm"
348 #define kVrfDbTablePrefix "db.vrf.0"
349 #define kMplsDbTablePrefix "db.mpls"
350 #define kAclDbTablePrefix "db.acl"
351 #define kV4UnicastRouteDbTableSuffix "uc.route.0"
352 #define kV6UnicastRouteDbTableSuffix "uc.route6.0"
353 #define kL2RouteDbTableSuffix "l2.route.0"
354 #define kMcastRouteDbTableSuffix "mc.route.0"
355 #define kEvpnRouteDbTableSuffix "evpn.route.0"
356 #define kEventNotifierTask "Agent::EventNotifier"
357 
358 class Agent {
359 public:
360  static const uint32_t kDefaultMaxLinkLocalOpenFds = 16384;
361  // max open files in the agent, excluding the linklocal bind ports
362  static const uint32_t kMaxOtherOpenFds = 512;
363  // max BGP-as-a-server sessions, for which local ports are reserved
364  static const uint32_t kMaxBgpAsAServerSessions = 512;
365  // default timeout zero means, this timeout is not used
366  static const uint32_t kDefaultFlowCacheTimeout = 0;
367  // default number of flow index-manager events logged per flow
368  static const uint32_t kDefaultFlowIndexSmLogCount = 0;
369  // default number of threads for flow setup
370  static const uint32_t kDefaultFlowThreadCount = 1;
371  // Log a message if latency in processing flow queue exceeds limit
372  static const uint32_t kDefaultFlowLatencyLimit = 0;
373  // Max number of threads
374  static const uint32_t kMaxTbbThreads = 8;
375  static const uint32_t kDefaultTbbKeepawakeTimeout = (20000); //time-millisecs
376  static const uint32_t kDefaultTaskMonitorTimeout = (20000); //time-millisecs
377  // Default number of tx-buffers on pkt0 interface
378  static const uint32_t kPkt0TxBufferCount = 1000;
379  // Default value for cleanup of stale interface entries
380  static const uint32_t kDefaultStaleInterfaceCleanupTimeout = 60;
381 
382  static const uint16_t kDefaultVmiVmVnUveInterval;
383  static const uint32_t kFlowAddTokens = 50;
384  static const uint32_t kFlowKSyncTokens = 25;
385  static const uint32_t kFlowDelTokens = 16;
386  static const uint32_t kFlowUpdateTokens = 16;
387  static const uint32_t kMacLearningDefaultTokens = 256;
388  static const uint8_t kMinAapPrefixLen = 24;
389  static const uint8_t kInvalidQueueId = 255;
390  static const int kInvalidCpuId = -1;
391  static const uint8_t kMaxSessionEndpoints = 5;
392  static const uint8_t kMaxSessionAggs = 8;
393  static const uint8_t kMaxSessions = 100;
394  static const uint16_t kFabricSnatTableSize = 4096;
395  // kDropNewFlowsRecoveryThreshold is set to 90% of the Max flows for a
396  // VM this value represents that recovery from the drop new flows will
397  // happen only when total number of flow fall below this value
398  static const int kDropNewFlowsRecoveryThreshold = 90;
399  static const int kDefaultHighWatermark = 80;
400  static const int kDefaultLowWatermark = 75;
401  typedef std::vector<Ip4Address> AddressList;
402 
406  L2,
408  };
409 
413  };
414 
416  INVALID = 0,
424  };
425  static const uint8_t ROUTE_TABLE_START = (Agent::INVALID + 1);
426 
427  typedef void (*FlowStatsReqHandler)(Agent *agent,
428  uint32_t proto, uint32_t port,
429  uint64_t timeout);
430 
431  typedef void (*PortConfigHandler)(Agent *agent,
432  uint8_t proto, const PortConfig *);
433  Agent();
434  virtual ~Agent();
435 
436  static Agent *GetInstance() {return singleton_;}
437  static const std::string &NullString() {return null_string_;}
438  static const std::set<std::string> &NullStringList() {return null_string_list_;}
439  static const MacAddress &vrrp_mac() {return vrrp_mac_;}
441  static const std::string &BcastMac() {return bcast_mac_;}
442  static const MacAddress &left_si_mac() {return left_si_mac_;}
443  static const MacAddress &right_si_mac() {return right_si_mac_;}
444  static const std::string &xmpp_dns_server_prefix() {
446  }
447  static const std::string &xmpp_control_node_prefix() {
449  }
450 
451  const std::string &program_name() const {return prog_name_;}
452  const std::string &config_file() const {return config_file_;}
453  const std::string &log_file() const {return log_file_;}
454  const std::string &v4_link_local_subnet() const {
455  return v4_link_local_subnet_;
456  }
457  const std::string &v6_link_local_subnet() const {
458  return v6_link_local_subnet_;
459  }
460  const uint16_t v4_link_local_plen() const { return v4_link_local_plen_; }
461  const uint16_t v6_link_local_plen() const { return v6_link_local_plen_; }
462 
463  // DB Table accessor methods
467  intf_table_ = table;
468  }
469 
472  mirror_cfg_table_ = table;
473  }
474 
477  nh_table_ = table;
478  }
479 
482  crypt_tunnel_table_ = table;
483  }
484 
485  VrfTable *vrf_table() const { return vrf_table_;}
486  void set_vrf_table(VrfTable *table) {
487  vrf_table_ = table;
488  }
489 
490  VmTable *vm_table() const { return vm_table_;}
491  void set_vm_table(VmTable *table) {
492  vm_table_ = table;
493  }
494 
495  VnTable *vn_table() const { return vn_table_;}
496  void set_vn_table(VnTable *table) {
497  vn_table_ = table;
498  }
499 
500  SgTable *sg_table() const { return sg_table_;}
501  void set_sg_table(SgTable *table) {
502  sg_table_ = table;
503  }
504 
505  TagTable *tag_table() const { return tag_table_;}
506  void set_tag_table(TagTable *table) {
507  tag_table_ = table;
508  }
509 
510  MplsTable *mpls_table() const { return mpls_table_;}
511  void set_mpls_table(MplsTable *table) {
512  mpls_table_ = table;
513  }
514 
515  AclTable *acl_table() const { return acl_table_;}
516  void set_acl_table(AclTable *table) {
517  acl_table_ = table;
518  }
519 
522  policy_set_table_ = table;
523  }
524 
527  mirror_table_ = table;
528  }
529 
532  vrf_assign_table_ = table;
533  }
534 
535  VxLanTable *vxlan_table() const { return vxlan_table_;}
537  vxlan_table_ = table;
538  }
539 
542  }
544  forwarding_class_table_ = table;
545  }
546 
548  return slo_table_;
549  }
551  slo_table_ = table;
552  }
553 
555  return qos_config_table_;
556  }
557 
560  }
561 
563  return qos_queue_table_;
564  }
566  qos_queue_table_ = table;
567  }
568 
570 
572  return intf_mirror_cfg_table_;
573  }
575  intf_mirror_cfg_table_ = table;
576  }
577 
579  return uc_rt_table_;
580  }
582  table) {
583  uc_rt_table_ = table;
584  }
587  }
588 
590  return mpls_rt_table_;
591  }
593  table) {
594  mpls_rt_table_ = table;
595  }
598  }
599 
601  return mc_rt_table_;
602  }
605  mc_rt_table_ = table;
606  }
609  }
610 
612  return evpn_rt_table_;
613  }
616  }
617 
619  return l2_rt_table_;
620  }
622  l2_rt_table_ = table;
623  }
626  }
627 
629  return physical_device_table_;
630  }
632  physical_device_table_ = table;
633  }
634 
637  }
640  }
641 
644  mp_table_ = table;
645  }
646 
647  // VHOST related
648  Ip4Address vhost_prefix() const {return prefix_;}
649  void set_vhost_prefix(const Ip4Address &addr) {
650  prefix_ = addr;
651  }
652 
653  uint32_t vhost_prefix_len() const {return prefix_len_;}
654  void set_vhost_prefix_len(uint32_t plen) {prefix_len_ = plen;}
655 
657  void set_vhost_default_gateway(const AddressList &addr_list) {
658  gateway_list_ = addr_list;
659  }
660 
662  void set_ip_fabric_intf_addr_list(const AddressList &addr_list) {
663  ip_fabric_intf_addr_list_ = addr_list;
664  }
665 
666  Ip4Address router_id() const {return router_id_; }
667  IpAddress router_id6() const {return router_id6_;}
668  const Ip4Address *router_ip_ptr() const {
669  return &router_id_;
670  }
671  void set_router_id(const Ip4Address &addr) {
672  router_id_ = addr;
673  router_id6_ = Ip6Address::v4_mapped(addr);
675  }
677  void set_router_id_configured(bool value) {
678  router_id_configured_ = value;
679  }
680 
682  void set_compute_node_ip(const Ip4Address &addr) {
683  compute_node_ip_ = addr;
684  }
685 
686  void set_dns_list(std::vector<std::string> &dns_list) {
687  dns_list_ = dns_list;
688  }
689 
690  AgentSignal *agent_signal() const { return agent_signal_.get(); }
691 
692  std::vector<string> &GetControllerlist() {
693  return (controller_list_);
694  }
695 
697  return (controller_chksum_);
698  }
699 
700  std::vector<string> &GetDnslist() {
701  return (dns_list_);
702  }
703 
704  uint32_t GetDnslistChksum() {
705  return (dns_chksum_);
706  }
707 
708  std::vector<string> &GetCollectorlist() {
709  return (collector_list_);
710  }
711 
713  return (collector_chksum_);
714  }
715 
717  void set_loopback_ip(const Ip4Address &addr) {
718  loopback_ip_ = addr;
719  }
720 
721  void set_is_l3mh(bool flag) {
722  is_l3mh_ = flag;
723  }
724 
725  bool is_l3mh() const {
726  return is_l3mh_;
727  }
728 
729  // Common XMPP Client for control-node and config clients
730  const std::string &controller_ifmap_xmpp_server(uint8_t idx) const {
731  return xs_addr_[idx];
732  }
733  void set_controller_ifmap_xmpp_server(const std::string &addr, uint8_t idx) {
734  xs_addr_[idx] = addr;
735  }
737  xs_addr_[idx].clear();
738  xs_port_[idx] = 0;
739  }
740  const bool xmpp_auth_enabled() const {
741  return xs_auth_enable_;
742  }
743  const std::string &xmpp_server_cert() const {
744  return xs_server_cert_;
745  }
746  const std::string &xmpp_server_key() const {
747  return xs_server_key_;
748  }
749  const std::string &xmpp_ca_cert() const {
750  return xs_ca_cert_;
751  }
752 
753  const std::string &subcluster_name() const {
754  return subcluster_name_;
755  }
756 
757  const uint16_t controller_ifmap_xmpp_port(uint8_t idx) const {
758  return xs_port_[idx];
759  }
760  void set_controller_ifmap_xmpp_port(uint16_t port, uint8_t idx) {
761  xs_port_[idx] = port;
762  }
763 
764  XmppInit *controller_ifmap_xmpp_init(uint8_t idx) const {
765  return xmpp_init_[idx];
766  }
768  xmpp_init_[idx] = init;
769  }
770 
772  return xmpp_client_[idx];
773  }
774 
775  void set_controller_ifmap_xmpp_client(XmppClient *client, uint8_t idx) {
776  xmpp_client_[idx] = client;
777  }
778 
779  // Config XMPP server specific
780  const int8_t &ifmap_active_xmpp_server_index() const { return xs_idx_; }
781  const std::string &ifmap_active_xmpp_server() const { return xs_cfg_addr_; }
782  void set_ifmap_active_xmpp_server(const std::string &addr,
783  uint8_t xs_idx) {
784  xs_cfg_addr_ = addr;
785  xs_idx_ = xs_idx;
786  }
788  xs_cfg_addr_.clear();
789  xs_idx_ = -1;
790  }
791 
793  return ifmap_channel_[idx];
794  }
796  uint8_t idx) {
797  ifmap_channel_[idx] = channel;
798  }
799 
800  // Controller XMPP server
801  const uint64_t controller_xmpp_channel_setup_time(uint8_t idx) const {
802  return xs_stime_[idx];
803  }
804  void set_controller_xmpp_channel_setup_time(uint64_t time, uint8_t idx) {
805  xs_stime_[idx] = time;
806  }
807 
808  boost::shared_ptr<AgentXmppChannel> controller_xmpp_channel_ref(uint8_t idx);
810  return (agent_xmpp_channel_[idx]).get();
811  }
812 
813  void set_controller_xmpp_channel(AgentXmppChannel *channel, uint8_t idx);
814  void reset_controller_xmpp_channel(uint8_t idx);
815 
816  // Service instance
819  }
820 
823  }
824 
825  // DNS XMPP Server
826  const bool dns_auth_enabled() const {
827  return dns_auth_enable_;
828  }
829 
830  XmppInit *dns_xmpp_init(uint8_t idx) const {
831  return dns_xmpp_init_[idx];
832  }
833  void set_dns_xmpp_init(XmppInit *xmpp, uint8_t idx) {
834  dns_xmpp_init_[idx] = xmpp;
835  }
836 
837  XmppClient *dns_xmpp_client(uint8_t idx) const {
838  return dns_xmpp_client_[idx];
839  }
840  void set_dns_xmpp_client(XmppClient *client, uint8_t idx) {
841  dns_xmpp_client_[idx] = client;
842  }
843 
844  AgentDnsXmppChannel *dns_xmpp_channel(uint8_t idx) const {
845  return dns_xmpp_channel_[idx];
846  }
847  void set_dns_xmpp_channel(AgentDnsXmppChannel *chnl, uint8_t idx) {
848  dns_xmpp_channel_[idx] = chnl;
849  }
851  if (channel == dns_xmpp_channel_[0] || channel == dns_xmpp_channel_[1])
852  return true;;
853  return false;
854  }
855 
856  // DNS Server and port
857  const std::string &dns_server(uint8_t idx) const {
858  return dns_addr_[idx];
859  }
860  void set_dns_server(const std::string &addr, uint8_t idx) {
861  dns_addr_[idx] = addr;
862  }
863  void reset_dns_server(uint8_t idx) {
864  dns_addr_[idx].clear();
865  dns_port_[idx] = 0;
866  }
867 
868  const uint16_t dns_server_port(uint8_t idx) const {
869  return dns_port_[idx];
870  }
871  void set_dns_server_port(uint16_t port, uint8_t idx) {
872  dns_port_[idx] = port;
873  }
874 
875  const std::string &host_name() const {
876  return host_name_;
877  }
878  const std::string &agent_name() const {
879  return agent_name_;
880  }
881 
882  void set_agent_name(const std::string &name) {
883  agent_name_ = name;
884  }
885 
886  const std::string &instance_id() const { return instance_id_; }
887  void set_instance_id(const std::string &id) { instance_id_ = id; }
888 
889  const int &module_type() const { return module_type_; }
890  void set_module_type(int id) { module_type_ = id; }
891 
892  const std::string &module_name() const { return module_name_; }
893  void set_module_name(const std::string &name) { module_name_ = name; }
894 
896  return cn_mcast_builder_;
897  };
899 
900  // Fabric related
901  const std::string &fabric_vn_name() const {return fabric_vn_name_; }
902 
903  const std::string &fabric_vrf_name() const { return fabric_vrf_name_; }
904  void set_fabric_vrf_name(const std::string &name) {
905  fabric_vrf_name_ = name;
906  }
907 
908  const std::string &fabric_policy_vrf_name() const {
910  }
911  void set_fabric_policy_vrf_name(const std::string &name) {
913  }
914 
915  VrfEntry *fabric_vrf() const { return fabric_vrf_; }
916  void set_fabric_vrf(VrfEntry *vrf) { fabric_vrf_ = vrf; }
919 
920  const std::string &linklocal_vn_name() {return link_local_vn_name_;}
921  const std::string &linklocal_vrf_name() {return link_local_vrf_name_;}
922 
923  const std::string &vhost_interface_name() const;
924  void set_vhost_interface_name(const std::string &name) {
925  vhost_interface_name_ = name;
926  }
927 
929  return vhost_disable_policy_;
930  }
931  void set_vhost_disable_policy(bool disable_policy) {
932  vhost_disable_policy_ = disable_policy;
933  }
934 
935  const Interface *vhost_interface() const {
936  return vhost_interface_;
937  }
938  void set_vhost_interface(const Interface *intrface) {
939  vhost_interface_ = intrface;
940  }
941 
942  bool is_vhost_interface_up() const;
943 
944  const std::string &pkt_interface_name() const {
945  return pkt_interface_name_;
946  }
947  void set_pkt_interface_name(const std::string &name) {
948  pkt_interface_name_ = name;
949  }
950 
951  const std::string &GetHostInterfaceName() const;
952 
954  return connection_state_;
955  }
957  connection_state_ = state;
958  }
959  uint16_t metadata_server_port() const {return metadata_server_port_;}
960  void set_metadata_server_port(uint16_t port) {
961  metadata_server_port_ = port;
962  }
963 
965  vrouter_server_ip_ = ip;
966  }
968  return vrouter_server_ip_;
969  }
970  void set_vrouter_server_port(uint32_t port) {
971  vrouter_server_port_ = port;
972  }
973  const uint32_t vrouter_server_port() const {
974  return vrouter_server_port_;
975  }
976 
977  // Protocol objects
978  ArpProto *GetArpProto() const { return arp_proto_; }
979  void SetArpProto(ArpProto *proto) { arp_proto_ = proto; }
980 
981  DhcpProto *GetDhcpProto() const { return dhcp_proto_; }
982  void SetDhcpProto(DhcpProto *proto) { dhcp_proto_ = proto; }
983 
985  void set_dhcpv6_proto(Dhcpv6Proto *proto) { dhcpv6_proto_ = proto; }
986 
987  DnsProto *GetDnsProto() const { return dns_proto_; }
988  void SetDnsProto(DnsProto *proto) { dns_proto_ = proto; }
989 
990  BfdProto *GetBfdProto() const { return bfd_proto_; }
991  void SetBfdProto(BfdProto *proto) { bfd_proto_ = proto; }
992 
993  IcmpProto *GetIcmpProto() const { return icmp_proto_; }
994  void SetIcmpProto(IcmpProto *proto) { icmp_proto_ = proto; }
995 
997  void set_icmpv6_proto(Icmpv6Proto *proto) { icmpv6_proto_ = proto; }
998 
999  FlowProto *GetFlowProto() const { return flow_proto_; }
1000  void SetFlowProto(FlowProto *proto) { flow_proto_ = proto; }
1001 
1002  IgmpProto *GetIgmpProto() const { return igmp_proto_; }
1003  void SetIgmpProto(IgmpProto *proto) { igmp_proto_ = proto; }
1004 
1006  return mac_learning_proto_;
1007  }
1008 
1011  }
1012 
1014  return mac_learning_module_;
1015  }
1016 
1019  }
1020 
1021  // Peer objects
1022  const Peer *local_peer() const {return local_peer_.get();}
1023  const Peer *local_vm_peer() const {return local_vm_peer_.get();}
1024  const Peer *link_local_peer() const {return linklocal_peer_.get();}
1025  const Peer *ecmp_peer() const {return ecmp_peer_.get();}
1026  const Peer *vgw_peer() const {return vgw_peer_.get();}
1027  const Peer *evpn_routing_peer() const {return evpn_routing_peer_.get();}
1028  const Peer *vxlan_bgp_peer() const {return vxlan_bgp_peer_.get();}
1029  const Peer *evpn_peer() const {return evpn_peer_.get();}
1030  const Peer *multicast_peer() const {return multicast_peer_.get();}
1031  const Peer *multicast_tor_peer() const {return multicast_tor_peer_.get();}
1033  return multicast_tree_builder_peer_.get();}
1034  const Peer *mac_vm_binding_peer() const {return mac_vm_binding_peer_.get();}
1035  const Peer *inet_evpn_peer() const {return inet_evpn_peer_.get();}
1036  const Peer *mac_learning_peer() const {return mac_learning_peer_.get();}
1037  const Peer *fabric_rt_export_peer() const {
1038  return fabric_rt_export_peer_.get();
1039  }
1040  const Peer *local_vm_export_peer() const {
1041  return local_vm_export_peer_.get();
1042  }
1043 
1044  // Agent Modules
1045  AgentConfig *cfg() const;
1046  void set_cfg(AgentConfig *cfg);
1047 
1048  AgentStats *stats() const;
1049  void set_stats(AgentStats *stats);
1050 
1051  KSync *ksync() const;
1052  void set_ksync(KSync *ksync);
1053 
1054  AgentUveBase *uve() const;
1055  void set_uve(AgentUveBase *uve);
1056 
1059 
1062 
1065 
1068 
1071 
1074 
1075  PktModule *pkt() const;
1076  void set_pkt(PktModule *pkt);
1077 
1078  ServicesModule *services() const;
1080 
1081  VirtualGateway *vgw() const;
1082  void set_vgw(VirtualGateway *vgw);
1083 
1084  RestServer *rest_server() const;
1085  void set_rest_server(RestServer *r);
1086 
1089 
1090  OperDB *oper_db() const;
1091  void set_oper_db(OperDB *oper_db);
1092 
1093  VNController *controller() const;
1094  void set_controller(VNController *val);
1095 
1098 
1099  EventNotifier *event_notifier() const;
1100  void set_event_notifier(EventNotifier *mgr);
1101 
1102  // Miscellaneous
1105  event_mgr_ = evm;
1106  }
1107 
1108  DiagTable *diag_table() const;
1109  void set_diag_table(DiagTable *table);
1110 
1111  uint16_t mirror_port() const {return mirror_src_udp_port_;}
1112  void set_mirror_port(uint16_t mirr_port) {
1113  mirror_src_udp_port_ = mirr_port;
1114  }
1115 
1116  int introspect_port() const { return introspect_port_;}
1117 
1118  DB *db() const {return db_;}
1119 
1122 
1123  AgentInit *agent_init() const { return agent_init_; }
1125 
1128 
1129  const std::string &fabric_interface_name() const {
1130  return ip_fabric_intf_name_;
1131  }
1132 
1133  const std::vector<std::string> &fabric_interface_name_list() const {
1135  }
1136 
1137  const std::string &crypt_interface_name() const {
1138  return crypt_intf_name_;
1139  }
1140 
1141  const Interface *crypt_interface() const {
1142  return crypt_interface_;
1143  }
1144  void set_crypt_interface(const Interface *interface) {
1145  crypt_interface_ = interface;
1146  }
1147 
1150  }
1153  }
1154 
1155  bool simulate_evpn_tor() const {return simulate_evpn_tor_;}
1156  void set_simulate_evpn_tor(bool mode) {simulate_evpn_tor_ = mode;}
1157 
1161  }
1162  bool tsn_enabled() const {return tsn_enabled_;}
1163  void set_tsn_enabled(bool val) {tsn_enabled_ = val;}
1164  bool tor_agent_enabled() const {return tor_agent_enabled_;}
1169  bool vcpe_gateway_mode() const {return vcpe_gateway_mode_;}
1170  bool pbb_gateway_mode() const { return pbb_gateway_mode_;}
1171 
1174  ifmap_parser_ = parser;
1175  }
1176 
1178  return agent_stale_cleaner_;
1179  }
1181  agent_stale_cleaner_ = cl;
1182  }
1183 
1184  std::string GetUuidStr(boost::uuids::uuid uuid_val) const;
1185 
1186  bool ksync_sync_mode() const {return ksync_sync_mode_;}
1187  void set_ksync_sync_mode(bool sync_mode) {
1188  ksync_sync_mode_ = sync_mode;
1189  }
1190 
1191  bool test_mode() const { return test_mode_; }
1193 
1194  bool xmpp_dns_test_mode() const { return xmpp_dns_test_mode_; }
1197  }
1198 
1199  uint32_t flow_table_size() const { return flow_table_size_; }
1200  void set_flow_table_size(uint32_t count);
1201 
1202  uint16_t flow_thread_count() const { return flow_thread_count_; }
1203  bool flow_trace_enable() const { return flow_trace_enable_; }
1204 
1205  uint32_t max_vm_flows() const { return max_vm_flows_; }
1206  void set_max_vm_flows(uint32_t count) { max_vm_flows_ = count; }
1207 
1208  uint32_t flow_add_tokens() const { return flow_add_tokens_; }
1209  uint32_t flow_ksync_tokens() const { return flow_ksync_tokens_; }
1210  uint32_t flow_del_tokens() const { return flow_del_tokens_; }
1211  uint32_t flow_update_tokens() const { return flow_update_tokens_; }
1212 
1213  bool init_done() const { return init_done_; }
1214  void set_init_done(bool done) { init_done_ = done; }
1215 
1216  ConfigManager *config_manager() const;
1217 
1218  AgentParam *params() const { return params_; }
1219  bool isMockMode() const;
1220  std::string AgentGUID() const;
1221  bool isXenMode();
1222  bool isKvmMode();
1223  bool isDockerMode();
1224  // Agent param accessor functions
1225  bool isVmwareMode() const;
1226  bool isVmwareVcenterMode() const;
1227  bool vrouter_on_nic_mode() const;
1228  bool vrouter_on_host_dpdk() const;
1229  bool vrouter_on_host() const;
1230  void SetAgentTaskPolicy();
1231  void CopyConfig(AgentParam *params);
1232  void CopyFilteredParams();
1234  void SetResourceManagerReady();
1235 
1236  void Init(AgentParam *param);
1237  void InitPeers();
1238  void InitDone();
1239  void InitXenLinkLocalIntf();
1240  void InitCollector();
1241  void ReConnectCollectors();
1242  void ReconfigSignalHandler(boost::system::error_code , int);
1243  void DebugSignalHandler(boost::system::error_code , int);
1244 
1246  void CreateLifetimeManager();
1247  void ShutdownLifetimeManager();
1248 
1249  // Default concurrency checker. Checks for "Agent::KSync" and "db::DBTable"
1250  void ConcurrencyCheck();
1251 
1252  uint32_t vrouter_max_labels() const {
1253  return vrouter_max_labels_;
1254  }
1255  void set_vrouter_max_labels(uint32_t max_labels) {
1256  vrouter_max_labels_ = max_labels;
1257  }
1258 
1259  uint32_t vrouter_max_nexthops() const {
1260  return vrouter_max_nexthops_;
1261  }
1262  void set_vrouter_max_nexthops(uint32_t max_nexthop) {
1263  vrouter_max_nexthops_ = max_nexthop;
1264  }
1265 
1266  uint32_t vrouter_max_interfaces() const {
1267  return vrouter_max_interfaces_;
1268  }
1269  void set_vrouter_max_interfaces(uint32_t max_interfaces) {
1270  vrouter_max_interfaces_ = max_interfaces;
1271  }
1272 
1273  uint32_t vrouter_max_vrfs() const {
1274  return vrouter_max_vrfs_;
1275  }
1276  void set_vrouter_max_vrfs(uint32_t max_vrf) {
1277  vrouter_max_vrfs_ = max_vrf;
1278  }
1279 
1280  uint32_t vrouter_max_mirror_entries() const {
1282  }
1283  void set_vrouter_max_mirror_entries(uint32_t max_mirror_entries) {
1284  vrouter_max_mirror_entries_ = max_mirror_entries;
1285  }
1286 
1287 
1288  uint32_t vrouter_max_bridge_entries() const {
1290  }
1291  void set_vrouter_max_bridge_entries(uint32_t bridge_entries) {
1292  vrouter_max_bridge_entries_ = bridge_entries;
1293  }
1294 
1297  }
1299  oflow_bridge_entries) {
1300  vrouter_max_oflow_bridge_entries_ = oflow_bridge_entries;
1301  }
1302 
1303  uint32_t vrouter_max_flow_entries() const {
1305  }
1306  void set_vrouter_max_flow_entries(uint32_t value) {
1307  vrouter_max_flow_entries_ = value;
1308  }
1309 
1310  uint32_t vrouter_max_oflow_entries() const {
1312  }
1313  void set_vrouter_max_oflow_entries(uint32_t value) {
1315  }
1316  void set_vrouter_build_info(std::string version) {
1318  }
1319  std::string vrouter_build_info() const {
1320  return vrouter_build_info_;
1321  }
1322 
1323  void set_vrouter_priority_tagging(bool tagging) {
1324  vrouter_priority_tagging_ = tagging;
1325  }
1326 
1329  }
1330  Agent::ForwardingMode TranslateForwardingMode(const std::string &mode) const;
1331 
1333  return flow_stats_req_handler_;
1334  }
1335 
1338  }
1339 
1341  return port_config_handler_;
1342  }
1343 
1345  port_config_handler_ = handler;
1346  }
1347 
1348  void SetMeasureQueueDelay(bool val);
1349  bool MeasureQueueDelay();
1350  void TaskTrace(const char *file_name, uint32_t line_no, const Task *task,
1351  const char *description, uint64_t delay);
1352 
1353  static uint16_t ProtocolStringToInt(const std::string &str);
1354  VrouterObjectLimits GetVrouterObjectLimits();
1355  void SetXmppDscp(uint8_t val);
1356 
1357  void set_global_slo_status(bool flag) {
1358  global_slo_status_ = flag;
1359  }
1360 
1361  bool global_slo_status() const {
1362  return global_slo_status_;
1363  }
1364 
1367  }
1368 
1370  return fabric_vn_uuid_;
1371  }
1372  uint8_t GetInterfaceTransport() const;
1373  void set_inet_labeled_flag(bool flag) {
1374  inet_labeled_enabled_ = flag;
1375  }
1377  return inet_labeled_enabled_;}
1378 
1380  return vr_limits_exceeded_map_;
1381  }
1382 
1383  void set_vr_limits_exceeded_map(VrLimitExceeded &vr_limit_exceed_map) {
1384  vr_limits_exceeded_map_ = vr_limit_exceed_map;
1385  }
1386 
1387  void set_vr_limit_high_watermark(float watermark) {
1388  vr_limit_high_watermark_ = watermark;
1389  }
1390 
1392  return vr_limit_high_watermark_;
1393  }
1394 
1395  void set_vr_limit_low_watermark(float watermark) {
1396  vr_limit_low_watermark_ = watermark;
1397  }
1398 
1400  return vr_limit_low_watermark_;
1401  }
1402 
1403 private:
1404 
1405  uint32_t GenerateHash(std::vector<std::string> &);
1406  void InitializeFilteredParams();
1407  void InitControllerList();
1408  void InitDnsList();
1409 
1427 
1429  boost::shared_ptr<AgentXmppChannel> agent_xmpp_channel_[MAX_XMPP_SERVERS];
1439  // Host name of node running the daemon
1440  std::string host_name_;
1441  // Unique name of the agent. When multiple instances are running, it will
1442  // use instance-id to make unique name
1443  std::string agent_name_;
1444  std::string prog_name_;
1446  std::string instance_id_;
1448  std::string module_name_;
1449  // DB handles
1458  std::unique_ptr<MetaDataIpAllocator> metadata_ip_allocator_;
1459  std::unique_ptr<MetaDataIpAllocator> metadata_ip6_allocator_;
1485  std::unique_ptr<ConfigManager> config_manager_;
1487 
1488  // Mirror config table
1490  // Interface Mirror config table
1492 
1496  uint32_t prefix_len_;
1499 
1500  // IP address on the compute node used by agent to run services such
1501  // as metadata service. This is different than router_id when vhost0
1502  // is un-numbered interface in host-os
1503  // The compute_node_ip_ is used only in adding Flow NAT rules.
1505  std::string xs_cfg_addr_;
1506  int8_t xs_idx_;
1511  std::string xs_server_cert_;
1512  std::string xs_server_key_;
1513  std::string xs_ca_cert_;
1514  std::string subcluster_name_;
1515  int8_t xs_dns_idx_;
1519  // Config
1520  std::vector<std::string>controller_list_;
1522  std::vector<std::string>dns_list_;
1523  uint32_t dns_chksum_;
1524  std::vector<std::string>collector_list_;
1527  std::string crypt_intf_name_;
1529  std::string pkt_interface_name_;
1530 
1542 
1543  std::unique_ptr<Peer> local_peer_;
1544  std::unique_ptr<Peer> local_vm_peer_;
1545  std::unique_ptr<Peer> linklocal_peer_;
1546  std::unique_ptr<Peer> ecmp_peer_;
1547  std::unique_ptr<Peer> vgw_peer_;
1548  std::unique_ptr<Peer> evpn_routing_peer_;
1549  std::unique_ptr<Peer> vxlan_bgp_peer_;
1550  std::unique_ptr<Peer> evpn_peer_;
1551  std::unique_ptr<Peer> multicast_peer_;
1552  std::unique_ptr<Peer> multicast_tor_peer_;
1553  std::unique_ptr<Peer> multicast_tree_builder_peer_;
1554  std::unique_ptr<Peer> mac_vm_binding_peer_;
1555  std::unique_ptr<Peer> inet_evpn_peer_;
1556  std::unique_ptr<Peer> mac_learning_peer_;
1557  std::unique_ptr<Peer> fabric_rt_export_peer_;
1558  std::unique_ptr<Peer> local_vm_export_peer_;
1559 
1560  std::unique_ptr<AgentSignal> agent_signal_;
1561 
1564 
1568  std::string mgmt_ip_;
1588 
1589  // Flow information
1593  uint32_t max_vm_flows_;
1598 
1599  // OVSDB client ptr
1601 
1602  //IP address to be used for sending vrouter sandesh messages
1604  //TCP port number to be used for sending vrouter sandesh messages
1606  //Max label space of vrouter
1608  //Max nexthop supported by vrouter
1610  //Max interface supported by vrouter
1612  //Max VRF supported by vrouter
1614  //Max Mirror entries
1616  //Bridge entries that can be porgrammed in vrouter
1619  //Max Flow entries
1621  //Max OverFlow entries
1623  std::string vrouter_build_info_;
1624  //Priority tagging status
1628 
1630  // Monitor task library and assert if inactivity detected
1632  // List of TSN who are alive(Relevant for TSN mode only).
1633  std::vector<std::string> active_tsn_servers_;
1635  // Constants
1638  // Percentage of allowed nexthop and label, alarm is raised once exceeded
1641  // L3MH variables
1643  bool is_l3mh_;
1644  std::vector<std::string> ip_fabric_intf_name_list_;
1645 public:
1646  static const std::string config_file_;
1647  static const std::string log_file_;
1648  static const std::string null_string_;
1649  static const std::set<std::string> null_string_list_;
1650  static std::string fabric_vrf_name_;
1651  static const std::string fabric_vn_name_;
1652  static std::string fabric_policy_vrf_name_;
1653  static const std::string link_local_vrf_name_;
1654  static const std::string link_local_vn_name_;
1655  static const MacAddress vrrp_mac_;
1657  static const std::string bcast_mac_;
1658  static const MacAddress left_si_mac_;
1662  static const std::string dpdk_exception_pkt_path_;
1663  static const std::string vnic_exception_pkt_interface_;
1664  static const std::string v4_link_local_subnet_;
1665  static const std::string v6_link_local_subnet_;
1666  static const uint16_t v4_link_local_plen_ = 16;
1667  static const uint16_t v6_link_local_plen_ = 10;
1668 };
1669 
1670 #endif // vnsw_agent_hpp
bool MeasureQueueDelay()
Definition: agent.cc:1136
bool router_id_configured_
Definition: agent.h:1563
boost::intrusive_ptr< SgEntry > SgEntryRef
Definition: agent.h:74
IFMapAgentParser * ifmap_parser() const
Definition: agent.h:1172
IpAddress router_id6_
Definition: agent.h:1493
std::string mgmt_ip_
Definition: agent.h:1568
std::string xs_cfg_addr_
Definition: agent.h:1505
AgentDnsXmppChannel * dns_xmpp_channel_[MAX_XMPP_SERVERS]
Definition: agent.h:1433
DiagTable * diag_table_
Definition: agent.h:1423
const uint16_t v4_link_local_plen() const
Definition: agent.h:460
bool vcpe_gateway_mode_
Definition: agent.h:1585
const std::string & linklocal_vn_name()
Definition: agent.h:920
boost::intrusive_ptr< const AclDBEntry > AclDBEntryConstRef
Definition: agent.h:143
void set_services(ServicesModule *services)
Definition: agent.cc:977
boost::intrusive_ptr< VmEntry > VmEntryRef
Definition: agent.h:58
IcmpProto * icmp_proto_
Definition: agent.h:1535
uint32_t collector_chksum_
Definition: agent.h:1525
void set_init_done(bool done)
Definition: agent.h:1214
int intrusive_ptr_add_ref(const AsPath *cpath)
Definition: bgp_aspath.h:147
void InitPeers()
Definition: agent.cc:699
uint16_t flow_thread_count_
Definition: agent.h:1591
std::unique_ptr< Peer > vgw_peer_
Definition: agent.h:1547
IgmpProto * igmp_proto_
Definition: agent.h:1539
void ConcurrencyCheck()
Definition: agent.cc:1044
const Interface * vhost_interface_
Definition: agent.h:1571
FlowStatsReqHandler flow_stats_req_handler_
Definition: agent.h:1626
std::vector< Interface * > InterfaceList
Definition: agent.h:218
OVSDB::OvsdbClient * ovsdb_client() const
Definition: agent.h:1126
std::unique_ptr< Peer > local_vm_export_peer_
Definition: agent.h:1558
void set_module_type(int id)
Definition: agent.h:890
IFMapAgentStaleCleaner * agent_stale_cleaner_
Definition: agent.h:1436
static const MacAddress vrrp_mac_
Definition: agent.h:1655
int8_t xs_dns_idx_
Definition: agent.h:1515
VnTable * vn_table_
Definition: agent.h:1468
const std::string & subcluster_name() const
Definition: agent.h:753
ServicesModule * services() const
Definition: agent.cc:973
void set_controller_xmpp_channel(AgentXmppChannel *channel, uint8_t idx)
Definition: agent.cc:1115
void set_router_id(const Ip4Address &addr)
Definition: agent.h:671
std::vector< std::string > dns_list_
Definition: agent.h:1522
AgentConfig * cfg_
Definition: agent.h:1411
IpAddress GetMirrorSourceIp(const IpAddress &dest)
Definition: agent.cc:76
static const uint8_t kMinAapPrefixLen
Definition: agent.h:388
void init()
Definition: bgp_log.cc:37
void set_vrouter_priority_tagging(bool tagging)
Definition: agent.h:1323
bool isVmwareMode() const
Definition: agent.cc:1033
bool tsn_enabled() const
Definition: agent.h:1162
void set_physical_device_vn_table(PhysicalDeviceVnTable *table)
Definition: agent.h:638
BridgeAgentRouteTable * fabric_l2_unicast_table() const
Definition: agent.h:618
const Peer * evpn_peer() const
Definition: agent.h:1029
static const std::string bcast_mac_
Definition: agent.h:1657
AgentStats * stats_
Definition: agent.h:1412
void set_ovsdb_client(OVSDB::OvsdbClient *client)
Definition: agent.h:1127
const Peer * local_vm_export_peer() const
Definition: agent.h:1040
uint64_t xs_stime_[MAX_XMPP_SERVERS]
Definition: agent.h:1509
void InitDnsList()
Definition: agent.cc:459
static Agent * GetInstance()
Definition: agent.h:436
AgentInit * agent_init() const
Definition: agent.h:1123
int8_t xs_idx_
Definition: agent.h:1506
void set_controller_ifmap_xmpp_client(XmppClient *client, uint8_t idx)
Definition: agent.h:775
Inet4MulticastAgentRouteTable * mc_rt_table_
Definition: agent.h:1463
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
Definition: task.h:178
static const uint32_t kDefaultFlowIndexSmLogCount
Definition: agent.h:368
float vr_limit_high_watermark_
Definition: agent.h:1639
ForwardingMode
Definition: agent.h:403
boost::intrusive_ptr< QosQueue > QosQueueRef
Definition: agent.h:182
Definition: vrf.h:86
bool ksync_sync_mode() const
Definition: agent.h:1186
void set_dns_server_port(uint16_t port, uint8_t idx)
Definition: agent.h:871
std::vector< std::string > ip_fabric_intf_name_list_
Definition: agent.h:1644
FlowStatsManager * flow_stats_manager() const
Definition: agent.cc:925
bool ksync_sync_mode_
Definition: agent.h:1567
AgentUveBase * uve_
Definition: agent.h:1414
boost::intrusive_ptr< const SecurityLoggingObject > SecurityLoggingObjectConstRef
Definition: agent.h:196
MirrorCfgTable * mirror_cfg_table_
Definition: agent.h:1489
virtual ~Agent()
Definition: agent.cc:843
bool get_vhost_disable_policy()
Definition: agent.h:928
std::vector< Ip4Address > AddressList
Definition: agent.h:401
bool test_mode() const
Definition: agent.h:1191
void set_icmpv6_proto(Icmpv6Proto *proto)
Definition: agent.h:997
static const uint32_t kDefaultFlowCacheTimeout
Definition: agent.h:366
uint16_t metadata_server_port_
Definition: agent.h:1438
const uint16_t controller_ifmap_xmpp_port(uint8_t idx) const
Definition: agent.h:757
VrfEntry * fabric_vrf() const
Definition: agent.h:915
Ip4Address compute_node_ip() const
Definition: agent.h:681
void set_vm_table(VmTable *table)
Definition: agent.h:491
bool server_gateway_mode_
Definition: agent.h:1584
static const uint32_t kFlowKSyncTokens
Definition: agent.h:384
void set_mp_table(MulticastPolicyTable *table)
Definition: agent.h:643
Definition: vrf.h:268
MacLearningModule * mac_learning_module_
Definition: agent.h:1541
void set_bridge_domain_table(BridgeDomainTable *table)
Definition: agent.cc:945
ServicesModule * services_
Definition: agent.h:1418
bool tor_agent_enabled() const
Definition: agent.h:1164
DomainConfig * domain_config_table() const
Definition: agent.cc:1029
void set_vhost_interface(const Interface *intrface)
Definition: agent.h:938
boost::intrusive_ptr< AddrBase > AddrRef
Definition: agent.h:136
AgentXmppChannel * mulitcast_builder()
Definition: agent.h:895
boost::intrusive_ptr< AgentQosConfig > AgentQosConfigRef
Definition: agent.h:176
InetUnicastAgentRouteTable * fabric_inet4_unicast_table() const
Definition: agent.h:578
NextHopTable * nexthop_table() const
Definition: agent.h:475
OVSDB::OvsdbClient * ovsdb_client_
Definition: agent.h:1600
MplsTable * mpls_table_
Definition: agent.h:1471
boost::intrusive_ptr< ForwardingClass > ForwardingClassRef
Definition: agent.h:170
void set_interface_mirror_cfg_table(IntfMirrorCfgTable *table)
Definition: agent.h:574
void CopyConfig(AgentParam *params)
Definition: agent.cc:507
void set_nexthop_table(NextHopTable *table)
Definition: agent.h:476
void set_oper_db(OperDB *oper_db)
Definition: agent.cc:1017
RestServer * rest_server() const
Definition: agent.cc:997
void SetAgentTaskPolicy()
Definition: agent.cc:175
const int & module_type() const
Definition: agent.h:889
static const MacAddress left_si_mac_
Definition: agent.h:1658
void set_loopback_ip(const Ip4Address &addr)
Definition: agent.h:717
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge, EVPN (Type2/Type5). This base class contains common code for all types of route tables.
Definition: agent_route.h:109
std::string host_name_
Definition: agent.h:1440
AgentUveBase * uve() const
Definition: agent.cc:909
boost::intrusive_ptr< HealthCheckService > HealthCheckServiceRef
Definition: agent.h:165
std::string pkt_interface_name_
Definition: agent.h:1529
uint16_t dns_port_[MAX_XMPP_SERVERS]
Definition: agent.h:1517
InetUnicastAgentRouteTable * uc_rt_table_
Definition: agent.h:1461
Definition: acl.h:147
void SetDnsProto(DnsProto *proto)
Definition: agent.h:988
DB * db() const
Definition: agent.h:1118
bool is_dns_xmpp_channel(AgentDnsXmppChannel *channel)
Definition: agent.h:850
std::vector< string > & GetDnslist()
Definition: agent.h:700
void set_dns_xmpp_init(XmppInit *xmpp, uint8_t idx)
Definition: agent.h:833
static const MacAddress right_si_mac_
Definition: agent.h:1659
const Interface * vhost_interface() const
Definition: agent.h:935
void set_policy_set_table(PolicySetTable *table)
Definition: agent.h:521
KSync * ksync_
Definition: agent.h:1413
bool vrouter_on_host_dpdk() const
Definition: agent.cc:1057
uint32_t vhost_prefix_len() const
Definition: agent.h:653
PhysicalDeviceTable * physical_device_table() const
Definition: agent.h:628
void set_fabric_inet4_mpls_table(RouteTable *table)
Definition: agent.h:596
bool is_l3mh() const
Definition: agent.h:725
void reset_controller_xmpp_channel(uint8_t idx)
Definition: agent.cc:1120
boost::intrusive_ptr< const VmEntry > VmEntryConstRef
Definition: agent.h:60
AgentInit * agent_init_
Definition: agent.h:1452
bool xmpp_dns_test_mode() const
Definition: agent.h:1194
bool simulate_evpn_tor() const
Definition: agent.h:1155
ConfigManager * config_manager() const
Definition: agent.cc:889
void set_vxlan_network_identifier_mode(VxLanNetworkIdentifierMode mode)
Definition: agent.h:1151
void set_service_instance_table(ServiceInstanceTable *table)
Definition: agent.h:821
const std::string & dns_server(uint8_t idx) const
Definition: agent.h:857
void set_ifmap_stale_cleaner(IFMapAgentStaleCleaner *cl)
Definition: agent.h:1180
boost::asio::ip::address IpAddress
Definition: address.h:13
MacLearningProto * mac_learning_proto() const
Definition: agent.h:1005
static const MacAddress & vrrp_mac()
Definition: agent.h:439
VrfEntry * fabric_policy_vrf() const
Definition: agent.h:917
void SetBfdProto(BfdProto *proto)
Definition: agent.h:991
AgentStatsCollector * stats_collector_
Definition: agent.h:1415
Definition: vm.h:32
void set_vrouter_server_ip(Ip4Address ip)
Definition: agent.h:964
void set_fabric_policy_vrf_name(const std::string &name)
Definition: agent.h:911
Definition: vm.h:78
PortIpcHandler * port_ipc_handler() const
Definition: agent.cc:1005
AgentQosConfigTable * qos_config_table_
Definition: agent.h:1482
const Peer * mac_learning_peer() const
Definition: agent.h:1036
bool tsn_enabled_
Definition: agent.h:1581
AddressList ip_fabric_intf_addr_list_
Definition: agent.h:1498
bool pbb_gateway_mode() const
Definition: agent.h:1170
const Peer * vxlan_bgp_peer() const
Definition: agent.h:1028
std::vector< int > SecurityGroupList
Definition: agent.h:201
AgentStats * stats() const
Definition: agent.cc:881
void set_global_slo_status(bool flag)
Definition: agent.h:1357
IntrusivePtrRef< VrfEntry > VrfEntryRef
Definition: agent.h:86
void set_vrouter_max_vrfs(uint32_t max_vrf)
Definition: agent.h:1276
std::map< std::string, std::string > VrLimitExceeded
Definition: agent.h:214
Definition: route.h:14
void set_interface_table(InterfaceTable *table)
Definition: agent.h:466
void set_vrouter_max_oflow_entries(uint32_t value)
Definition: agent.h:1313
InetUnicastAgentRouteTable * fabric_inet4_mpls_table() const
Definition: agent.h:589
uint32_t vrouter_max_interfaces_
Definition: agent.h:1611
void set_controller_ifmap_xmpp_server(const std::string &addr, uint8_t idx)
Definition: agent.h:733
void set_ifmap_active_xmpp_server(const std::string &addr, uint8_t xs_idx)
Definition: agent.h:782
std::unique_ptr< Peer > fabric_rt_export_peer_
Definition: agent.h:1557
uint32_t flow_ksync_tokens() const
Definition: agent.h:1209
void set_controller_xmpp_channel_setup_time(uint64_t time, uint8_t idx)
Definition: agent.h:804
std::string prog_name_
Definition: agent.h:1444
static const uint8_t kMaxSessionAggs
Definition: agent.h:392
std::unique_ptr< Peer > local_peer_
Definition: agent.h:1543
SgTable * sg_table_
Definition: agent.h:1469
void set_mirror_cfg_table(MirrorCfgTable *table)
Definition: agent.h:471
uint32_t vrouter_max_mirror_entries_
Definition: agent.h:1615
uint32_t GetControllerlistChksum()
Definition: agent.h:696
bool vrouter_priority_tagging_
Definition: agent.h:1625
std::string dns_addr_[MAX_XMPP_SERVERS]
Definition: agent.h:1516
const std::string & vhost_interface_name() const
Definition: agent.cc:104
void set_forwarding_class_table(ForwardingClassTable *table)
Definition: agent.h:543
bool flow_trace_enable_
Definition: agent.h:1592
void set_forwarding_enabled(bool val)
Definition: agent.h:1167
boost::uuids::uuid fabric_vn_uuid_
Definition: agent.h:1636
void set_ksync_sync_mode(bool sync_mode)
Definition: agent.h:1187
uint32_t flow_table_size() const
Definition: agent.h:1199
void InitXenLinkLocalIntf()
Definition: agent.cc:678
bool resource_manager_ready_
Definition: agent.h:1578
InterfaceTable * interface_table() const
Definition: agent.h:465
const Peer * ecmp_peer() const
Definition: agent.h:1025
MacLearningModule * mac_learning_module() const
Definition: agent.h:1013
boost::uuids::uuid uuid
VnTable * vn_table() const
Definition: agent.h:495
void(* FlowStatsReqHandler)(Agent *agent, uint32_t proto, uint32_t port, uint64_t timeout)
Definition: agent.h:427
void InitCollector()
Definition: agent.cc:583
static const std::string xmpp_control_node_connection_name_prefix_
Definition: agent.h:1661
uint32_t max_vm_flows() const
Definition: agent.h:1205
Definition: task_int.h:10
std::pair< void *, void * > IntrusiveReferrer
void set_ifmap_parser(IFMapAgentParser *parser)
Definition: agent.h:1173
void set_pkt(PktModule *pkt)
Definition: agent.cc:969
void set_vrouter_max_flow_entries(uint32_t value)
Definition: agent.h:1306
static const uint32_t kFlowAddTokens
Definition: agent.h:383
BridgeAgentRouteTable * l2_rt_table_
Definition: agent.h:1465
boost::shared_ptr< AgentXmppChannel > controller_xmpp_channel_ref(uint8_t idx)
Definition: agent.cc:1124
void set_vrouter_max_bridge_entries(uint32_t bridge_entries)
Definition: agent.h:1291
bool inet_labeled_enabled_
Definition: agent.h:1587
CryptTunnelTable * crypt_tunnel_table_
Definition: agent.h:1484
AddressList vhost_default_gateway() const
Definition: agent.h:656
std::string instance_id_
Definition: agent.h:1446
void set_mac_learning_proto(MacLearningProto *mac_learning_proto)
Definition: agent.h:1009
void set_dns_list(std::vector< std::string > &dns_list)
Definition: agent.h:686
float vr_limit_high_watermark()
Definition: agent.h:1391
void set_uve(AgentUveBase *uve)
Definition: agent.cc:913
uint32_t vrouter_max_vrfs() const
Definition: agent.h:1273
static Agent * singleton_
Definition: agent.h:1569
std::vector< std::string > InterfaceNameList
Definition: agent.h:219
InetUnicastAgentRouteTable * mpls_rt_table_
Definition: agent.h:1462
void set_connection_state(process::ConnectionState *state)
Definition: agent.h:956
static const uint8_t ROUTE_TABLE_START
Definition: agent.h:425
VxLanTable * vxlan_table_
Definition: agent.h:1475
void CopyFilteredParams()
Definition: agent.cc:469
static const MacAddress & left_si_mac()
Definition: agent.h:442
AgentXmppChannel * controller_xmpp_channel(uint8_t idx) const
Definition: agent.h:809
void set_mac_learning_module(MacLearningModule *mac_learning_module)
Definition: agent.h:1017
boost::intrusive_ptr< const CryptTunnelEntry > CryptTunnelEntryConstRef
Definition: agent.h:132
ArpProto * GetArpProto() const
Definition: agent.h:978
std::string xs_server_key_
Definition: agent.h:1512
MplsTable * mpls_table() const
Definition: agent.h:510
NextHopTable * nh_table_
Definition: agent.h:1460
Definition: vxlan.h:14
Ip4Address loopback_ip() const
Definition: agent.h:716
DiagTable * diag_table() const
Definition: agent.cc:873
IFMapAgentParser * ifmap_parser_
Definition: agent.h:1562
uint32_t flow_del_tokens_
Definition: agent.h:1596
void set_dhcpv6_proto(Dhcpv6Proto *proto)
Definition: agent.h:985
std::unique_ptr< Peer > multicast_tor_peer_
Definition: agent.h:1552
std::string module_name_
Definition: agent.h:1448
uint32_t vrouter_max_labels_
Definition: agent.h:1607
void set_fabric_vn_uuid(const boost::uuids::uuid &uuid)
Definition: agent.h:1365
bool vrouter_priority_tagging() const
Definition: agent.h:1327
void set_tsn_enabled(bool val)
Definition: agent.h:1163
uint32_t vrouter_max_bridge_entries_
Definition: agent.h:1617
boost::intrusive_ptr< const QosQueue > QosQueueConstRef
Definition: agent.h:184
void set_tor_agent_enabled(bool val)
Definition: agent.h:1165
Base class for all Route entries in agent.
Definition: agent_route.h:224
VmTable * vm_table_
Definition: agent.h:1467
bool vrouter_on_nic_mode() const
Definition: agent.cc:1053
void set_rest_server(RestServer *r)
Definition: agent.cc:1001
EvpnAgentRouteTable * evpn_rt_table_
Definition: agent.h:1464
PortConfigHandler port_config_handler_
Definition: agent.h:1627
std::unique_ptr< Peer > vxlan_bgp_peer_
Definition: agent.h:1549
void reset_dns_server(uint8_t idx)
Definition: agent.h:863
boost::intrusive_ptr< const PhysicalDevice > PhysicalDeviceConstRef
Definition: agent.h:155
void set_vrf_assign_table(VrfAssignTable *table)
Definition: agent.h:531
TaskScheduler * task_scheduler_
Definition: agent.h:1451
bool xmpp_dns_test_mode_
Definition: agent.h:1576
Ip4Address vhost_prefix() const
Definition: agent.h:648
uint32_t prefix_len_
Definition: agent.h:1496
uint32_t flow_del_tokens() const
Definition: agent.h:1210
TagTable * tag_table() const
Definition: agent.h:505
void set_tag_table(TagTable *table)
Definition: agent.h:506
QosQueueTable * qos_queue_table() const
Definition: agent.h:562
std::unique_ptr< Peer > mac_learning_peer_
Definition: agent.h:1556
void set_is_l3mh(bool flag)
Definition: agent.h:721
float vr_limit_low_watermark()
Definition: agent.h:1399
void SetMeasureQueueDelay(bool val)
Definition: agent.cc:1140
std::unique_ptr< Peer > inet_evpn_peer_
Definition: agent.h:1555
uint32_t flow_table_size_
Definition: agent.h:1590
MirrorTable * mirror_table() const
Definition: agent.h:525
void intrusive_ptr_del_back_ref(const IntrusiveReferrer ref, const Interface *p)
OperDB * oper_db() const
Definition: agent.cc:1013
AddressList ip_fabric_intf_addr_list() const
Definition: agent.h:661
bool isDockerMode()
Definition: agent.cc:149
ForwardingClassTable * forwarding_class_table_
Definition: agent.h:1479
AgentParam * params_
Definition: agent.h:1410
AgentIfMapXmppChannel * ifmap_xmpp_channel(uint8_t idx) const
Definition: agent.h:792
void set_tsn_no_forwarding_enabled(bool val)
Definition: agent.h:1159
void set_max_vm_flows(uint32_t count)
Definition: agent.h:1206
bool server_gateway_mode() const
Definition: agent.h:1168
Ip4Address router_id_
Definition: agent.h:1494
static const uint32_t kDefaultTaskMonitorTimeout
Definition: agent.h:376
void CreateLifetimeManager()
Definition: agent.cc:431
uint32_t vrouter_max_nexthops() const
Definition: agent.h:1259
PolicySetTable * policy_set_table_
Definition: agent.h:1483
static const uint8_t kInvalidQueueId
Definition: agent.h:389
AgentDnsXmppChannel * dns_xmpp_channel(uint8_t idx) const
Definition: agent.h:844
const std::string & fabric_vrf_name() const
Definition: agent.h:903
void set_fabric_vrf(VrfEntry *vrf)
Definition: agent.h:916
Definition: db.h:24
void set_qos_queue_table(QosQueueTable *table)
Definition: agent.h:565
Dhcpv6Proto * dhcpv6_proto() const
Definition: agent.h:984
void SetDhcpProto(DhcpProto *proto)
Definition: agent.h:982
void set_xmpp_dns_test_mode(bool xmpp_dns_test_mode)
Definition: agent.h:1195
bool pbb_gateway_mode_
Definition: agent.h:1586
EventNotifier * event_notifier() const
Definition: agent.cc:893
void set_vn_table(VnTable *table)
Definition: agent.h:496
PktModule * pkt_
Definition: agent.h:1417
ServiceInstanceTable * service_instance_table() const
Definition: agent.h:817
void set_ip_fabric_intf_addr_list(const AddressList &addr_list)
Definition: agent.h:662
const std::string & program_name() const
Definition: agent.h:451
FlowProto * flow_proto_
Definition: agent.h:1538
static const uint32_t kMaxTbbThreads
Definition: agent.h:374
BfdProto * GetBfdProto() const
Definition: agent.h:990
float vr_limit_low_watermark_
Definition: agent.h:1640
MetaDataIpAllocator * metadata_ip_allocator() const
Definition: agent.cc:949
bool tsn_no_forwarding_enabled() const
Definition: agent.h:1158
uint32_t max_vm_flows_
Definition: agent.h:1593
const Peer * link_local_peer() const
Definition: agent.h:1024
void set_dns_server(const std::string &addr, uint8_t idx)
Definition: agent.h:860
std::string xs_server_cert_
Definition: agent.h:1511
void set_crypt_interface(const Interface *interface)
Definition: agent.h:1144
static const int kDefaultLowWatermark
Definition: agent.h:400
void set_sg_table(SgTable *table)
Definition: agent.h:501
void InitializeFilteredParams()
Definition: agent.cc:464
Ip4Address vrouter_server_ip_
Definition: agent.h:1603
void set_dns_xmpp_channel(AgentDnsXmppChannel *chnl, uint8_t idx)
Definition: agent.h:847
static const uint16_t kFabricSnatTableSize
Definition: agent.h:394
bool dns_auth_enable_
Definition: agent.h:1518
boost::intrusive_ptr< const MulticastPolicyEntry > MulticastPolicyEntryConstRef
Definition: agent.h:111
const std::string & crypt_interface_name() const
Definition: agent.h:1137
const std::string & v6_link_local_subnet() const
Definition: agent.h:457
boost::intrusive_ptr< Route > RouteRef
Definition: agent.h:119
static const std::string v4_link_local_subnet_
Definition: agent.h:1664
boost::intrusive_ptr< BridgeDomainEntry > BridgeDomainRef
Definition: agent.h:188
static std::string fabric_vrf_name_
Definition: agent.h:1650
XmppClient * controller_ifmap_xmpp_client(uint8_t idx)
Definition: agent.h:771
const std::string & pkt_interface_name() const
Definition: agent.h:944
PolicySetTable * policy_set_table() const
Definition: agent.h:520
void set_vhost_default_gateway(const AddressList &addr_list)
Definition: agent.h:657
void set_event_manager(EventManager *evm)
Definition: agent.h:1104
TaskScheduler * task_scheduler() const
Definition: agent.h:1120
boost::intrusive_ptr< const PhysicalDeviceVn > PhysicalDeviceVnConstRef
Definition: agent.h:161
const std::string & instance_id() const
Definition: agent.h:886
DhcpProto * GetDhcpProto() const
Definition: agent.h:981
VxLanNetworkIdentifierMode vxlan_network_identifier_mode_
Definition: agent.h:1570
std::vector< string > & GetCollectorlist()
Definition: agent.h:708
uint8_t GetInterfaceTransport() const
Definition: agent.cc:1179
void set_controller_ifmap_xmpp_port(uint16_t port, uint8_t idx)
Definition: agent.h:760
boost::intrusive_ptr< VnEntry > VnEntryRef
Definition: agent.h:68
PortIpcHandler * port_ipc_handler_
Definition: agent.h:1421
boost::intrusive_ptr< MplsLabel > MplsLabelRef
Definition: agent.h:94
void set_vhost_prefix(const Ip4Address &addr)
Definition: agent.h:649
Definition: agent.h:358
Dhcpv6Proto * dhcpv6_proto_
Definition: agent.h:1536
VrfEntry * fabric_policy_vrf_
Definition: agent.h:1454
Ip4Address loopback_ip_
Definition: agent.h:1642
static const uint32_t kPkt0TxBufferCount
Definition: agent.h:378
void set_vrouter_server_port(uint32_t port)
Definition: agent.h:970
void set_vrf_table(VrfTable *table)
Definition: agent.h:486
static const uint32_t kDefaultTbbKeepawakeTimeout
Definition: agent.h:375
void set_vrouter_max_labels(uint32_t max_labels)
Definition: agent.h:1255
XmppClient * dns_xmpp_client(uint8_t idx) const
Definition: agent.h:837
bool vcpe_gateway_mode() const
Definition: agent.h:1169
std::unique_ptr< ConfigManager > config_manager_
Definition: agent.h:1485
void ShutdownLifetimeManager()
Definition: agent.cc:436
bool is_l3mh_
Definition: agent.h:1643
uint32_t flow_add_tokens() const
Definition: agent.h:1208
IgmpProto * GetIgmpProto() const
Definition: agent.h:1002
AgentSignal * agent_signal() const
Definition: agent.h:690
const uint32_t vrouter_server_port() const
Definition: agent.h:973
BridgeDomainTable * bridge_domain_table() const
Definition: agent.cc:941
void set_mpls_table(MplsTable *table)
Definition: agent.h:511
const std::string & fabric_interface_name() const
Definition: agent.h:1129
VrLimitExceeded vr_limits_exceeded_map_
Definition: agent.h:1637
KSync * ksync() const
Definition: agent.cc:901
BridgeDomainTable * bridge_domain_table_
Definition: agent.h:1457
std::vector< std::string > collector_list_
Definition: agent.h:1524
Ip4Address router_id() const
Definition: agent.h:666
void set_vhost_disable_policy(bool disable_policy)
Definition: agent.h:931
LifetimeManager * lifetime_manager_
Definition: agent.h:1566
boost::intrusive_ptr< const AgentQosConfig > AgentQosConfigConstRef
Definition: agent.h:178
VNController * controller() const
Definition: agent.cc:981
boost::intrusive_ptr< AclDBEntry > AclDBEntryRef
Definition: agent.h:141
std::string xs_addr_[MAX_XMPP_SERVERS]
Definition: agent.h:1507
const Interface * crypt_interface_
Definition: agent.h:1572
static const std::string null_string_
Definition: agent.h:1648
EventManager * event_manager() const
Definition: agent.h:1103
void SetIgmpProto(IgmpProto *proto)
Definition: agent.h:1003
const std::vector< std::string > & fabric_interface_name_list() const
Definition: agent.h:1133
static const uint32_t kMacLearningDefaultTokens
Definition: agent.h:387
IntrusivePtrRef< const VrfEntry > VrfEntryConstRef
Definition: agent.h:88
uint32_t vrouter_max_nexthops_
Definition: agent.h:1609
IntrusivePtrRef< const VmEntry > VmEntryConstBackRef
Definition: agent.h:64
std::string ip_fabric_intf_name_
Definition: agent.h:1526
void set_flow_table_size(uint32_t count)
Definition: agent.cc:1106
SecurityLoggingObjectTable * slo_table_
Definition: agent.h:1480
void set_test_mode(bool test_mode)
Definition: agent.h:1192
VrfAssignTable * vrf_assign_table() const
Definition: agent.h:530
void InitDone()
Definition: agent.cc:635
void set_vrouter_max_nexthops(uint32_t max_nexthop)
Definition: agent.h:1262
static const std::string & NullString()
Definition: agent.h:437
VNController * controller_
Definition: agent.h:1424
const std::string & config_file() const
Definition: agent.h:452
bool vhost_disable_policy_
Definition: agent.h:1574
bool vrouter_on_host() const
Definition: agent.cc:1061
DnsProto * dns_proto_
Definition: agent.h:1533
const Peer * multicast_peer() const
Definition: agent.h:1030
PhysicalDeviceVnTable * physical_device_vn_table() const
Definition: agent.h:635
int introspect_port_
Definition: agent.h:1445
static const std::set< std::string > null_string_list_
Definition: agent.h:1649
boost::intrusive_ptr< const Interface > InterfaceConstRef
Definition: agent.h:51
void set_vhost_prefix_len(uint32_t plen)
Definition: agent.h:654
boost::intrusive_ptr< VxLanId > VxLanIdRef
Definition: agent.h:104
VrfAssignTable * vrf_assign_table_
Definition: agent.h:1474
XmppInit * dns_xmpp_init(uint8_t idx) const
Definition: agent.h:830
const Peer * vgw_peer() const
Definition: agent.h:1026
void set_vr_limit_high_watermark(float watermark)
Definition: agent.h:1387
const Peer * local_peer() const
Definition: agent.h:1022
void set_mirror_port(uint16_t mirr_port)
Definition: agent.h:1112
Definition: sg.h:35
void set_module_name(const std::string &name)
Definition: agent.h:893
uint32_t flow_ksync_tokens_
Definition: agent.h:1595
static const uint8_t kMaxSessions
Definition: agent.h:393
const std::string & v4_link_local_subnet() const
Definition: agent.h:454
static const std::string & xmpp_dns_server_prefix()
Definition: agent.h:444
uint32_t vrouter_max_labels() const
Definition: agent.h:1252
void SetIcmpProto(IcmpProto *proto)
Definition: agent.h:994
IntrusivePtrRef< Interface > InterfaceBackRef
Definition: agent.h:54
void set_crypt_tunnel_table(CryptTunnelTable *table)
Definition: agent.h:481
void set_fabric_inet4_unicast_table(InetUnicastAgentRouteTable *table)
Definition: agent.h:581
static const std::string vnic_exception_pkt_interface_
Definition: agent.h:1663
VxLanNetworkIdentifierMode vxlan_network_identifier_mode() const
Definition: agent.h:1148
bool init_done() const
Definition: agent.h:1213
boost::intrusive_ptr< PhysicalDeviceVn > PhysicalDeviceVnRef
Definition: agent.h:159
void set_vgw(VirtualGateway *vgw)
Definition: agent.cc:993
AgentStatsCollector * stats_collector() const
Definition: agent.cc:917
const bool xmpp_auth_enabled() const
Definition: agent.h:740
std::vector< std::string > CommunityList
Definition: bgp_config.h:347
boost::intrusive_ptr< TagEntry > TagEntryRef
Definition: agent.h:80
std::vector< Ip4Address > AddressList
Definition: agent.h:217
void set_slo_table(SecurityLoggingObjectTable *table)
Definition: agent.h:550
bool forwarding_enabled_
Definition: agent.h:1583
CryptTunnelTable * crypt_tunnel_table() const
Definition: agent.h:480
PhysicalDeviceVnTable * physical_device_vn_table_
Definition: agent.h:1478
uint32_t flow_update_tokens() const
Definition: agent.h:1211
uint16_t mirror_src_udp_port_
Definition: agent.h:1565
AgentParam * params() const
Definition: agent.h:1218
const std::string & controller_ifmap_xmpp_server(uint8_t idx) const
Definition: agent.h:730
std::vector< string > & GetControllerlist()
Definition: agent.h:692
void set_router_id_configured(bool value)
Definition: agent.h:677
Definition: peer.h:44
static const std::set< std::string > & NullStringList()
Definition: agent.h:438
DhcpProto * dhcp_proto_
Definition: agent.h:1532
AddressList gateway_list_
Definition: agent.h:1497
void set_vhost_interface_name(const std::string &name)
Definition: agent.h:924
Ip4Address prefix_
Definition: agent.h:1495
static const uint16_t v4_link_local_plen_
Definition: agent.h:1666
OperDB * oper_db_
Definition: agent.h:1422
void set_flow_stats_manager(FlowStatsManager *fsc)
Definition: agent.cc:929
bool tor_agent_enabled_
Definition: agent.h:1582
std::set< std::string > VnListType
Definition: agent.h:212
const std::string & agent_name() const
Definition: agent.h:878
uint32_t vrouter_max_oflow_bridge_entries_
Definition: agent.h:1618
void set_cfg(AgentConfig *cfg)
Definition: agent.cc:869
void set_port_config_handler(PortConfigHandler handler)
Definition: agent.h:1344
IFMapAgentStaleCleaner * ifmap_stale_cleaner() const
Definition: agent.h:1177
boost::intrusive_ptr< SecurityLoggingObject > SecurityLoggingObjectRef
Definition: agent.h:194
static const uint32_t kDefaultFlowLatencyLimit
Definition: agent.h:372
const boost::uuids::uuid & fabric_vn_uuid() const
Definition: agent.h:1369
IpAddress router_id6() const
Definition: agent.h:667
static const uint16_t v6_link_local_plen_
Definition: agent.h:1667
void SetXmppDscp(uint8_t val)
Definition: agent.cc:1144
RestServer * rest_server_
Definition: agent.h:1420
static const int kInvalidCpuId
Definition: agent.h:390
std::unique_ptr< Peer > ecmp_peer_
Definition: agent.h:1546
uint32_t vrouter_max_flow_entries_
Definition: agent.h:1620
XmppClient * xmpp_client_[MAX_XMPP_SERVERS]
Definition: agent.h:1431
std::vector< boost::uuids::uuid > UuidList
Definition: agent.h:203
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
const uint16_t dns_server_port(uint8_t idx) const
Definition: agent.h:868
uint32_t vrouter_max_mirror_entries() const
Definition: agent.h:1280
void set_compute_node_ip(const Ip4Address &addr)
Definition: agent.h:682
static const std::string link_local_vrf_name_
Definition: agent.h:1653
Definition: vn.h:151
#define MAX_XMPP_SERVERS
Definition: agent.h:291
AgentIfMapXmppChannel * ifmap_channel_[MAX_XMPP_SERVERS]
Definition: agent.h:1430
VrfTable * vrf_table() const
Definition: agent.h:485
std::pair< std::string, std::string > VrLimitData
Definition: agent.h:215
Definition: vn.h:331
FlowStatsManager * flow_stats_manager_
Definition: agent.h:1416
IntfMirrorCfgTable * interface_mirror_cfg_table() const
Definition: agent.h:571
void set_instance_id(const std::string &id)
Definition: agent.h:887
MulticastPolicyTable * mp_table_
Definition: agent.h:1486
bool global_slo_status() const
Definition: agent.h:1361
bool router_id_configured()
Definition: agent.h:676
std::string AgentGUID() const
Definition: agent.cc:157
void set_port_ipc_handler(PortIpcHandler *r)
Definition: agent.cc:1009
void set_simulate_evpn_tor(bool mode)
Definition: agent.h:1156
std::string agent_name_
Definition: agent.h:1443
std::unique_ptr< Peer > evpn_peer_
Definition: agent.h:1550
static const std::string config_file_
Definition: agent.h:1646
void set_vr_limits_exceeded_map(VrLimitExceeded &vr_limit_exceed_map)
Definition: agent.h:1383
static const std::string log_file_
Definition: agent.h:1647
uint32_t vrouter_max_vrfs_
Definition: agent.h:1613
const std::string & module_name() const
Definition: agent.h:892
void set_stats(AgentStats *stats)
Definition: agent.cc:885
Definition: mpls.h:99
std::unique_ptr< MetaDataIpAllocator > metadata_ip6_allocator_
Definition: agent.h:1459
void DebugSignalHandler(boost::system::error_code, int)
Definition: agent.cc:745
static const int kDefaultHighWatermark
Definition: agent.h:399
void ReconfigSignalHandler(boost::system::error_code, int)
Definition: agent.cc:733
static const uint32_t kDefaultStaleInterfaceCleanupTimeout
Definition: agent.h:380
const std::string & xmpp_ca_cert() const
Definition: agent.h:749
boost::intrusive_ptr< CryptTunnelEntry > CryptTunnelEntryRef
Definition: agent.h:130
static const uint8_t kMaxSessionEndpoints
Definition: agent.h:391
ServiceInstanceTable * service_instance_table_
Definition: agent.h:1476
int module_type_
Definition: agent.h:1447
void set_event_notifier(EventNotifier *mgr)
Definition: agent.cc:897
HealthCheckTable * health_check_table() const
Definition: agent.cc:933
void Init(AgentParam *param)
std::vector< std::string > active_tsn_servers_
Definition: agent.h:1633
bool is_vhost_interface_up() const
Definition: agent.cc:108
const Peer * mac_vm_binding_peer() const
Definition: agent.h:1034
uint32_t vrouter_max_interfaces() const
Definition: agent.h:1266
static const std::string xmpp_dns_server_connection_name_prefix_
Definition: agent.h:1660
const Peer * multicast_tree_builder_peer() const
Definition: agent.h:1032
FlowProto * GetFlowProto() const
Definition: agent.h:999
void InitControllerList()
Definition: agent.cc:454
HealthCheckTable * health_check_table_
Definition: agent.h:1456
static const MacAddress & right_si_mac()
Definition: agent.h:443
void set_inet_labeled_flag(bool flag)
Definition: agent.h:1373
boost::shared_ptr< AgentXmppChannel > agent_xmpp_channel_[MAX_XMPP_SERVERS]
Definition: agent.h:1429
uint32_t flow_add_tokens_
Definition: agent.h:1594
std::unique_ptr< AgentSignal > agent_signal_
Definition: agent.h:1560
AgentQosConfigTable * qos_config_table() const
Definition: agent.h:554
VxLanTable * vxlan_table() const
Definition: agent.h:535
const Interface * crypt_interface() const
Definition: agent.h:1141
const Peer * multicast_tor_peer() const
Definition: agent.h:1031
static const uint16_t kDefaultVmiVmVnUveInterval
Definition: agent.h:382
uint32_t controller_chksum_
Definition: agent.h:1521
const std::string & GetHostInterfaceName() const
Definition: agent.cc:93
void set_dns_xmpp_client(XmppClient *client, uint8_t idx)
Definition: agent.h:840
SecurityLoggingObjectTable * slo_table() const
Definition: agent.h:547
const bool dns_auth_enabled() const
Definition: agent.h:826
EventNotifier * event_notifier_
Definition: agent.h:1426
void set_cn_mcast_builder(AgentXmppChannel *peer)
Definition: agent.cc:579
DnsProto * GetDnsProto() const
Definition: agent.h:987
bool isKvmMode()
Definition: agent.cc:145
void set_vrouter_build_info(std::string version)
Definition: agent.h:1316
IntrusivePtrRef< VmEntry > VmEntryBackRef
Definition: agent.h:63
uint32_t task_monitor_timeout_msec_
Definition: agent.h:1631
std::unique_ptr< Peer > multicast_tree_builder_peer_
Definition: agent.h:1553
IcmpProto * GetIcmpProto() const
Definition: agent.h:993
void set_vrouter_max_interfaces(uint32_t max_interfaces)
Definition: agent.h:1269
boost::intrusive_ptr< const NextHop > NextHopConstRef
Definition: agent.h:126
uint32_t flow_update_tokens_
Definition: agent.h:1597
bool flow_trace_enable() const
Definition: agent.h:1203
static const std::string link_local_vn_name_
Definition: agent.h:1654
void set_metadata_ip6_allocator(MetaDataIpAllocator *allocator)
Definition: agent.cc:961
MirrorTable * mirror_table_
Definition: agent.h:1473
boost::intrusive_ptr< const TagEntry > TagEntryConstRef
Definition: agent.h:82
Definition: mpls.h:52
void set_fabric_policy_vrf(VrfEntry *vrf)
Definition: agent.h:918
void(* PortConfigHandler)(Agent *agent, uint8_t proto, const PortConfig *)
Definition: agent.h:431
uint32_t vrouter_max_oflow_entries() const
Definition: agent.h:1310
void set_metadata_ip_allocator(MetaDataIpAllocator *allocator)
Definition: agent.cc:953
uint32_t tbb_keepawake_timeout_
Definition: agent.h:1629
static const std::string & BcastMac()
Definition: agent.h:441
VrLimitExceeded & get_vr_limits_exceeded_map()
Definition: agent.h:1379
boost::intrusive_ptr< MulticastPolicyEntry > MulticastPolicyEntryRef
Definition: agent.h:109
void set_agent_name(const std::string &name)
Definition: agent.h:882
boost::intrusive_ptr< MirrorEntry > MirrorEntryRef
Definition: agent.h:99
bool isXenMode()
Definition: agent.cc:141
boost::intrusive_ptr< PolicySet > PolicySetRef
Definition: agent.h:147
uint32_t vrouter_max_oflow_bridge_entries() const
Definition: agent.h:1295
bool init_done_
Definition: agent.h:1577
void set_agent_init(AgentInit *init)
Definition: agent.h:1124
static const std::string fabric_vn_name_
Definition: agent.h:1651
MirrorCfgTable * mirror_cfg_table() const
Definition: agent.h:470
const std::string & log_file() const
Definition: agent.h:453
static const std::string v6_link_local_subnet_
Definition: agent.h:1665
VrfEntry * fabric_vrf_
Definition: agent.h:1453
static const std::string & xmpp_control_node_prefix()
Definition: agent.h:447
uint32_t vrouter_max_flow_entries() const
Definition: agent.h:1303
boost::intrusive_ptr< const ForwardingClass > ForwardingClassConstRef
Definition: agent.h:172
std::string subcluster_name_
Definition: agent.h:1514
std::unique_ptr< Peer > evpn_routing_peer_
Definition: agent.h:1548
Icmpv6Proto * icmpv6_proto() const
Definition: agent.h:996
Agent()
Definition: agent.cc:751
bool forwarding_enabled() const
Definition: agent.h:1166
uint32_t GetDnslistChksum()
Definition: agent.h:704
VirtualGateway * vgw_
Definition: agent.h:1419
void set_fabric_inet4_multicast_table(Inet4MulticastAgentRouteTable *table)
Definition: agent.h:604
PhysicalDeviceTable * physical_device_table_
Definition: agent.h:1477
void RouterIdDepInit(Agent *agent)
void set_health_check_table(HealthCheckTable *table)
Definition: agent.cc:937
SgTable * sg_table() const
Definition: agent.h:500
std::vector< std::string > controller_list_
Definition: agent.h:1520
void set_controller_ifmap_xmpp_init(XmppInit *init, uint8_t idx)
Definition: agent.h:767
std::string crypt_intf_name_
Definition: agent.h:1527
void intrusive_ptr_release(const AsPath *cpath)
Definition: bgp_aspath.h:155
XmppClient * dns_xmpp_client_[MAX_XMPP_SERVERS]
Definition: agent.h:1434
void set_pkt_interface_name(const std::string &name)
Definition: agent.h:947
LifetimeManager * lifetime_manager()
Definition: agent.h:1245
InterfaceTable * intf_table_
Definition: agent.h:1455
static const uint32_t kFlowDelTokens
Definition: agent.h:385
Agent::ForwardingMode TranslateForwardingMode(const std::string &mode) const
Definition: agent.cc:1095
const std::string & linklocal_vrf_name()
Definition: agent.h:921
void set_metadata_server_port(uint16_t port)
Definition: agent.h:960
const Ip4Address vrouter_server_ip() const
Definition: agent.h:967
VxLanNetworkIdentifierMode
Definition: agent.h:410
std::unique_ptr< Peer > multicast_peer_
Definition: agent.h:1551
void set_fabric_vrf_name(const std::string &name)
Definition: agent.h:904
XmppInit * dns_xmpp_init_[MAX_XMPP_SERVERS]
Definition: agent.h:1435
const Peer * local_vm_peer() const
Definition: agent.h:1023
static const MacAddress & pkt_interface_mac()
Definition: agent.h:440
std::string xs_ca_cert_
Definition: agent.h:1513
bool xs_auth_enable_
Definition: agent.h:1510
bool get_inet_labeled_flag()
Definition: agent.h:1376
void set_fabric_l2_unicast_table(RouteTable *table)
Definition: agent.h:624
static const uint32_t kDefaultMaxLinkLocalOpenFds
Definition: agent.h:360
bool global_slo_status_
Definition: agent.h:1634
const Peer * inet_evpn_peer() const
Definition: agent.h:1035
VirtualGateway * vgw() const
Definition: agent.cc:989
void set_stats_collector(AgentStatsCollector *asc)
Definition: agent.cc:921
void set_diag_table(DiagTable *table)
Definition: agent.cc:877
Ip4Address compute_node_ip_
Definition: agent.h:1504
bool ResourceManagerReady() const
Definition: agent.h:1233
void ReConnectCollectors()
Definition: agent.cc:629
void set_fabric_inet4_multicast_table(RouteTable *table)
Definition: agent.h:607
boost::intrusive_ptr< Interface > InterfaceRef
Definition: agent.h:49
uint16_t xs_port_[MAX_XMPP_SERVERS]
Definition: agent.h:1508
static const int kDropNewFlowsRecoveryThreshold
Definition: agent.h:398
void set_ifmap_xmpp_channel(AgentIfMapXmppChannel *channel, uint8_t idx)
Definition: agent.h:795
TagTable * tag_table_
Definition: agent.h:1470
const uint16_t v6_link_local_plen() const
Definition: agent.h:461
static std::string fabric_policy_vrf_name_
Definition: agent.h:1652
EventManager * event_mgr_
Definition: agent.h:1428
void reset_controller_ifmap_xmpp_server(uint8_t idx)
Definition: agent.h:736
const std::string & xmpp_server_cert() const
Definition: agent.h:743
const Peer * fabric_rt_export_peer() const
Definition: agent.h:1037
Definition: sg.h:72
void set_controller(VNController *val)
Definition: agent.cc:985
PortConfigHandler & port_config_handler()
Definition: agent.h:1340
uint32_t dns_chksum_
Definition: agent.h:1523
std::string GetUuidStr(boost::uuids::uuid uuid_val) const
Definition: agent.cc:98
bool isVmwareVcenterMode() const
Definition: agent.cc:1037
ForwardingClassTable * forwarding_class_table() const
Definition: agent.h:540
void TaskTrace(const char *file_name, uint32_t line_no, const Task *task, const char *description, uint64_t delay)
Definition: agent.cc:1128
MulticastPolicyTable * mp_table() const
Definition: agent.h:642
VrfTable * vrf_table_
Definition: agent.h:1466
boost::intrusive_ptr< PhysicalDevice > PhysicalDeviceRef
Definition: agent.h:153
const uint64_t controller_xmpp_channel_setup_time(uint8_t idx) const
Definition: agent.h:801
static const uint32_t kDefaultFlowThreadCount
Definition: agent.h:370
RouteTableType
Definition: agent.h:415
AgentConfig * cfg() const
Definition: agent.cc:865
AgentXmppChannel * cn_mcast_builder_
Definition: agent.h:1437
std::string vhost_interface_name_
Definition: agent.h:1528
DB * db_
Definition: agent.h:1450
uint16_t metadata_server_port() const
Definition: agent.h:959
void set_fabric_inet4_unicast_table(RouteTable *table)
Definition: agent.h:585
bool tsn_no_forwarding_enabled_
Definition: agent.h:1580
const std::string & fabric_vn_name() const
Definition: agent.h:901
PktModule * pkt() const
Definition: agent.cc:965
BfdProto * bfd_proto_
Definition: agent.h:1534
std::string vrouter_build_info_
Definition: agent.h:1623
bool simulate_evpn_tor_
Definition: agent.h:1579
static const uint32_t kMaxOtherOpenFds
Definition: agent.h:362
EvpnAgentRouteTable * fabric_evpn_table() const
Definition: agent.h:611
boost::intrusive_ptr< const VnEntry > VnEntryConstRef
Definition: agent.h:70
MacLearningProto * mac_learning_proto_
Definition: agent.h:1540
uint32_t GenerateHash(std::vector< std::string > &)
Definition: agent.cc:441
static const MacAddress pkt_interface_mac_
Definition: agent.h:1656
XmppInit * controller_ifmap_xmpp_init(uint8_t idx) const
Definition: agent.h:764
AclTable * acl_table() const
Definition: agent.h:515
void set_vrouter_max_oflow_bridge_entries(uint32_t oflow_bridge_entries)
Definition: agent.h:1298
const std::string & xmpp_server_key() const
Definition: agent.h:746
MetaDataIpAllocator * metadata_ip6_allocator() const
Definition: agent.cc:957
IntfMirrorCfgTable * intf_mirror_cfg_table_
Definition: agent.h:1491
uint16_t flow_thread_count() const
Definition: agent.h:1202
void set_ksync(KSync *ksync)
Definition: agent.cc:905
const std::string & host_name() const
Definition: agent.h:875
void SetArpProto(ArpProto *proto)
Definition: agent.h:979
ArpProto * arp_proto_
Definition: agent.h:1531
void SetResourceManagerReady()
Definition: agent.cc:1174
static const std::string dpdk_exception_pkt_path_
Definition: agent.h:1662
boost::intrusive_ptr< const SgEntry > SgEntryConstRef
Definition: agent.h:76
void SetFlowProto(FlowProto *proto)
Definition: agent.h:1000
Task is a wrapper over tbb::task to support policies.
Definition: task.h:86
std::unique_ptr< Peer > mac_vm_binding_peer_
Definition: agent.h:1554
void set_flow_stats_req_handler(FlowStatsReqHandler req)
Definition: agent.h:1336
boost::intrusive_ptr< const BridgeDomainEntry > BridgeDomainConstRef
Definition: agent.h:190
uint32_t GetCollectorlistChksum()
Definition: agent.h:712
process::ConnectionState * connection_state_
Definition: agent.h:1573
QosQueueTable * qos_queue_table_
Definition: agent.h:1481
process::ConnectionState * connection_state() const
Definition: agent.h:953
void set_acl_table(AclTable *table)
Definition: agent.h:516
const Ip4Address * router_ip_ptr() const
Definition: agent.h:668
static const uint32_t kMaxBgpAsAServerSessions
Definition: agent.h:364
std::unique_ptr< Peer > linklocal_peer_
Definition: agent.h:1545
static uint16_t ProtocolStringToInt(const std::string &str)
Definition: agent.cc:1066
XmppInit * xmpp_init_[MAX_XMPP_SERVERS]
Definition: agent.h:1432
static const uint32_t kFlowUpdateTokens
Definition: agent.h:386
std::unique_ptr< Peer > local_vm_peer_
Definition: agent.h:1544
void set_fabric_l2_unicast_table(BridgeAgentRouteTable *table)
Definition: agent.h:621
std::string vrouter_build_info() const
Definition: agent.h:1319
uint32_t vrouter_max_oflow_entries_
Definition: agent.h:1622
boost::intrusive_ptr< const AclDBEntry > PolicySetConstRef
Definition: agent.h:149
Inet4MulticastAgentRouteTable * fabric_inet4_multicast_table() const
Definition: agent.h:600
VmTable * vm_table() const
Definition: agent.h:490
void set_vrouter_max_mirror_entries(uint32_t max_mirror_entries)
Definition: agent.h:1283
Definition: acl.h:92
int introspect_port() const
Definition: agent.h:1116
void set_vr_limit_low_watermark(float watermark)
Definition: agent.h:1395
uint16_t mirror_port() const
Definition: agent.h:1111
void set_mirror_table(MirrorTable *table)
Definition: agent.h:526
FlowStatsReqHandler & flow_stats_req_handler()
Definition: agent.h:1332
const int8_t & ifmap_active_xmpp_server_index() const
Definition: agent.h:780
void intrusive_ptr_add_back_ref(const IntrusiveReferrer ref, const Interface *p)
void set_fabric_inet4_mpls_table(InetUnicastAgentRouteTable *table)
Definition: agent.h:592
void set_resource_manager(ResourceManager *resource_manager)
Definition: agent.cc:1025
ResourceManager * resource_manager_
Definition: agent.h:1425
std::unique_ptr< MetaDataIpAllocator > metadata_ip_allocator_
Definition: agent.h:1458
ResourceManager * resource_manager() const
Definition: agent.cc:1021
void set_fabric_evpn_table(RouteTable *table)
Definition: agent.h:614
static EventManager evm
void set_task_scheduler(TaskScheduler *t)
Definition: agent.h:1121
void set_physical_device_table(PhysicalDeviceTable *table)
Definition: agent.h:631
AclTable * acl_table_
Definition: agent.h:1472
void set_vxlan_table(VxLanTable *table)
Definition: agent.h:536
bool isMockMode() const
Definition: agent.cc:153
uint32_t vrouter_max_bridge_entries() const
Definition: agent.h:1288
void reset_ifmap_active_xmpp_server()
Definition: agent.h:787
const Peer * evpn_routing_peer() const
Definition: agent.h:1027
void set_qos_config_table(AgentQosConfigTable *qos_config_table)
Definition: agent.h:558
boost::intrusive_ptr< NextHop > NextHopRef
Definition: agent.h:124
bool test_mode_
Definition: agent.h:1575
const std::string & ifmap_active_xmpp_server() const
Definition: agent.h:781
uint32_t vrouter_server_port_
Definition: agent.h:1605
std::vector< int > TagList
Definition: agent.h:202
VrouterObjectLimits GetVrouterObjectLimits()
Definition: agent.cc:1157
const std::string & fabric_policy_vrf_name() const
Definition: agent.h:908
Icmpv6Proto * icmpv6_proto_
Definition: agent.h:1537