/
controller_init.h
100 lines (80 loc) · 3.48 KB
/
controller_init.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
* Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
*/
#ifndef __VNSW_CONTROLLER_INIT_HPP__
#define __VNSW_CONTROLLER_INIT_HPP__
#include <sandesh/sandesh_trace.h>
#include <discovery/client/discovery_client.h>
#include <boost/scoped_ptr.hpp>
#include <boost/shared_ptr.hpp>
#include <controller/controller_cleanup_timer.h>
class AgentXmppChannel;
class AgentDnsXmppChannel;
class AgentIfMapVmExport;
class BgpPeer;
class VNController {
public:
typedef boost::shared_ptr<BgpPeer> BgpPeerPtr;
typedef std::list<boost::shared_ptr<BgpPeer> >::iterator BgpPeerIterator;
VNController(Agent *agent);
virtual ~VNController();
void Connect();
void DisConnect();
void Cleanup();
void XmppServerConnect();
void DnsXmppServerConnect();
void XmppServerDisConnect();
void DnsXmppServerDisConnect();
void ApplyDiscoveryXmppServices(std::vector<DSResponse> resp);
void ApplyDiscoveryDnsXmppServices(std::vector<DSResponse> resp);
void DisConnectControllerIfmapServer(uint8_t idx);
void DisConnectDnsServer(uint8_t idx);
//Multicast peer identifier
void increment_multicast_sequence_number() {multicast_sequence_number_++;}
uint64_t multicast_sequence_number() {return multicast_sequence_number_;}
//Peer maintenace routines
uint8_t ActiveXmppConnectionCount();
AgentXmppChannel *GetActiveXmppChannel();
uint32_t DecommissionedPeerListSize() const {
return decommissioned_peer_list_.size();
}
void AddToDecommissionedPeerList(boost::shared_ptr<BgpPeer> peer);
//Unicast timer related routines
void StartUnicastCleanupTimer(AgentXmppChannel *agent_xmpp_channel);
void UnicastCleanupTimerExpired();
CleanupTimer &unicast_cleanup_timer() {return unicast_cleanup_timer_;}
void ControllerPeerHeadlessAgentDelDone(BgpPeer *peer);
//Multicast timer
void StartMulticastCleanupTimer(AgentXmppChannel *agent_xmpp_channel);
void MulticastCleanupTimerExpired(uint64_t peer_sequence);
CleanupTimer &multicast_cleanup_timer() {return multicast_cleanup_timer_;}
AgentIfMapVmExport *agent_ifmap_vm_export() const {
return agent_ifmap_vm_export_.get();
}
void StartConfigCleanupTimer(AgentXmppChannel *agent_xmpp_channel);
CleanupTimer &config_cleanup_timer() {return config_cleanup_timer_;}
// Clear of decommissioned peer listener id for vrf specified
void DeleteVrfStateOfDecommisionedPeers(DBTablePartBase *partition,
DBEntryBase *e);
Agent *agent() {return agent_;}
private:
AgentXmppChannel *FindAgentXmppChannel(const std::string &server_ip);
AgentDnsXmppChannel *FindAgentDnsXmppChannel(const std::string &server_ip);
void DeleteConnectionInfo(const std::string &addr, bool is_dns) const;
const std::string MakeConnectionPrefix(bool is_dns) const;
bool AgentXmppServerExists(const std::string &server_ip,
std::vector<DSResponse> resp);
Agent *agent_;
uint64_t multicast_sequence_number_;
std::list<boost::shared_ptr<BgpPeer> > decommissioned_peer_list_;
boost::scoped_ptr<AgentIfMapVmExport> agent_ifmap_vm_export_;
UnicastCleanupTimer unicast_cleanup_timer_;
MulticastCleanupTimer multicast_cleanup_timer_;
ConfigCleanupTimer config_cleanup_timer_;
};
extern SandeshTraceBufferPtr ControllerTraceBuf;
#define CONTROLLER_TRACE(obj, ...)\
do {\
AgentXmpp##obj::TraceMsg(ControllerTraceBuf, __FILE__, __LINE__, __VA_ARGS__);\
} while(0);\
#endif