5 #ifndef SRC_BGP_BGP_MULTICAST_H_
6 #define SRC_BGP_BGP_MULTICAST_H_
8 #include <boost/scoped_ptr.hpp>
240 std::vector<std::string> *encap)
const;
247 typedef std::set<McastForwarder *, McastForwarderCompare>
ForwarderSet;
269 if (lhs->
group().to_ulong() < rhs->
group().to_ulong()) {
272 if (lhs->
group().to_ulong() > rhs->
group().to_ulong()) {
275 if (lhs->
source().to_ulong() < rhs->
source().to_ulong()) {
278 if (lhs->
source().to_ulong() > rhs->
source().to_ulong()) {
331 std::vector<std::string> *encap)
const;
337 typedef std::set<McastSGEntry *, McastSGEntryCompare>
SGList;
429 Ip4Address *address, std::vector<std::string> *encap)
const;
455 #endif // SRC_BGP_BGP_MULTICAST_H_
virtual ErmVpnRoute * GetGlobalTreeRootRoute(const Ip4Address &source, const Ip4Address &group) const
boost::scoped_ptr< DeleteActor > deleter_
const ErmVpnRoute * GetGlobalErmVpnTreeMvpnRoute() const
McastManagerPartition(McastTreeManager *tree_manager, size_t part_id)
ErmVpnRoute * GetGlobalTreeRootRoute(const Ip4Address &source, const Ip4Address &group) const
bool GetForestNodePMSI(ErmVpnRoute *rt, uint32_t *label, Ip4Address *address, std::vector< std::string > *encap) const
void DeleteLocalTreeRoute()
void ChangeForwarder(McastForwarder *forwarder)
PartitionList::const_iterator const_iterator
bool operator()(const McastSGEntry *lhs, const McastSGEntry *rhs) const
McastForwarder * FindLink(McastForwarder *forwarder)
const RoutingInstance * routing_instance() const
void AddGlobalTreeRoute()
bool IsTreeBuilder(uint8_t level) const
void clear_on_work_queue()
void RouteListener(DBTablePartBase *tpart, DBEntryBase *db_entry)
std::vector< bool > update_needed_
LabelBlockPtr label_block_
UpdateInfo * GetUpdateInfo(ErmVpnTable *table)
McastTreeManager(ErmVpnTable *table)
void NotifyForestNode(int part_id, const Ip4Address &source, const Ip4Address &group)
void clear_tree_result_route()
boost::intrusive_ptr< LabelBlock > LabelBlockPtr
virtual void Initialize()
virtual ~McastTreeManager()
ErmVpnRoute * local_tree_route_
void AddLocalOListElems(BgpOListSpec *olist_spec)
bool ProcessSGEntry(McastSGEntry *sg_entry)
bool GetForestNodePMSI(uint32_t *label, Ip4Address *address, std::vector< std::string > *encap) const
McastSGEntry * FindSGEntry(const Ip4Address &group, const Ip4Address &source)
std::vector< std::string > encap_
McastManagerPartition * partition_
const_iterator end() const
std::set< McastForwarder *, McastForwarderCompare > ForwarderSet
virtual UpdateInfo * GetUpdateInfo(ErmVpnRoute *route)
void DeleteGlobalTreeRoute()
bool Update(ErmVpnRoute *route)
void DeleteForwarder(McastForwarder *forwarder)
DISALLOW_COPY_AND_ASSIGN(McastTreeManager)
const RouteDistinguisher & GetSourceRd() const
Ip4Address router_id() const
void TreeResultListener(McastManagerPartition *partition, ErmVpnRoute *route)
void UpdateRoutes(uint8_t level)
void UpdateLocalTreeRoute()
ErmVpnRoute * tree_result_route_
WorkQueue< McastSGEntry * > work_queue_
std::string ToString() const
DISALLOW_COPY_AND_ASSIGN(McastForwarder)
friend class BgpMulticastTest
McastTreeManager * tree_manager() const
McastSGEntry * LocateSGEntry(Ip4Address group, Ip4Address source)
void RemoveLink(McastForwarder *forwarder)
bool operator()(const McastForwarder *lhs, const McastForwarder *rhs) const
const LabelBlock * label_block() const
Ip4Address address() const
friend class BgpMulticastTest
friend class BgpMulticastTest
McastSGEntry(McastManagerPartition *partition, Ip4Address group, Ip4Address source)
std::vector< std::string > encap() const
const ErmVpnTable * table() const
PartitionList partitions_
const_iterator begin() const
boost::asio::ip::address_v4 Ip4Address
DBTablePartBase * GetTablePartition(size_t part_id)
LifetimeRef< McastTreeManager > table_delete_ref_
std::vector< McastForwarder * > McastForwarderList
bool IsForestNode(McastForwarder *forwarder)
std::vector< ForwarderSet * > forwarder_sets_
const RouteDistinguisher & route_distinguisher() const
ErmVpnRoute * global_tree_route_
ErmVpnRoute * GetGlobalTreeRootRoute() const
friend class BgpMulticastTest
void AddGlobalOListElems(BgpOListSpec *olist_spec)
std::string ToString() const
DISALLOW_COPY_AND_ASSIGN(McastManagerPartition)
DISALLOW_COPY_AND_ASSIGN(McastSGEntry)
void set_tree_result_route(ErmVpnRoute *route)
McastForwarderList tree_links_
void AddLink(McastForwarder *forwarder)
const ErmVpnRoute * tree_result_route() const
McastForwarder(McastSGEntry *sg_entry, ErmVpnRoute *route)
std::set< McastSGEntry *, McastSGEntryCompare > SGList
LifetimeActor * deleter()
std::vector< McastManagerPartition * > PartitionList
void EnqueueSGEntry(McastSGEntry *sg_entry)
Ip4Address source() const
void TreeNodeListener(McastManagerPartition *partition, ErmVpnRoute *route)
virtual bool GetForestNodePMSI(ErmVpnRoute *rt, uint32_t *label, Ip4Address *address, std::vector< std::string > *encap) const
DBTablePartBase * GetTablePartition()
McastManagerPartition * partition()
McastManagerPartition * GetPartition(int part_id)
McastTreeManager * tree_manager_
ErmVpnRoute * global_tree_route() const
void NotifyForestNode(const Ip4Address &source, const Ip4Address &group)
void AddForwarder(McastForwarder *forwarder)
McastForwarder * forest_node_