5 #ifndef SRC_BGP_ROUTING_INSTANCE_ROUTING_INSTANCE_H_
6 #define SRC_BGP_ROUTING_INSTANCE_ROUTING_INSTANCE_H_
9 #include <boost/asio/ip/tcp.hpp>
10 #include <boost/dynamic_bitset.hpp>
11 #include <boost/intrusive_ptr.hpp>
12 #include <boost/iterator/iterator_facade.hpp>
13 #include <boost/scoped_ptr.hpp>
14 #include <tbb/mutex.h>
15 #include <tbb/spin_rw_mutex.h>
30 #include "sandesh/sandesh_trace.h"
44 class RoutingInstanceInfo;
45 class RoutingInstanceStatsData;
46 class RoutingTableStats;
47 class BgpNeighborResp;
84 static std::string
GetTableName(std::string instance_name,
213 void AddRouteTarget(
bool import, std::vector<std::string> *change_list,
214 RouteTargetList::const_iterator it);
216 RouteTargetList::iterator it);
230 std::unique_ptr<RouteDistinguisher>
rd_;
285 typedef std::map<std::string, SandeshTraceBufferPtr>
297 typedef std::map<std::string, MvpnManagerNetworks>
388 const std::string &instance_name);
390 const std::string &instance_name);
425 const std::map<std::string, RoutingTableStats> &stats_map,
426 RoutingInstanceStatsData *instance_info)
const;
459 #endif // SRC_BGP_ROUTING_INSTANCE_ROUTING_INSTANCE_H_
RoutingInstanceList::iterator name_iterator
void DisableInstanceConfigListProcessing()
BgpTable * VrfTableCreate(Address::Family vrf_family, Address::Family vpn_family)
const RoutingInstance * GetInstanceByTarget(const RouteTarget &target) const
InstanceTargetMap target_map_
void AddTable(BgpTable *tbl)
void increment_deleted_count()
RoutingInstance(std::string name, BgpServer *server, RoutingInstanceMgr *mgr, const BgpInstanceConfig *config)
const BgpInstanceConfig * config_
MvpnProjectManagerNetworks mvpn_project_managers_
size_t GetRoutingInstanceActiveTraceBufSize() const
size_t GetRoutingInstanceDormantTraceBufSize() const
RoutingInstanceTraceBufferMap trace_buffer_dormant_
const RouteTargetList & GetImportList() const
RoutingInstance * default_rtinstance_
virtual ~RoutingInstance()
bool ProcessNeighborConfigList()
BgpTable * GetTable(Address::Family fmly)
void UpdateAllStaticRoutes()
int RegisterInstanceOpCallback(RoutingInstanceCb cb)
const RouteDistinguisher * GetRD() const
static std::string GetTableName(std::string instance_name, Address::Family fmly)
const RouteTargetList & GetExportList() const
PeerManager * peer_manager()
void DisableTraceBuffer(const std::string &name)
void FlushRouteAggregationConfig()
RoutingInstance * GetRoutingInstance(const std::string &name)
boost::scoped_ptr< TaskTrigger > neighbor_config_trigger_
std::vector< RoutingInstanceCb > InstanceOpListenersList
void DeleteRTargetRoute(as_t asn, const RouteTarget &rtarget)
void UpdateConfig(const BgpInstanceConfig *config)
int virtual_network_index() const
std::list< std::string > RoutingInstanceTraceBufferList
void EnableNeighborConfigListProcessing()
const BgpServer * server() const
SandeshTraceBufferPtr GetDormantTraceBuffer(const std::string &name) const
RoutingInstanceList instances_
IRouteAggregator * LocateRouteAggregator(Address::Family family)
boost::scoped_ptr< IRouteAggregator > inet6_route_aggregator_
name_iterator name_begin()
LifetimeActor * deleter()
const PeerManager * peer_manager() const
void DestroyRouteAggregator(Address::Family family)
boost::scoped_ptr< IRouteAggregator > inet_route_aggregator_
void FlushStaticRouteConfig()
uint32_t deleted_count() const
BgpTable * RTargetTableCreate()
const_name_iterator name_cend()
virtual void DeleteRoutingInstance(const std::string &name)
void InstanceVnIndexRemove(const RoutingInstance *rti)
void IdentifierUpdateCallback(Ip4Address old_identifier)
void set_mvpn_project_manager_network(std::string network)
void ProcessRoutingPolicyConfig()
void InitAllRTargetRoutes(as_t asn)
static std::string GetPrimaryRoutingInstanceName(const string &name_in)
RoutingInstanceIterator end()
std::map< std::string, std::set< std::string > > VirtualNetworksMap
std::string virtual_network_
void NotifyInstanceOp(std::string name, Operation deleted)
std::multimap< RouteTarget, RoutingInstance * > InstanceTargetMap
const std::string & name() const
void UpdateRouteAggregationConfig()
int GetVnIndexByExtCommunity(const ExtCommunity *community) const
RoutingInstance * GetDefaultRoutingInstance()
boost::scoped_ptr< IStaticRouteMgr > inet_static_route_mgr_
void AddRouteTarget(bool import, std::vector< std::string > *change_list, RouteTargetList::const_iterator it)
LifetimeRef< RoutingInstanceMgr > server_delete_ref_
const_name_iterator name_cbegin()
RoutingPolicyAttachList * routing_policies()
RoutingInstanceInfo GetDataCollection(const char *operation)
boost::scoped_ptr< PeerManager > peer_manager_
size_t GetRoutingInstanceDormantTraceBufferCapacity() const
int GetVnIndexByRouteTarget(const RouteTarget &rtarget) const
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
SandeshTraceBufferPtr LocateTraceBuffer(const std::string &name)
std::string & mvpn_project_manager_network()
void ProcessServiceChainConfig()
RouteTableFamilyList vrf_tables_by_family_
const std::string & mvpn_project_manager_network() const
boost::dynamic_bitset bmap_
boost::scoped_ptr< DeleteActor > deleter_
RoutingInstanceTraceBufferMap trace_buffer_active_
friend class BgpConfigTest
RouteTableList & GetTables()
bool virtual_network_allow_transit() const
size_t GetEnvRoutingInstanceDormantTraceBufferThreshold() const
void CreateRoutingInstanceNeighbors(const BgpInstanceConfig *config)
void DeleteRouteTarget(bool import, std::vector< std::string > *change_list, RouteTargetList::iterator it)
std::string mvpn_project_manager_network_
std::set< std::string > RoutingInstanceConfigList
void DestroyDBTable(DBTable *table)
bool IsAggregateRoute(const BgpTable *table, const BgpRoute *route) const
IRouteAggregator * route_aggregator(Address::Family family) const
RoutingInstance * CreateRoutingInstance(const BgpInstanceConfig *config)
int identifier_listener_id_
void DisableNeighborConfigListProcessing()
void DeleteMvpnRTargetRoute(as_t old_asn, Ip4Address old_ip)
bool virtual_network_pbb_evpn_enable_
bool ProcessInstanceConfigList(int idx)
void UpdateStaticRouteConfig()
void DestroyRoutingInstance(RoutingInstance *rtinstance)
size_t trace_buf_threshold_
friend class RoutingInstanceMgrTest
void UpdateRoutingPolicyConfig()
tbb::spin_rw_mutex rw_mutex_
boost::scoped_ptr< DeleteActor > deleter_
uint32_t SendTableStatsUve()
MvpnProjectManagerNetworks & mvpn_project_managers()
boost::function< void(std::string, int)> RoutingInstanceCb
size_t peer_manager_size() const
LifetimeRef< RoutingInstance > manager_delete_ref_
SandeshTraceBufferPtr trace_buffer() const
bool virtual_network_allow_transit_
void EnableInstanceConfigListProcessing()
bool IsContributingRoute(const BgpTable *table, const BgpRoute *route) const
VirtualNetworksMap virtual_networks_
bool HasRoutingInstanceActiveTraceBuf(const std::string &name) const
RoutingInstanceList::const_iterator const_name_iterator
const_name_iterator name_clower_bound(const std::string &name)
bool HasExportTarget(const ExtCommunity *extcomm) const
const BgpInstanceConfig * config() const
RoutingInstance * GetRoutingInstanceLocked(const std::string &name)
void ProcessStaticRouteConfig()
void InsertRoutingInstance(RoutingInstance *rtinstance)
void InstanceTargetAdd(RoutingInstance *rti)
const RoutingPolicyAttachList & routing_policies() const
BgpTable * VpnTableCreate(Address::Family vpn_family)
void LocateRoutingInstance(const BgpInstanceConfig *config)
void AddRTargetRoute(as_t asn, const RouteTarget &rtarget)
bool ProcessRoutingPolicy(const BgpRoute *route, BgpPath *path) const
std::multimap< int, RoutingInstance * > VnIndexMap
LifetimeActor * deleter()
const BgpServer * server() const
void UnregisterInstanceOpCallback(int id)
boost::asio::ip::address_v4 Ip4Address
std::vector< TaskTrigger * > instance_config_triggers_
std::map< std::string, BgpTable * > RouteTableList
static std::string GetVrfFromTableName(const std::string table)
virtual ~RoutingInstanceMgr()
InstanceOpListenersList callbacks_
void TableDeleteComplete(BgpTable *table)
int virtual_network_index_
const RoutingInstanceMgr * manager() const
bool virtual_network_pbb_evpn_enable() const
bool DeleteVirtualNetworkMapping(const std::string &virtual_network, const std::string &instance_name)
bool IsMasterRoutingInstance() const
RoutingPolicyAttachList routing_policies_
size_t dormant_trace_buf_size_
const RoutingInstance * GetInstanceByVnIndex(int vn_index) const
void ClearFamilyRouteTarget(Address::Family vrf_family, Address::Family vpn_family)
name_iterator name_lower_bound(const std::string &name)
RoutingInstanceConfigList neighbor_config_list_
std::list< RoutingPolicyInfo > RoutingPolicyAttachList
IStaticRouteMgr * static_route_mgr(Address::Family family)
bool CreateVirtualNetworkMapping(const std::string &virtual_network, const std::string &instance_name)
int GetOriginVnForAggregateRoute(Address::Family family) const
void ProcessIdentifierUpdate(as_t asn)
std::string GetVirtualNetworkByVnIndex(int vn_index) const
std::map< std::string, RoutingInstance * > RoutingInstanceList
bool IsServiceChainRoute(const BgpRoute *route) const
const std::string GetVirtualNetworkName() const
RoutingInstanceMgr * mgr_
bool HasRoutingInstanceDormantTraceBuf(const std::string &name) const
size_t GetMvpnProjectManagerCount(const std::string &network) const
std::set< std::string > MvpnManagerNetworks
RoutingInstanceMgr(BgpServer *server)
const MvpnProjectManagerNetworks & mvpn_project_managers() const
RoutingInstanceIterator begin()
IStaticRouteMgr * LocateStaticRouteMgr(Address::Family family)
size_t GetRoutingInstanceDormantTraceBufferThreshold() const
boost::intrusive_ptr< RoutingPolicy > RoutingPolicyPtr
RouteTableList vrf_tables_by_name_
RoutingInstanceTraceBufferList trace_buffer_dormant_list_
const RouteTableList & GetTables() const
std::map< std::string, MvpnManagerNetworks > MvpnProjectManagerNetworks
void FlushAllRTargetRoutes(as_t asn)
void InstanceVnIndexAdd(RoutingInstance *rti)
RoutingInstanceMgr * manager()
void TriggerTableDelete(BgpTable *table)
void decrement_deleted_count()
boost::scoped_ptr< IStaticRouteMgr > inet6_static_route_mgr_
std::map< Address::Family, BgpTable * > RouteTableFamilyList
void AddMvpnRTargetRoute(as_t asn)
PeerManager * LocatePeerManager()
std::set< RouteTarget > RouteTargetList
bool always_subscribe() const
void ASNUpdateCallback(as_t old_asn, as_t old_local_asn)
SandeshTraceBufferPtr trace_buffer_
void AddRoutingPolicy(RoutingPolicyPtr policy)
void SetTableStatsUve(Address::Family family, const std::map< std::string, RoutingTableStats > &stats_map, RoutingInstanceStatsData *instance_info) const
RoutingInstanceList::iterator RoutingInstanceIterator
SandeshTraceBufferPtr GetActiveTraceBuffer(const std::string &name) const
void ProcessRouteAggregationConfig()
SandeshTraceBufferPtr GetTraceBuffer(const std::string &name)
void UpdateRoutingInstance(RoutingInstance *rtinstance, const BgpInstanceConfig *config)
size_t GetEnvRoutingInstanceDormantTraceBufferCapacity() const
void set_index(int index)
std::vector< RoutingInstanceConfigList > instance_config_lists_
void RemoveTable(BgpTable *tbl)
std::unique_ptr< RouteDistinguisher > rd_
std::map< std::string, SandeshTraceBufferPtr > RoutingInstanceTraceBufferMap
void InstanceTargetRemove(const RoutingInstance *rti)