17 using std::unique_ptr;
25 :
BgpTable(db, name), tree_manager_(NULL), mvpn_project_manager_(NULL) {
36 const string &key_str)
const {
38 return unique_ptr<DBEntry> (
new ErmVpnRoute(prefix));
111 if (dest_route == NULL) {
113 rtp->
Add(dest_route);
126 if (dest_path != NULL) {
157 uinfo_slist->push_front(*uinfo);
170 if (!peer || !ribout->
IsRegistered(const_cast<IPeer *>(peer)))
173 size_t peerbit = ribout->
GetPeerIndex(const_cast<IPeer *>(peer));
174 if (!peerset.
test(peerbit))
182 uinfo_slist->push_front(*uinfo);
191 tree_manager_ = BgpStaticObjectFactory::Create<McastTreeManager>(
this);
virtual void set_routing_instance(RoutingInstance *rtinstance)
int GetPeerIndex(IPeerUpdate *peer) const
size_t HashFunction(const ErmVpnPrefix &prefix) const
const BgpPath * BestPath() const
const ErmVpnPrefix & GetPrefix() const
bool test(size_t pos) const
int virtual_network_index() const
McastTreeManager * tree_manager_
ErmVpnTable(DB *db, const std::string &name)
UpdateInfo * GetUpdateInfo(RibOut *ribout, BgpRoute *route, const RibPeerSet &peerset)
bool RemoveSecondaryPath(const BgpRoute *src_rt, BgpPath::PathSource src, const IPeer *peer, uint32_t path_id)
DBEntry * Find(const DBEntry *entry)
RoutingInstance * routing_instance()
MvpnProjectManager * mvpn_project_manager_
virtual void Initialize()
const uint32_t GetPathId() const
static void RegisterFactory()
static DBTableBase * CreateTable(DB *db, const std::string &name)
virtual BgpRoute * RouteReplicate(BgpServer *server, BgpTable *src_table, BgpRoute *src_rt, const BgpPath *path, ExtCommunityPtr ptr)
const RouteDistinguisher & source_rd() const
virtual Address::Family family() const =0
uint32_t GetFlags() const
const ErmVpnRoute * FindRoute(const ErmVpnPrefix &prefix) const
void CreateMvpnProjectManager()
virtual void Initialize()
static ErmVpnPrefix FromString(const std::string &str, boost::system::error_code *errorp=NULL)
BgpAttrPtr ReplaceExtCommunityAndLocate(const BgpAttr *attr, ExtCommunityPtr extcomm)
void GetMvpnSourceAddress(ErmVpnRoute *ermvpn_route, Ip4Address *address) const
virtual UpdateInfo * GetUpdateInfo(ErmVpnRoute *route)
virtual bool Export(RibOut *ribout, Route *route, const RibPeerSet &peerset, UpdateInfoSList &info_slist)
boost::intrusive_ptr< const BgpAttr > BgpAttrPtr
void SetReplicateInfo(const BgpTable *table, const BgpRoute *rt)
PathSource GetSource() const
McastTreeManager * GetTreeManager()
bool IsRegistered(IPeerUpdate *peer)
virtual size_t Hash(const DBEntry *entry) const
bool IsEncodingBgp() const
static size_t HashFunction(const Ip4Prefix &addr)
static RouteDistinguisher kZeroRd
uint32_t GetLabel() const
boost::asio::ip::address_v4 Ip4Address
static const int kPartitionCount
void InsertPath(BgpPath *path)
const BgpAttr * GetOriginalAttr() const
virtual DBTablePartBase * GetTablePartition(const DBRequestKey *key)
void DestroyTreeManager()
bool IsMasterRoutingInstance() const
BgpPath * FindSecondaryPath(BgpRoute *src_rt, BgpPath::PathSource src, const IPeer *peer, uint32_t path_id)
void DestroyMvpnProjectManager()
void set_route_distinguisher(const RouteDistinguisher &rd)
virtual BgpRoute * TableFind(DBTablePartition *rtp, const DBRequestKey *prefix)
const BgpAttr * GetAttr() const
virtual void set_routing_instance(RoutingInstance *rtinstance)
void GetMvpnSourceAddress(ErmVpnRoute *ermvpn_route, Ip4Address *address) const
virtual void Add(DBEntry *entry)
void Notify(DBEntryBase *entry)
std::size_t hash_value(BgpAttr const &attr)
LifetimeActor * deleter()
virtual std::unique_ptr< DBEntry > AllocEntryStr(const std::string &key) const
as_t autonomous_system() const
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *key) const
#define MODULE_INITIALIZER(Func)
static void RegisterFactory(const std::string &prefix, CreateFunction create_fn)