5 #ifndef SRC_BGP_ROUTING_INSTANCE_RTARGET_GROUP_MGR_H_
6 #define SRC_BGP_ROUTING_INSTANCE_RTARGET_GROUP_MGR_H_
8 #include <boost/ptr_container/ptr_map.hpp>
9 #include <boost/shared_ptr.hpp>
10 #include <sandesh/sandesh_types.h>
11 #include <sandesh/sandesh.h>
12 #include <sandesh/sandesh_trace.h>
13 #include <tbb/atomic.h>
14 #include <tbb/mutex.h>
71 RTargetList::const_iterator it);
73 RTargetList::const_iterator it);
93 RTargetRoute *rt, RtGroup::InterestedPeerList::const_iterator it);
95 RTargetRoute *rt, RtGroup::InterestedPeerList::iterator it);
114 const std::string ¶m = std::string())
208 typedef boost::ptr_map<const RouteTarget, RtGroup>
RtGroupMap;
296 #endif // SRC_BGP_ROUTING_INSTANCE_RTARGET_GROUP_MGR_H_
bool ProcessRTargetRouteList()
void EnableRtGroupProcessing()
RtGroupMgrTableStateList table_state_
std::map< const BgpPeer *, RTargetRouteList > InterestedPeerList
bool IsRouteTargetOnList(const RouteTarget &rtarget) const
void DisableRTargetRouteProcessing()
RtGroupMgrReq(RequestType type, SandeshResponse *resp, const std::string ¶m=std::string())
const RtGroup::InterestedPeerList * GetList() const
DBTableBase::ListenerId id_
void NotifyRtGroup(const RouteTarget &rt)
void AddInterestedPeer(RTargetGroupMgr *mgr, RtGroup *rtgroup, RTargetRoute *rt, RtGroup::InterestedPeerList::const_iterator it)
RtGroupMap::const_iterator const_iterator
LifetimeRef< RtGroupMgrTableState > table_delete_ref_
virtual ~RTargetGroupMgr()
void RTargetPeerSync(BgpTable *table, RTargetRoute *rt, DBTableBase::ListenerId id, RTargetState *dbstate, const RtGroup::InterestedPeerList *future)
std::set< RtGroup * > RtGroupRemoveList
void Enqueue(RtGroupMgrReq *req)
bool ProcessRouteTargetList(int part_id)
const_iterator begin() const
std::map< BgpTable *, RtGroupMgrTableState * > RtGroupMgrTableStateList
std::vector< RouteTargetTriggerList > rtarget_trigger_lists_
RTargetRouteTriggerList rtarget_route_list_
void AddRouteTargetToLists(const RouteTarget &rtarget)
RtGroupRemoveList rtgroup_remove_list_
const RTargetList * GetList() const
void DisableRouteTargetProcessing()
SandeshResponse * snh_resp_
LifetimeRef< RTargetGroupMgr > master_instance_delete_ref_
DBTableBase::ListenerId GetListenerId() const
RtGroup * LocateRtGroup(const RouteTarget &rt)
void RemoveRtGroup(const RouteTarget &rt)
void EnableRouteTargetProcessing()
void NotifyRtGroupUnlocked(const RouteTarget &rt)
RtGroupMgrTableState(BgpTable *table, DBTableBase::ListenerId id)
bool ProcessRtGroupList()
boost::scoped_ptr< TaskTrigger > remove_rtgroup_trigger_
const_iterator lower_bound(const RouteTarget &rt) const
boost::scoped_ptr< TaskTrigger > rtarget_route_trigger_
bool IsRTargetRouteOnList(RTargetRoute *rt) const
void DisableRtGroupProcessing()
RTargetGroupMgr(BgpServer *server)
bool RequestHandler(RtGroupMgrReq *req)
friend class ReplicationTest
void DeleteRouteTarget(RTargetGroupMgr *mgr, int part_id, BgpRoute *rt, RTargetList::const_iterator it)
RTargetList * GetMutableList()
bool IsRTargetRoutesProcessed() const
bool RTargetRouteNotify(DBTablePartBase *root, DBEntryBase *entry)
RtGroup * GetRtGroup(const RouteTarget &rt)
std::set< RTargetRoute * > RTargetRouteTriggerList
void BuildRTargetDistributionGraph(BgpTable *table, RTargetRoute *rt, DBTableBase::ListenerId id)
DISALLOW_COPY_AND_ASSIGN(RtGroupMgrTableState)
RtGroup::InterestedPeerList list_
boost::ptr_map< const RouteTarget, RtGroup > RtGroupMap
void DeleteInterestedPeer(RTargetGroupMgr *mgr, RtGroup *rtgroup, RTargetRoute *rt, RtGroup::InterestedPeerList::iterator it)
RtGroup::InterestedPeerList * GetMutableList()
DBTableBase::ListenerId GetListenerId(BgpTable *table)
void EnableRTargetRouteProcessing()
std::vector< boost::shared_ptr< TaskTrigger > > rtarget_dep_triggers_
DISALLOW_COPY_AND_ASSIGN(RtGroupMgrReq)
void AddRouteTarget(RTargetGroupMgr *mgr, int part_id, BgpRoute *rt, RTargetList::const_iterator it)
const_iterator end() const
DISALLOW_COPY_AND_ASSIGN(RTargetGroupMgr)
bool IsRtGroupOnList(RtGroup *rtgroup) const
void RTargetDepSync(DBTablePartBase *root, BgpRoute *rt, DBTableBase::ListenerId id, VpnRouteState *dbstate, const VpnRouteState::RTargetList *future)
bool VpnRouteNotify(DBTablePartBase *root, DBEntryBase *entry)
std::set< RouteTarget > RouteTargetTriggerList
virtual void GetRibOutInterestedPeers(RibOut *ribout, const ExtCommunity *ext_community, const RibPeerSet &peerset, RibPeerSet *new_peerset)
std::set< RouteTarget > RTargetList
friend class BgpXmppRTargetTest