OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
operdb_init.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __VNSW_OPERDB_INIT__
6 #define __VNSW_OPERDB_INIT__
7 
8 #include <base/util.h>
9 #include <cmn/agent_cmn.h>
10 #include <cmn/agent.h>
11 
12 class DBEntryBase;
13 class Agent;
14 class DB;
15 class GlobalVrouter;
16 class BgpRouterConfig;
19 class MulticastHandler;
20 class InstanceManager;
21 class NexthopManager;
23 class AgentProfile;
24 class VRouter;
25 class BgpAsAService;
26 class GlobalQosConfig;
27 class GlobalSystemConfig;
28 class OperNetworkIpam;
29 class OperVirtualDns;
31 class RouteLeakManager;
32 class TsnElector;
33 class ProjectConfig;
35 class HBFHandler;
36 
37 class OperDB {
38 public:
39  static const uint16_t max_linklocal_addresses = 65535;
40 
41  OperDB(Agent *agent);
42  virtual ~OperDB();
43 
44  void CreateDBTables(DB *);
45  void RegisterDBClients();
46  void Init();
47  void InitDone();
48  void CreateDefaultVrf();
49  void DeleteRoutes();
50  void Shutdown();
51 
52  Agent *agent() const { return agent_; }
53  MulticastHandler *multicast() const { return multicast_.get(); }
54  GlobalVrouter *global_vrouter() const { return global_vrouter_.get(); }
56  return bgp_router_config_.get();
57  }
59  return route_preference_module_.get();
60  }
62  return dependency_manager_.get();
63  }
65  return instance_manager_.get();
66  }
68  return domain_config_.get();
69  }
71  return nexthop_manager_.get();
72  }
74  return agent_sandesh_manager_.get();
75  }
76  VRouter *vrouter() const { return vrouter_.get(); }
78 
79  AgentProfile *agent_profile() const { return profile_.get(); }
80 
82  return global_qos_config_.get();
83  }
84 
86  return global_system_config_.get();
87  }
88 
89  OperNetworkIpam *network_ipam() const { return network_ipam_.get(); }
90  OperVirtualDns *virtual_dns() const { return virtual_dns_.get(); }
92  return route_walk_manager_.get();
93  }
94  TsnElector *tsn_elector() const { return tsn_elector_.get(); }
96  return route_leak_manager_.get();
97  }
99  return vxlan_routing_manager_.get();
100  }
102  return hbf_handler_.get();
103  }
104 
105 private:
106  OperDB();
107 
109  std::unique_ptr<MulticastHandler> multicast_;
110  std::unique_ptr<PathPreferenceModule> route_preference_module_;
111  std::unique_ptr<IFMapDependencyManager> dependency_manager_;
112  std::unique_ptr<InstanceManager> instance_manager_;
113  std::unique_ptr<NexthopManager> nexthop_manager_;
114  std::unique_ptr<AgentSandeshManager> agent_sandesh_manager_;
115  std::unique_ptr<AgentProfile> profile_;
116  std::unique_ptr<BgpAsAService> bgp_as_a_service_;
117  std::unique_ptr<DomainConfig> domain_config_;
118 
119  std::unique_ptr<VRouter> vrouter_;
120  std::unique_ptr<GlobalVrouter> global_vrouter_;
121  std::unique_ptr<BgpRouterConfig> bgp_router_config_;
122  std::unique_ptr<OperNetworkIpam> network_ipam_;
123  std::unique_ptr<OperVirtualDns> virtual_dns_;
124  std::unique_ptr<GlobalQosConfig> global_qos_config_;
125  std::unique_ptr<GlobalSystemConfig> global_system_config_;
126  std::unique_ptr<AgentRouteWalkerManager> route_walk_manager_;
127  std::unique_ptr<RouteLeakManager> route_leak_manager_;
128  std::unique_ptr<TsnElector> tsn_elector_;
129  std::unique_ptr<VxlanRoutingManager> vxlan_routing_manager_;
130  std::unique_ptr<HBFHandler> hbf_handler_;
131 
133 };
134 #endif
MulticastHandler * multicast() const
Definition: operdb_init.h:53
Definition: hbf.h:30
Agent * agent() const
Definition: operdb_init.h:52
TsnElector * tsn_elector() const
Definition: operdb_init.h:94
std::unique_ptr< VxlanRoutingManager > vxlan_routing_manager_
Definition: operdb_init.h:129
RouteLeakManager * route_leak_manager() const
Definition: operdb_init.h:95
virtual ~OperDB()
Definition: operdb_init.cc:375
std::unique_ptr< NexthopManager > nexthop_manager_
Definition: operdb_init.h:113
std::unique_ptr< RouteLeakManager > route_leak_manager_
Definition: operdb_init.h:127
void InitDone()
Definition: operdb_init.cc:342
GlobalQosConfig * global_qos_config() const
Definition: operdb_init.h:81
std::unique_ptr< MulticastHandler > multicast_
Definition: operdb_init.h:109
VxlanRoutingManager * vxlan_routing_manager() const
Definition: operdb_init.h:98
std::unique_ptr< VRouter > vrouter_
Definition: operdb_init.h:119
NexthopManager * nexthop_manager()
Definition: operdb_init.h:70
IFMapDependencyManager * dependency_manager()
Definition: operdb_init.h:61
void RegisterDBClients()
Definition: operdb_init.cc:346
std::unique_ptr< GlobalVrouter > global_vrouter_
Definition: operdb_init.h:120
Definition: db.h:24
BgpRouterConfig * bgp_router_config() const
Definition: operdb_init.h:55
This class manages routes leaking between bridge VRF instances and the routing VRF instance...
BgpAsAService * bgp_as_a_service() const
Definition: operdb_init.h:77
std::unique_ptr< AgentRouteWalkerManager > route_walk_manager_
Definition: operdb_init.h:126
GlobalVrouter * global_vrouter() const
Definition: operdb_init.h:54
InstanceManager * instance_manager()
Definition: operdb_init.h:64
std::unique_ptr< IFMapDependencyManager > dependency_manager_
Definition: operdb_init.h:111
VRouter * vrouter() const
Definition: operdb_init.h:76
DomainConfig * domain_config_table()
Definition: operdb_init.h:67
std::unique_ptr< BgpAsAService > bgp_as_a_service_
Definition: operdb_init.h:116
void CreateDBTables(DB *)
Definition: operdb_init.cc:79
Definition: agent.h:358
AgentRouteWalkerManager * agent_route_walk_manager() const
Definition: operdb_init.h:91
OperNetworkIpam * network_ipam() const
Definition: operdb_init.h:89
PathPreferenceModule * route_preference_module() const
Definition: operdb_init.h:58
std::unique_ptr< GlobalQosConfig > global_qos_config_
Definition: operdb_init.h:124
Agent * agent_
Definition: operdb_init.h:108
void CreateDefaultVrf()
std::unique_ptr< OperNetworkIpam > network_ipam_
Definition: operdb_init.h:122
std::unique_ptr< BgpRouterConfig > bgp_router_config_
Definition: operdb_init.h:121
std::unique_ptr< PathPreferenceModule > route_preference_module_
Definition: operdb_init.h:110
void Init()
Definition: operdb_init.cc:314
AgentSandeshManager * agent_sandesh_manager()
Definition: operdb_init.h:73
std::unique_ptr< AgentSandeshManager > agent_sandesh_manager_
Definition: operdb_init.h:114
void Shutdown()
Definition: operdb_init.cc:378
OperVirtualDns * virtual_dns() const
Definition: operdb_init.h:90
std::unique_ptr< OperVirtualDns > virtual_dns_
Definition: operdb_init.h:123
std::unique_ptr< InstanceManager > instance_manager_
Definition: operdb_init.h:112
std::unique_ptr< HBFHandler > hbf_handler_
Definition: operdb_init.h:130
std::unique_ptr< TsnElector > tsn_elector_
Definition: operdb_init.h:128
static const uint16_t max_linklocal_addresses
Definition: operdb_init.h:39
HBFHandler * hbf_handler() const
Definition: operdb_init.h:101
void DeleteRoutes()
Definition: operdb_init.cc:440
std::unique_ptr< GlobalSystemConfig > global_system_config_
Definition: operdb_init.h:125
AgentProfile * agent_profile() const
Definition: operdb_init.h:79
GlobalSystemConfig * global_system_config() const
Definition: operdb_init.h:85
std::unique_ptr< AgentProfile > profile_
Definition: operdb_init.h:115
std::unique_ptr< DomainConfig > domain_config_
Definition: operdb_init.h:117
DISALLOW_COPY_AND_ASSIGN(OperDB)