OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RoutingInstanceMgr Class Reference

#include <routing_instance.h>

Collaboration diagram for RoutingInstanceMgr:

Classes

class  DeleteActor
 

Public Types

enum  Operation { INSTANCE_ADD = 1, INSTANCE_UPDATE = 2, INSTANCE_DELETE = 3 }
 
typedef std::set< std::string > RoutingInstanceConfigList
 
typedef std::map< std::string,
RoutingInstance * > 
RoutingInstanceList
 
typedef std::map< std::string,
SandeshTraceBufferPtr
RoutingInstanceTraceBufferMap
 
typedef std::list< std::string > RoutingInstanceTraceBufferList
 
typedef
RoutingInstanceList::iterator 
name_iterator
 
typedef
RoutingInstanceList::const_iterator 
const_name_iterator
 
typedef
RoutingInstanceList::iterator 
RoutingInstanceIterator
 
typedef std::multimap
< RouteTarget, RoutingInstance * > 
InstanceTargetMap
 
typedef std::multimap< int,
RoutingInstance * > 
VnIndexMap
 
typedef boost::function< void(std::string,
int)> 
RoutingInstanceCb
 
typedef std::vector
< RoutingInstanceCb
InstanceOpListenersList
 
typedef std::set< std::string > MvpnManagerNetworks
 
typedef std::map< std::string,
MvpnManagerNetworks
MvpnProjectManagerNetworks
 

Public Member Functions

 RoutingInstanceMgr (BgpServer *server)
 
virtual ~RoutingInstanceMgr ()
 
RoutingInstanceIterator begin ()
 
RoutingInstanceIterator end ()
 
name_iterator name_begin ()
 
name_iterator name_end ()
 
name_iterator name_lower_bound (const std::string &name)
 
const_name_iterator name_cbegin ()
 
const_name_iterator name_cend ()
 
const_name_iterator name_clower_bound (const std::string &name)
 
int RegisterInstanceOpCallback (RoutingInstanceCb cb)
 
void NotifyInstanceOp (std::string name, Operation deleted)
 
void UnregisterInstanceOpCallback (int id)
 
const RoutingInstanceGetInstanceByTarget (const RouteTarget &target) const
 
std::string GetVirtualNetworkByVnIndex (int vn_index) const
 
int GetVnIndexByExtCommunity (const ExtCommunity *community) const
 
RoutingInstanceGetDefaultRoutingInstance ()
 
const RoutingInstanceGetDefaultRoutingInstance () const
 
RoutingInstanceGetRoutingInstance (const std::string &name)
 
const RoutingInstanceGetRoutingInstance (const std::string &name) const
 
RoutingInstanceGetRoutingInstanceLocked (const std::string &name)
 
void InsertRoutingInstance (RoutingInstance *rtinstance)
 
void LocateRoutingInstance (const BgpInstanceConfig *config)
 
void LocateRoutingInstance (const std::string &name)
 
RoutingInstanceCreateRoutingInstance (const BgpInstanceConfig *config)
 
void UpdateRoutingInstance (RoutingInstance *rtinstance, const BgpInstanceConfig *config)
 
virtual void DeleteRoutingInstance (const std::string &name)
 
void DestroyRoutingInstance (RoutingInstance *rtinstance)
 
SandeshTraceBufferPtr LocateTraceBuffer (const std::string &name)
 
SandeshTraceBufferPtr GetTraceBuffer (const std::string &name)
 
void DisableTraceBuffer (const std::string &name)
 
bool HasRoutingInstanceActiveTraceBuf (const std::string &name) const
 
bool HasRoutingInstanceDormantTraceBuf (const std::string &name) const
 
SandeshTraceBufferPtr GetActiveTraceBuffer (const std::string &name) const
 
SandeshTraceBufferPtr GetDormantTraceBuffer (const std::string &name) const
 
size_t GetRoutingInstanceActiveTraceBufSize () const
 
size_t GetRoutingInstanceDormantTraceBufSize () const
 
size_t GetEnvRoutingInstanceDormantTraceBufferCapacity () const
 
size_t GetEnvRoutingInstanceDormantTraceBufferThreshold () const
 
size_t GetRoutingInstanceDormantTraceBufferCapacity () const
 
size_t GetRoutingInstanceDormantTraceBufferThreshold () const
 
bool deleted ()
 
bool MayDelete () const
 
void ManagedDelete ()
 
void Shutdown ()
 
void CreateRoutingInstanceNeighbors (const BgpInstanceConfig *config)
 
size_t count () const
 
BgpServerserver ()
 
const BgpServerserver () const
 
LifetimeActordeleter ()
 
tbb::mutex & mutex ()
 
uint32_t deleted_count () const
 
void increment_deleted_count ()
 
void decrement_deleted_count ()
 
bool CreateVirtualNetworkMapping (const std::string &virtual_network, const std::string &instance_name)
 
bool DeleteVirtualNetworkMapping (const std::string &virtual_network, const std::string &instance_name)
 
uint32_t SendTableStatsUve ()
 
const MvpnProjectManagerNetworksmvpn_project_managers () const
 
MvpnProjectManagerNetworksmvpn_project_managers ()
 
size_t GetMvpnProjectManagerCount (const std::string &network) const
 

Static Public Member Functions

static std::string GetPrimaryRoutingInstanceName (const string &name_in)
 

Private Types

typedef std::map< std::string,
std::set< std::string > > 
VirtualNetworksMap
 

Private Member Functions

bool ProcessInstanceConfigList (int idx)
 
bool ProcessNeighborConfigList ()
 
void InstanceTargetAdd (RoutingInstance *rti)
 
void InstanceTargetRemove (const RoutingInstance *rti)
 
void InstanceVnIndexAdd (RoutingInstance *rti)
 
void InstanceVnIndexRemove (const RoutingInstance *rti)
 
const RoutingInstanceGetInstanceByVnIndex (int vn_index) const
 
int GetVnIndexByRouteTarget (const RouteTarget &rtarget) const
 
void ASNUpdateCallback (as_t old_asn, as_t old_local_asn)
 
void IdentifierUpdateCallback (Ip4Address old_identifier)
 
void DisableInstanceConfigListProcessing ()
 
void EnableInstanceConfigListProcessing ()
 
void DisableNeighborConfigListProcessing ()
 
void EnableNeighborConfigListProcessing ()
 
void SetTableStatsUve (Address::Family family, const std::map< std::string, RoutingTableStats > &stats_map, RoutingInstanceStatsData *instance_info) const
 

Private Attributes

BgpServerserver_
 
tbb::mutex mutex_
 
tbb::spin_rw_mutex rw_mutex_
 
std::vector
< RoutingInstanceConfigList
instance_config_lists_
 
std::vector< TaskTrigger * > instance_config_triggers_
 
RoutingInstanceConfigList neighbor_config_list_
 
boost::scoped_ptr< TaskTriggerneighbor_config_trigger_
 
RoutingInstancedefault_rtinstance_
 
RoutingInstanceList instances_
 
RoutingInstanceTraceBufferMap trace_buffer_active_
 
RoutingInstanceTraceBufferMap trace_buffer_dormant_
 
RoutingInstanceTraceBufferList trace_buffer_dormant_list_
 
InstanceTargetMap target_map_
 
VnIndexMap vn_index_map_
 
uint32_t deleted_count_
 
int asn_listener_id_
 
int identifier_listener_id_
 
size_t dormant_trace_buf_size_
 
size_t trace_buf_threshold_
 
boost::scoped_ptr< DeleteActordeleter_
 
LifetimeRef< RoutingInstanceMgrserver_delete_ref_
 
boost::dynamic_bitset bmap_
 
InstanceOpListenersList callbacks_
 
VirtualNetworksMap virtual_networks_
 
MvpnProjectManagerNetworks mvpn_project_managers_
 

Friends

class BgpConfigTest
 
class RoutingInstanceMgrTest
 

Detailed Description

Definition at line 281 of file routing_instance.h.

Member Typedef Documentation

typedef RoutingInstanceList::const_iterator RoutingInstanceMgr::const_name_iterator

Definition at line 289 of file routing_instance.h.

Definition at line 295 of file routing_instance.h.

Definition at line 291 of file routing_instance.h.

typedef std::set<std::string> RoutingInstanceMgr::MvpnManagerNetworks

Definition at line 296 of file routing_instance.h.

Definition at line 298 of file routing_instance.h.

typedef RoutingInstanceList::iterator RoutingInstanceMgr::name_iterator

Definition at line 288 of file routing_instance.h.

typedef boost::function<void(std::string, int)> RoutingInstanceMgr::RoutingInstanceCb

Definition at line 294 of file routing_instance.h.

typedef std::set<std::string> RoutingInstanceMgr::RoutingInstanceConfigList

Definition at line 283 of file routing_instance.h.

typedef RoutingInstanceList::iterator RoutingInstanceMgr::RoutingInstanceIterator

Definition at line 290 of file routing_instance.h.

typedef std::map<std::string, RoutingInstance *> RoutingInstanceMgr::RoutingInstanceList

Definition at line 284 of file routing_instance.h.

Definition at line 287 of file routing_instance.h.

Definition at line 286 of file routing_instance.h.

typedef std::map<std::string, std::set<std::string> > RoutingInstanceMgr::VirtualNetworksMap
private

Definition at line 453 of file routing_instance.h.

typedef std::multimap<int, RoutingInstance *> RoutingInstanceMgr::VnIndexMap

Definition at line 292 of file routing_instance.h.

Member Enumeration Documentation

Enumerator
INSTANCE_ADD 
INSTANCE_UPDATE 
INSTANCE_DELETE 

Definition at line 300 of file routing_instance.h.

Constructor & Destructor Documentation

RoutingInstanceMgr::RoutingInstanceMgr ( BgpServer server)
explicit

Definition at line 64 of file routing_instance.cc.

Here is the call graph for this function:

RoutingInstanceMgr::~RoutingInstanceMgr ( )
virtual

Definition at line 93 of file routing_instance.cc.

Here is the call graph for this function:

Member Function Documentation

void RoutingInstanceMgr::ASNUpdateCallback ( as_t  old_asn,
as_t  old_local_asn 
)
private

Definition at line 906 of file routing_instance.cc.

Here is the call graph for this function:

RoutingInstanceIterator RoutingInstanceMgr::begin ( )
inline

Definition at line 309 of file routing_instance.h.

size_t RoutingInstanceMgr::count ( ) const
inline

Definition at line 377 of file routing_instance.h.

RoutingInstance * RoutingInstanceMgr::CreateRoutingInstance ( const BgpInstanceConfig config)

Definition at line 564 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::CreateRoutingInstanceNeighbors ( const BgpInstanceConfig config)

Definition at line 881 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstanceMgr::CreateVirtualNetworkMapping ( const std::string &  virtual_network,
const std::string &  instance_name 
)

Definition at line 430 of file routing_instance.cc.

void RoutingInstanceMgr::decrement_deleted_count ( )
inline

Definition at line 385 of file routing_instance.h.

bool RoutingInstanceMgr::deleted ( )

Definition at line 138 of file routing_instance.cc.

Here is the call graph for this function:

uint32_t RoutingInstanceMgr::deleted_count ( ) const
inline

Definition at line 383 of file routing_instance.h.

LifetimeActor * RoutingInstanceMgr::deleter ( )

Definition at line 134 of file routing_instance.cc.

void RoutingInstanceMgr::DeleteRoutingInstance ( const std::string &  name)
virtual

Definition at line 644 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstanceMgr::DeleteVirtualNetworkMapping ( const std::string &  virtual_network,
const std::string &  instance_name 
)

Definition at line 442 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::DestroyRoutingInstance ( RoutingInstance rtinstance)

Definition at line 681 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::DisableInstanceConfigListProcessing ( )
private

Definition at line 933 of file routing_instance.cc.

void RoutingInstanceMgr::DisableNeighborConfigListProcessing ( )
private

Definition at line 953 of file routing_instance.cc.

void RoutingInstanceMgr::DisableTraceBuffer ( const std::string &  name)

Definition at line 761 of file routing_instance.cc.

void RoutingInstanceMgr::EnableInstanceConfigListProcessing ( )
private

Definition at line 943 of file routing_instance.cc.

void RoutingInstanceMgr::EnableNeighborConfigListProcessing ( )
private

Definition at line 961 of file routing_instance.cc.

RoutingInstanceIterator RoutingInstanceMgr::end ( )
inline

Definition at line 313 of file routing_instance.h.

SandeshTraceBufferPtr RoutingInstanceMgr::GetActiveTraceBuffer ( const std::string &  name) const

Definition at line 806 of file routing_instance.cc.

RoutingInstance * RoutingInstanceMgr::GetDefaultRoutingInstance ( )

Definition at line 359 of file routing_instance.cc.

const RoutingInstance * RoutingInstanceMgr::GetDefaultRoutingInstance ( ) const

Definition at line 363 of file routing_instance.cc.

SandeshTraceBufferPtr RoutingInstanceMgr::GetDormantTraceBuffer ( const std::string &  name) const

Definition at line 819 of file routing_instance.cc.

size_t RoutingInstanceMgr::GetEnvRoutingInstanceDormantTraceBufferCapacity ( ) const

Definition at line 849 of file routing_instance.cc.

size_t RoutingInstanceMgr::GetEnvRoutingInstanceDormantTraceBufferThreshold ( ) const

Definition at line 861 of file routing_instance.cc.

const RoutingInstance * RoutingInstanceMgr::GetInstanceByTarget ( const RouteTarget target) const

Definition at line 188 of file routing_instance.cc.

const RoutingInstance * RoutingInstanceMgr::GetInstanceByVnIndex ( int  vn_index) const
private

Definition at line 229 of file routing_instance.cc.

size_t RoutingInstanceMgr::GetMvpnProjectManagerCount ( const std::string &  network) const

Definition at line 102 of file routing_instance.cc.

string RoutingInstanceMgr::GetPrimaryRoutingInstanceName ( const string &  name_in)
static

Definition at line 2025 of file routing_instance.cc.

RoutingInstance* RoutingInstanceMgr::GetRoutingInstance ( const std::string &  name)
const RoutingInstance* RoutingInstanceMgr::GetRoutingInstance ( const std::string &  name) const
size_t RoutingInstanceMgr::GetRoutingInstanceActiveTraceBufSize ( ) const

Definition at line 871 of file routing_instance.cc.

size_t RoutingInstanceMgr::GetRoutingInstanceDormantTraceBufferCapacity ( ) const
inline

Definition at line 363 of file routing_instance.h.

size_t RoutingInstanceMgr::GetRoutingInstanceDormantTraceBufferThreshold ( ) const
inline

Definition at line 366 of file routing_instance.h.

size_t RoutingInstanceMgr::GetRoutingInstanceDormantTraceBufSize ( ) const

Definition at line 876 of file routing_instance.cc.

RoutingInstance * RoutingInstanceMgr::GetRoutingInstanceLocked ( const std::string &  name)

Definition at line 382 of file routing_instance.cc.

SandeshTraceBufferPtr RoutingInstanceMgr::GetTraceBuffer ( const std::string &  name)

Definition at line 731 of file routing_instance.cc.

Here is the call graph for this function:

string RoutingInstanceMgr::GetVirtualNetworkByVnIndex ( int  vn_index) const

Definition at line 240 of file routing_instance.cc.

Here is the call graph for this function:

int RoutingInstanceMgr::GetVnIndexByExtCommunity ( const ExtCommunity community) const

Definition at line 274 of file routing_instance.cc.

Here is the call graph for this function:

int RoutingInstanceMgr::GetVnIndexByRouteTarget ( const RouteTarget rtarget) const
private

Definition at line 253 of file routing_instance.cc.

bool RoutingInstanceMgr::HasRoutingInstanceActiveTraceBuf ( const std::string &  name) const

Definition at line 831 of file routing_instance.cc.

bool RoutingInstanceMgr::HasRoutingInstanceDormantTraceBuf ( const std::string &  name) const

Definition at line 840 of file routing_instance.cc.

void RoutingInstanceMgr::IdentifierUpdateCallback ( Ip4Address  old_identifier)
private

Definition at line 919 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::increment_deleted_count ( )
inline

Definition at line 384 of file routing_instance.h.

void RoutingInstanceMgr::InsertRoutingInstance ( RoutingInstance rtinstance)

Definition at line 391 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::InstanceTargetAdd ( RoutingInstance rti)
private

Definition at line 150 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::InstanceTargetRemove ( const RoutingInstance rti)
private

Definition at line 169 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::InstanceVnIndexAdd ( RoutingInstance rti)
private

Definition at line 200 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::InstanceVnIndexRemove ( const RoutingInstance rti)
private

Definition at line 211 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::LocateRoutingInstance ( const BgpInstanceConfig config)

Definition at line 397 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::LocateRoutingInstance ( const std::string &  name)
SandeshTraceBufferPtr RoutingInstanceMgr::LocateTraceBuffer ( const std::string &  name)

Definition at line 719 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::ManagedDelete ( )

Definition at line 113 of file routing_instance.cc.

bool RoutingInstanceMgr::MayDelete ( ) const

Definition at line 124 of file routing_instance.cc.

tbb::mutex& RoutingInstanceMgr::mutex ( )
inline

Definition at line 381 of file routing_instance.h.

const MvpnProjectManagerNetworks& RoutingInstanceMgr::mvpn_project_managers ( ) const
inline

Definition at line 392 of file routing_instance.h.

MvpnProjectManagerNetworks& RoutingInstanceMgr::mvpn_project_managers ( )
inline

Definition at line 395 of file routing_instance.h.

name_iterator RoutingInstanceMgr::name_begin ( )
inline

Definition at line 317 of file routing_instance.h.

const_name_iterator RoutingInstanceMgr::name_cbegin ( )
inline

Definition at line 322 of file routing_instance.h.

const_name_iterator RoutingInstanceMgr::name_cend ( )
inline

Definition at line 323 of file routing_instance.h.

const_name_iterator RoutingInstanceMgr::name_clower_bound ( const std::string &  name)
inline

Definition at line 324 of file routing_instance.h.

name_iterator RoutingInstanceMgr::name_end ( )
inline

Definition at line 318 of file routing_instance.h.

name_iterator RoutingInstanceMgr::name_lower_bound ( const std::string &  name)
inline

Definition at line 319 of file routing_instance.h.

void RoutingInstanceMgr::NotifyInstanceOp ( std::string  name,
Operation  deleted 
)

Definition at line 331 of file routing_instance.cc.

bool RoutingInstanceMgr::ProcessInstanceConfigList ( int  idx)
private

Definition at line 342 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstanceMgr::ProcessNeighborConfigList ( )
private

Definition at line 890 of file routing_instance.cc.

Here is the call graph for this function:

int RoutingInstanceMgr::RegisterInstanceOpCallback ( RoutingInstanceCb  cb)

Definition at line 297 of file routing_instance.cc.

uint32_t RoutingInstanceMgr::SendTableStatsUve ( )

Definition at line 521 of file routing_instance.cc.

Here is the call graph for this function:

BgpServer* RoutingInstanceMgr::server ( )
inline

Definition at line 378 of file routing_instance.h.

const BgpServer* RoutingInstanceMgr::server ( ) const
inline

Definition at line 379 of file routing_instance.h.

void RoutingInstanceMgr::SetTableStatsUve ( Address::Family  family,
const std::map< std::string, RoutingTableStats > &  stats_map,
RoutingInstanceStatsData *  instance_info 
) const
private

Definition at line 483 of file routing_instance.cc.

void RoutingInstanceMgr::Shutdown ( )

Definition at line 117 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstanceMgr::UnregisterInstanceOpCallback ( int  id)

Definition at line 313 of file routing_instance.cc.

void RoutingInstanceMgr::UpdateRoutingInstance ( RoutingInstance rtinstance,
const BgpInstanceConfig config 
)

Definition at line 607 of file routing_instance.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class BgpConfigTest
friend

Definition at line 402 of file routing_instance.h.

friend class RoutingInstanceMgrTest
friend

Definition at line 403 of file routing_instance.h.

Member Data Documentation

int RoutingInstanceMgr::asn_listener_id_
private

Definition at line 443 of file routing_instance.h.

boost::dynamic_bitset RoutingInstanceMgr::bmap_
private

Definition at line 449 of file routing_instance.h.

InstanceOpListenersList RoutingInstanceMgr::callbacks_
private

Definition at line 450 of file routing_instance.h.

RoutingInstance* RoutingInstanceMgr::default_rtinstance_
private

Definition at line 435 of file routing_instance.h.

uint32_t RoutingInstanceMgr::deleted_count_
private

Definition at line 442 of file routing_instance.h.

boost::scoped_ptr<DeleteActor> RoutingInstanceMgr::deleter_
private

Definition at line 447 of file routing_instance.h.

size_t RoutingInstanceMgr::dormant_trace_buf_size_
private

Definition at line 445 of file routing_instance.h.

int RoutingInstanceMgr::identifier_listener_id_
private

Definition at line 444 of file routing_instance.h.

std::vector<RoutingInstanceConfigList> RoutingInstanceMgr::instance_config_lists_
private

Definition at line 431 of file routing_instance.h.

std::vector<TaskTrigger *> RoutingInstanceMgr::instance_config_triggers_
private

Definition at line 432 of file routing_instance.h.

RoutingInstanceList RoutingInstanceMgr::instances_
private

Definition at line 436 of file routing_instance.h.

tbb::mutex RoutingInstanceMgr::mutex_
mutableprivate

Definition at line 429 of file routing_instance.h.

MvpnProjectManagerNetworks RoutingInstanceMgr::mvpn_project_managers_
private

Definition at line 456 of file routing_instance.h.

RoutingInstanceConfigList RoutingInstanceMgr::neighbor_config_list_
private

Definition at line 433 of file routing_instance.h.

boost::scoped_ptr<TaskTrigger> RoutingInstanceMgr::neighbor_config_trigger_
private

Definition at line 434 of file routing_instance.h.

tbb::spin_rw_mutex RoutingInstanceMgr::rw_mutex_
mutableprivate

Definition at line 430 of file routing_instance.h.

BgpServer* RoutingInstanceMgr::server_
private

Definition at line 428 of file routing_instance.h.

LifetimeRef<RoutingInstanceMgr> RoutingInstanceMgr::server_delete_ref_
private

Definition at line 448 of file routing_instance.h.

InstanceTargetMap RoutingInstanceMgr::target_map_
private

Definition at line 440 of file routing_instance.h.

size_t RoutingInstanceMgr::trace_buf_threshold_
private

Definition at line 446 of file routing_instance.h.

RoutingInstanceTraceBufferMap RoutingInstanceMgr::trace_buffer_active_
private

Definition at line 437 of file routing_instance.h.

RoutingInstanceTraceBufferMap RoutingInstanceMgr::trace_buffer_dormant_
private

Definition at line 438 of file routing_instance.h.

RoutingInstanceTraceBufferList RoutingInstanceMgr::trace_buffer_dormant_list_
private

Definition at line 439 of file routing_instance.h.

VirtualNetworksMap RoutingInstanceMgr::virtual_networks_
private

Definition at line 454 of file routing_instance.h.

VnIndexMap RoutingInstanceMgr::vn_index_map_
private

Definition at line 441 of file routing_instance.h.


The documentation for this class was generated from the following files: