OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vrouter.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_vrouter_h_
6 #define vnsw_agent_vrouter_h_
7 
8 #include <cmn/agent_cmn.h>
9 #include <oper/oper_db.h>
10 
11 class IFMapNode;
12 
13 struct VRouterSubnet {
15  uint8_t plen;
17  VRouterSubnet(const std::string& ip, uint8_t prefix_len);
18  bool operator==(const VRouterSubnet& rhs) const;
19  bool IsLess(const VRouterSubnet *rhs) const;
20  bool operator() (const VRouterSubnet &lhs, const VRouterSubnet &rhs) const;
21 };
22 
23 // Handle VRouter configuration
24 class VRouter : public OperIFMapTable {
25 public:
26  typedef std::set<VRouterSubnet, VRouterSubnet> VRouterSubnetSet;
28  virtual ~VRouter();
29 
30  void ConfigDelete(IFMapNode *node);
31  void ConfigAddChange(IFMapNode *node);
32  void ConfigManagerEnqueue(IFMapNode *node);
33  void FillSandeshInfo(VrouterInfoResp *resp);
34  uint32_t SubnetCount() const { return subnet_list_.size(); }
35  bool IsSubnetMember(const IpAddress &addr) const;
36  void Shutdown();
37  void Insert(const VRouterSubnet *rhs);
38  void Update(const VRouterSubnet *lhs, const VRouterSubnet *rhs) {}
39  void Remove(VRouterSubnetSet::iterator &it);
40 private:
41  void DeleteSubnetRoutes();
42  void ClearSubnets();
43  void DeleteRoute(const VRouterSubnet &subnet);
44  void AddRoute(const VRouterSubnet &subnet);
45  IFMapNode *FindTarget(IFMapNode *node, std::string node_type) const;
46 
47  std::string name_;
49  std::string display_name_;
51 };
52 
53 #endif // vnsw_agent_vrouter_h_
std::string display_name_
Definition: vrouter.h:49
uint8_t plen
Definition: vrouter.h:15
void FillSandeshInfo(VrouterInfoResp *resp)
Definition: vrouter.cc:189
void DeleteRoute(const VRouterSubnet &subnet)
Definition: vrouter.cc:139
bool IsSubnetMember(const IpAddress &addr) const
Definition: vrouter.cc:159
void DeleteSubnetRoutes()
Definition: vrouter.cc:124
Agent * agent() const
Definition: oper_db.h:245
virtual ~VRouter()
Definition: vrouter.cc:46
boost::asio::ip::address IpAddress
Definition: address.h:13
VRouterSubnet()
Definition: vrouter.h:16
uint32_t SubnetCount() const
Definition: vrouter.h:34
std::string name_
Definition: vrouter.h:47
void Update(const VRouterSubnet *lhs, const VRouterSubnet *rhs)
Definition: vrouter.h:38
VRouter(Agent *agent)
Definition: vrouter.cc:43
void ConfigAddChange(IFMapNode *node)
Definition: vrouter.cc:83
void Remove(VRouterSubnetSet::iterator &it)
Definition: vrouter.cc:54
std::set< VRouterSubnet, VRouterSubnet > VRouterSubnetSet
Definition: vrouter.h:26
void ClearSubnets()
Definition: vrouter.cc:74
bool IsLess(const VRouterSubnet *rhs) const
Definition: vrouter.cc:31
void Shutdown()
Definition: vrouter.cc:182
Definition: agent.h:358
void AddRoute(const VRouterSubnet &subnet)
Definition: vrouter.cc:132
bool operator==(const VRouterSubnet &rhs) const
Definition: vrouter.cc:21
VRouterSubnetSet subnet_list_
Definition: vrouter.h:48
void ConfigManagerEnqueue(IFMapNode *node)
Definition: vrouter.cc:154
void Insert(const VRouterSubnet *rhs)
Definition: vrouter.cc:49
IFMapNode * FindTarget(IFMapNode *node, std::string node_type) const
Definition: vrouter.cc:63
IpAddress ip_prefix
Definition: vrouter.h:14
DISALLOW_COPY_AND_ASSIGN(VRouter)
bool operator()(const VRouterSubnet &lhs, const VRouterSubnet &rhs) const
Definition: vrouter.cc:38
void ConfigDelete(IFMapNode *node)
Definition: vrouter.cc:59