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