5 #ifndef SRC_BGP_BGP_TABLE_H_
6 #define SRC_BGP_BGP_TABLE_H_
8 #include <tbb/atomic.h>
31 class ShowRibOutStatistics;
37 typedef std::map<RibExportPolicy, RibOut *>
RibOutMap;
53 uint32_t l3_label = 0)
75 uint32_t l3_label = 0)
114 const std::string &key)
const = 0;
189 uint32_t path_id, uint32_t flags, uint32_t label,
195 std::vector<ShowRibOutStatistics> *sros_list)
const;
213 BgpAttr *attr,
bool llgr_stale_comm);
232 #endif // SRC_BGP_BGP_TABLE_H_
void UpdatePathCount(const BgpPath *path, int count)
tbb::atomic< uint64_t > stale_path_count_
void PrependLocalAs(const RibOut *ribout, BgpAttr *attr, const IPeer *) const
void RemovePrivate4ByteAs(const RibOut *ribout, BgpAttr *attr) const
void set_subscription_gen_id(uint64_t subscription_gen_id)
void ProcessLlgrState(const RibOut *ribout, const BgpPath *path, BgpAttr *attr, bool llgr_stale_comm)
void CheckAggregatorAttr(BgpAttr *attr) const
void CreateAsPath2Byte(BgpAttr *attr) const
void InputCommonPostProcess(DBTablePartBase *root, BgpRoute *rt, bool notify_rt)
UpdateInfo * GetUpdateInfo(RibOut *ribout, BgpRoute *route, const RibPeerSet &peerset)
void CreateAs4Path(BgpAttr *attr) const
virtual bool Export(RibOut *ribout, Route *route, const RibPeerSet &peerset, UpdateInfoSList &uinfo_slist)=0
virtual BgpRoute * RouteReplicate(BgpServer *server, BgpTable *table, BgpRoute *src, const BgpPath *path, ExtCommunityPtr community)=0
virtual void Input(DBTablePartition *root, DBClient *client, DBRequest *req)
void PrependAsToAsPath2Byte(BgpAttr *attr, as_t asn) const
RoutingInstance * rtinstance_
virtual bool IsVpnTable() const
RoutingInstance * routing_instance()
virtual BgpRoute * TableFind(DBTablePartition *rtp, const DBRequestKey *prefix)=0
boost::asio::ip::address IpAddress
const uint64_t GetLlgrStalePathCount() const
void RemovePrivateAs(const RibOut *ribout, BgpAttr *attr) const
void ProcessRemovePrivate(const RibOut *ribout, BgpAttr *attr) const
void ProcessAsOverride(const RibOut *ribout, BgpAttr *attr) const
void LocatePathResolver()
NextHop(uint32_t flags, IpAddress address, uint32_t label, uint32_t l3_label=0)
virtual PathResolver * CreatePathResolver()
void PrependAsToAs4Path(BgpAttr *attr, as_t asn) const
const PathResolver * path_resolver() const
virtual Address::Family family() const =0
tbb::atomic< uint64_t > infeasible_path_count_
tbb::atomic< uint64_t > llgr_stale_path_count_
virtual const IPeer * GetPeer() const =0
const RoutingInstance * routing_instance() const
boost::intrusive_ptr< const BgpAttr > BgpAttrPtr
bool IsAggregateRoute(const BgpRoute *route) const
BgpTable(DB *db, const std::string &name)
const RibOutMap & ribout_map()
friend class BgpTableTest
virtual bool IsRoutingPolicySupported() const
const uint64_t GetInfeasiblePathCount() const
virtual bool MayDelete() const
std::map< RibExportPolicy, RibOut * > RibOutMap
virtual void RetryDelete()
boost::scoped_ptr< DeleteActor > deleter_
void RemovePrivateAs4(const RibOut *ribout, BgpAttr *attr) const
std::set< BgpTable * > TableSet
void DestroyPathResolver()
virtual void UpdateSecondaryTablesForReplication(BgpRoute *rt, TableSet *secondary_tables)
RibOut * RibOutLocate(BgpUpdateSender *sender, const RibExportPolicy &policy)
tbb::atomic< uint64_t > primary_path_count_
RibOut * RibOutFind(const RibExportPolicy &policy)
void UpdateStalePathCount(int count)
LifetimeRef< BgpTable > instance_delete_ref_
virtual bool IsRouteAggregationSupported() const
const std::string & name() const
boost::asio::ip::address_v4 Ip4Address
size_t GetPendingRiboutsCount(size_t *markers) const
DISALLOW_COPY_AND_ASSIGN(BgpTable)
tbb::atomic< uint64_t > secondary_path_count_
const uint64_t GetPrimaryPathCount() const
bool IsContributingRoute(const BgpRoute *route) const
void UpdateLlgrStalePathCount(int count)
RequestData(const BgpAttrPtr &attrs, uint32_t flags, uint32_t label, uint32_t l3_label=0)
static bool PathSelection(const Path &path1, const Path &path2)
void FillRibOutStatisticsInfo(std::vector< ShowRibOutStatistics > *sros_list) const
uint64_t subscription_gen_id_
bool InputCommon(DBTablePartBase *root, BgpRoute *rt, BgpPath *path, const IPeer *peer, DBRequest *req, DBRequest::DBOperation oper, BgpAttrPtr attrs, uint32_t path_id, uint32_t flags, uint32_t label, uint32_t l3_label)
uint64_t subscription_gen_id() const
LifetimeActor * deleter()
virtual void set_routing_instance(RoutingInstance *rtinstance)
void PrependAsToAsPath4Byte(BgpAttr *attr, as_t asn) const
void RibOutDelete(const RibExportPolicy &policy)
RequestData(const BgpAttrPtr &attrs, uint32_t flags, uint32_t label, uint32_t l3_label, uint64_t subscription_gen_id)
virtual std::unique_ptr< DBEntry > AllocEntryStr(const std::string &key) const =0
void CreateAsPath4Byte(BgpAttr *attr, as_t local_as) const
void ProcessDefaultTunnelEncapsulation(const RibOut *ribout, ExtCommunityDB *extcomm_db, BgpAttr *attr) const
const NextHop & nexthop()
bool Has4ByteAsn(BgpAttr *attr) const
bool DeletePath(DBTablePartBase *root, BgpRoute *rt, BgpPath *path)
const uint64_t GetStalePathCount() const
virtual BgpAttrPtr GetAttributes(BgpRoute *rt, BgpAttrPtr attrp, const IPeer *peer)
void set_attrs(BgpAttrPtr attrs)
PathResolver * path_resolver_
PathResolver * path_resolver()
const uint64_t GetSecondaryPathCount() const