OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ha_stale_l2_route.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_VNSW_AGENT_OVS_TOR_AGENT_OVSDB_CLIENT_HA_STALE_L2_ROUTE_H_
6 #define SRC_VNSW_AGENT_OVS_TOR_AGENT_OVSDB_CLIENT_HA_STALE_L2_ROUTE_H_
7 
8 #include <base/lifetime.h>
9 #include <ovsdb_entry.h>
10 #include <ovsdb_object.h>
11 #include <ovsdb_client_idl.h>
12 
13 class BridgeRouteEntry;
14 
15 namespace OVSDB {
16 class HaStaleDevVnEntry;
17 class HaStaleL2RouteEntry;
18 class ConnectionStateEntry;
19 
21 public:
23  AgentRouteTable *table);
24  virtual ~HaStaleL2RouteTable();
25 
26  KSyncEntry *Alloc(const KSyncEntry *key, uint32_t index);
28 
30  const OvsdbDBEntry *ovsdb_entry);
31 
32  Agent *agent() const;
33  void ManagedDelete();
34  virtual void EmptyTable();
35  Ip4Address dev_ip() const;
36  uint32_t vxlan_id() const;
37  const std::string &vn_name() const;
38  const std::string &vrf_name() const;
39 
40  void UpdateParams(HaStaleDevVnEntry *dev_vn);
41 
42 private:
43  friend class HaStaleL2RouteEntry;
44 
46  // DevVn entry will not be deleted till we del_ack for it
50  uint32_t vxlan_id_;
51  // take reference to the vrf while exporting route, to assure sanity
52  // of vrf pointer even if Add route request fails, due to any reason
54  std::string vn_name_;
56 };
57 
59 public:
61  const std::string &mac);
63 
64  bool Add();
65  bool Change();
66  bool Delete();
67 
68  bool Sync(DBEntry*);
69  bool IsLess(const KSyncEntry&) const;
70  std::string ToString() const {return "Ha Stale L2 Route Entry";}
72 
73  const std::string &mac() const;
74  uint32_t vxlan_id() const;
75  bool IsStale() const;
76 
77 private:
78  friend class HaStaleL2RouteTable;
79  friend class VrfRouteReflectorTable;
80 
81  void StaleClearCb();
82 
83  void StopStaleClearTimer();
84 
85  void AddEvent();
86  void ChangeEvent();
87  void DeleteEvent();
88 
89  std::string mac_;
90  uint32_t path_preference_;
91  uint32_t vxlan_id_;
92  uint64_t time_stamp_;
97 };
98 };
99 
100 #endif //SRC_VNSW_AGENT_OVS_TOR_AGENT_OVSDB_CLIENT_HA_STALE_L2_ROUTE_H_
101 
OvsdbDBObject * table()
Definition: ovsdb_entry.h:96
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge, EVPN (Type2/Type5). This base class contains common code for all types of route tables.
Definition: agent_route.h:109
DBFilterResp OvsdbDBEntryFilter(const DBEntry *entry, const OvsdbDBEntry *ovsdb_entry)
HaStaleL2RouteTable(HaStaleDevVnEntry *dev_vn, AgentRouteTable *table)
DISALLOW_COPY_AND_ASSIGN(HaStaleL2RouteEntry)
const std::string & vn_name() const
DISALLOW_COPY_AND_ASSIGN(HaStaleL2RouteTable)
Definition: agent.h:358
ConnectionStateEntry * state_
std::string ToString() const
LifetimeRef< HaStaleL2RouteTable > table_delete_ref_
KSyncEntry * Alloc(const KSyncEntry *key, uint32_t index)
HaStaleL2RouteEntry(HaStaleL2RouteTable *table, const std::string &mac)
boost::asio::ip::address_v4 Ip4Address
Definition: address.h:14
const std::string & mac() const
KSyncEntry * DBToKSyncEntry(const DBEntry *)
const std::string & vrf_name() const
HaStaleDevVnEntry * dev_vn_
void UpdateParams(HaStaleDevVnEntry *dev_vn)
bool IsLess(const KSyncEntry &) const