OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
tsn_elector.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef tsn_elector_agent_oper_hpp
6 #define tsn_elector_agent_oper_hpp
7 
8 #include <cmn/agent_cmn.h>
9 #include <cmn/agent.h>
11 
12 struct TsnElectorState : public DBState {
13  TsnElectorState(AgentRouteTable *table, TsnElector *elector);
14  virtual ~TsnElectorState();
15 
18 };
19 
21 public:
22  TsnElectorWalker(const std::string &name, Agent *agent);
23  virtual ~TsnElectorWalker();
24 
25  void LeaveTsnMastership();
26  void AcquireTsnMastership();
27  virtual bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e);
28 
29 private:
30  bool master_;
32 };
33 
34 class TsnElector {
35 public:
36  typedef std::vector<std::string> ManagedPhysicalDevicesList;
38  virtual ~TsnElector();
39 
40  void Register();
41  void Shutdown();
42  void Notify(DBTablePartBase *partition, DBEntryBase *e);
43  void RouteNotify(DBTablePartBase *partition, DBEntryBase *e);
44  bool IsMaster() const;
45  const Agent *agent() const {return agent_;}
46  const std::vector<string> &active_tsn_servers() const {
47  return active_tsn_servers_;
48  }
50 
51 private:
52  bool IsTsnNoForwardingEnabled() const;
54  return static_cast<TsnElectorWalker *>(walker_.get());
55  }
56 
57  const Agent *agent_;
59  std::vector<std::string> active_tsn_servers_;
62 };
63 
64 #endif /* tsn_elector_agent_oper_hpp */
Agent * agent() const
TsnElectorState(AgentRouteTable *table, TsnElector *elector)
Definition: tsn_elector.cc:22
TsnElectorWalker(const std::string &name, Agent *agent)
Definition: tsn_elector.cc:33
virtual ~TsnElectorState()
Definition: tsn_elector.cc:29
AgentRouteTable * inet4_table_
Definition: tsn_elector.h:17
bool IsTsnNoForwardingEnabled() const
Definition: tsn_elector.cc:90
AgentRouteWalkerPtr walker_
Definition: tsn_elector.h:60
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
virtual ~TsnElector()
Definition: tsn_elector.cc:87
void LeaveTsnMastership()
Definition: tsn_elector.cc:70
int ListenerId
Definition: db_table.h:62
TsnElectorWalker * walker()
Definition: tsn_elector.h:53
virtual bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e)
Definition: tsn_elector.cc:40
const ManagedPhysicalDevicesList & ManagedPhysicalDevices() const
Definition: tsn_elector.cc:183
DISALLOW_COPY_AND_ASSIGN(TsnElector)
void Register()
Definition: tsn_elector.cc:95
Definition: agent.h:358
TsnElector(Agent *agent)
Definition: tsn_elector.cc:80
DBTable::ListenerId vrf_listener_id_
Definition: tsn_elector.h:58
void Notify(DBTablePartBase *partition, DBEntryBase *e)
Definition: tsn_elector.cc:104
void Shutdown()
Definition: tsn_elector.cc:167
DISALLOW_COPY_AND_ASSIGN(TsnElectorWalker)
boost::intrusive_ptr< AgentRouteWalker > AgentRouteWalkerPtr
void RouteNotify(DBTablePartBase *partition, DBEntryBase *e)
Definition: tsn_elector.cc:126
std::vector< std::string > ManagedPhysicalDevicesList
Definition: tsn_elector.h:36
void AcquireTsnMastership()
Definition: tsn_elector.cc:75
bool IsMaster() const
Definition: tsn_elector.cc:176
virtual ~TsnElectorWalker()
Definition: tsn_elector.cc:37
DBTable::ListenerId inet4_id_
Definition: tsn_elector.h:16
const Agent * agent_
Definition: tsn_elector.h:57
const Agent * agent() const
Definition: tsn_elector.h:45
std::vector< std::string > active_tsn_servers_
Definition: tsn_elector.h:59
const std::vector< string > & active_tsn_servers() const
Definition: tsn_elector.h:46