5 #ifndef vnsw_agent_peer_h_
6 #define vnsw_agent_peer_h_
10 #include <tbb/mutex.h>
13 #include <boost/intrusive_ptr.hpp>
16 #define LOCAL_PEER_NAME "Local"
17 #define LOCAL_VM_PEER_NAME "Local_Vm"
18 #define LOCAL_VM_PORT_PEER_NAME "LocalVmPort"
19 #define NOVA_PEER_NAME "Nova"
20 #define LINKLOCAL_PEER_NAME "LinkLocal"
21 #define ECMP_PEER_NAME "Ecmp"
22 #define VGW_PEER_NAME "Vgw"
23 #define EVPN_ROUTING_PEER_NAME "EVPN Router"
24 #define EVPN_PEER_NAME "EVPN"
25 #define MULTICAST_PEER_NAME "Multicast"
26 #define MULTICAST_TOR_PEER_NAME "Multicast TOR"
27 #define MULTICAST_FABRIC_TREE_BUILDER_NAME "MulticastTreeBuilder"
28 #define MAC_VM_BINDING_PEER_NAME "MacVmBindingPeer"
29 #define MAC_LEARNING_PEER_NAME "DynamicMacLearningPeer"
30 #define FABRIC_RT_EXPORT "FabricRouteExport"
31 #define LOCAL_VM_EXPORT_PEER "LocalVmExportPeer"
42 typedef boost::intrusive_ptr<Peer>
PeerPtr;
46 typedef std::map<std::string, Peer *>
PeerMap;
47 typedef std::pair<std::string, Peer *>
PeerPair;
70 Peer(
Type type,
const std::string &name,
bool controller_export);
127 bool controller_export);
160 const Ip4Address &server_ip,
const std::string &name,
308 #endif // vnsw_agent_peer_h_
const std::string & GetName() const
void set_delete_stale_walker_cb(WalkDoneCb cb)
bool Compare(const Peer *rhs) const
tbb::atomic< uint32_t > refcount_
void PeerNotifyMulticastRoutes(bool associate)
int intrusive_ptr_add_ref(const AsPath *cpath)
void ReleaseDeletePeerWalker()
bool Compare(const Peer *rhs) const
std::map< std::string, Peer * > PeerMap
virtual bool SkipAddChangeRequest() const
WalkDoneCb route_walker_cb_
Timer * delete_timeout_timer_
DynamicPeer(Agent *agent, Type type, const std::string &name, bool controller_export)
std::pair< std::string, Peer * > PeerPair
void ReleaseDeleteStaleWalker()
bool export_to_controller_
boost::shared_ptr< EvpnPeer > EvpnPeerRef
void DelPeerRoutes(WalkDoneCb walk_done_cb, uint64_t sequence_number)
boost::shared_ptr< EvpnPeer > InetEvpnPeerRef
bool Compare(const Peer *rhs) const
void AllocDeletePeerWalker()
ControllerRouteWalker * delete_peer_walker() const
DISALLOW_COPY_AND_ASSIGN(InetEvpnPeer)
boost::intrusive_ptr< Peer > PeerPtr
AgentRouteWalkerPtr route_walker_
void set_route_walker_cb(WalkDoneCb cb)
void AllocPeerNotifyWalker()
WalkDoneCb delete_stale_walker_cb_
virtual bool DeleteOnZeroRefcount() const
bool IsLess(const Peer *rhs) const
DBState * GetRouteExportState(DBTablePartBase *partition, DBEntryBase *e)
virtual bool DeleteOnZeroRefcount() const
Peer(Type type, const std::string &name, bool controller_export)
friend void intrusive_ptr_add_ref(const Peer *p)
virtual bool SkipAddChangeRequest() const
uint64_t ChannelSequenceNumber() const
virtual bool IsDeleted() const
BgpPeer(BgpServer *server, RoutingInstance *instance, const BgpNeighborConfig *config)
const Type GetType() const
DBTableBase::ListenerId id_
virtual const Ip4Address * NexthopIp(Agent *agent, const AgentPath *path) const
void StopPeerNotifyRoutes()
DISALLOW_COPY_AND_ASSIGN(EvpnPeer)
uint32_t setup_time() const
virtual bool Compare(const Peer *rhs) const
bool Compare(const Peer *rhs) const
virtual ~EvpnRoutingPeer()
void PeerNotifyRoutes(WalkDoneCb cb)
AgentRouteWalkerPtr delete_peer_walker_
DISALLOW_COPY_AND_ASSIGN(VxlanBgpPeer)
DBTableBase::ListenerId GetVrfExportListenerId()
uint64_t sequence_number() const
ControllerRouteWalker * route_walker() const
boost::shared_ptr< VxlanBgpPeer > VxlanBgpPeerRef
tbb::atomic< bool > skip_add_change_
AgentXmppChannel * GetAgentXmppChannel() const
tbb::atomic< bool > deleted_
DBState * GetVrfExportState(DBTablePartBase *partition, DBEntryBase *e)
void incr_sequence_number()
DISALLOW_COPY_AND_ASSIGN(EcmpPeer)
void DeleteVrfState(DBTablePartBase *partition, DBEntryBase *entry)
LocalVmPortPeer(const std::string &name, uint64_t handle)
boost::intrusive_ptr< AgentRouteWalker > AgentRouteWalkerPtr
WalkDoneCb delete_peer_walker_cb_
boost::asio::ip::address_v4 Ip4Address
void AllocDeleteStaleWalker()
friend void intrusive_ptr_release(const Peer *p)
void SetVrfListenerId(DBTableBase::ListenerId id)
boost::intrusive_ptr< const Peer > PeerConstPtr
static const uint32_t kDeleteTimeout
boost::function< void()> WalkDoneCb
DISALLOW_COPY_AND_ASSIGN(BgpPeer)
boost::shared_ptr< EvpnPeer > EvpnRoutingPeerRef
DISALLOW_COPY_AND_ASSIGN(LocalVmPortPeer)
DISALLOW_COPY_AND_ASSIGN(DynamicPeer)
bool Compare(const Peer *rhs) const
void intrusive_ptr_release(const AsPath *cpath)
AgentRouteWalkerPtr delete_stale_walker_
void set_delete_peer_walker_cb(WalkDoneCb cb)
virtual bool IsDeleted() const
virtual ~LocalVmPortPeer()
friend void intrusive_ptr_add_ref(const Peer *p)
virtual bool export_to_controller() const
bool Compare(const Peer *rhs) const
static void ProcessDelete(DynamicPeer *p)
AgentXmppChannel * channel_
void ReleasePeerNotifyWalker()
DISALLOW_COPY_AND_ASSIGN(EvpnRoutingPeer)
uint32_t refcount() const
ControllerRouteWalker * delete_stale_walker() const
DISALLOW_COPY_AND_ASSIGN(Peer)
friend void intrusive_ptr_release(const Peer *p)
uint64_t sequence_number_
bool Compare(const Peer *rhs) const