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

#include <routing_instance.h>

Collaboration diagram for RoutingInstance:

Classes

class  DeleteActor
 

Public Types

typedef std::set< RouteTargetRouteTargetList
 
typedef std::map< std::string,
BgpTable * > 
RouteTableList
 
typedef std::map
< Address::Family, BgpTable * > 
RouteTableFamilyList
 

Public Member Functions

 RoutingInstance (std::string name, BgpServer *server, RoutingInstanceMgr *mgr, const BgpInstanceConfig *config)
 
virtual ~RoutingInstance ()
 
RouteTableListGetTables ()
 
const RouteTableListGetTables () const
 
void ProcessRoutingPolicyConfig ()
 
void UpdateRoutingPolicyConfig ()
 
void ProcessServiceChainConfig ()
 
void ProcessStaticRouteConfig ()
 
void UpdateStaticRouteConfig ()
 
void FlushStaticRouteConfig ()
 
void UpdateAllStaticRoutes ()
 
void ProcessRouteAggregationConfig ()
 
void UpdateRouteAggregationConfig ()
 
void FlushRouteAggregationConfig ()
 
void ProcessConfig ()
 
void UpdateConfig (const BgpInstanceConfig *config)
 
void ClearConfig ()
 
BgpTableGetTable (Address::Family fmly)
 
const BgpTableGetTable (Address::Family fmly) const
 
void AddTable (BgpTable *tbl)
 
void RemoveTable (BgpTable *tbl)
 
const RouteTargetListGetImportList () const
 
const RouteTargetListGetExportList () const
 
bool HasExportTarget (const ExtCommunity *extcomm) const
 
const RouteDistinguisherGetRD () const
 
void TriggerTableDelete (BgpTable *table)
 
void TableDeleteComplete (BgpTable *table)
 
void DestroyDBTable (DBTable *table)
 
bool MayDelete () const
 
void ManagedDelete ()
 
LifetimeActordeleter ()
 
const LifetimeActordeleter () const
 
bool deleted () const
 
void set_index (int index)
 
int index () const
 
bool always_subscribe () const
 
bool IsMasterRoutingInstance () const
 
const std::string & name () const
 
const std::string GetVirtualNetworkName () const
 
const BgpInstanceConfigconfig () const
 
int virtual_network_index () const
 
bool virtual_network_allow_transit () const
 
bool virtual_network_pbb_evpn_enable () const
 
int vxlan_id () const
 
const RoutingInstanceMgrmanager () const
 
RoutingInstanceMgrmanager ()
 
RoutingInstanceInfo GetDataCollection (const char *operation)
 
BgpServerserver ()
 
const BgpServerserver () const
 
void ClearRouteTarget ()
 
void CreateNeighbors ()
 
IStaticRouteMgrstatic_route_mgr (Address::Family family)
 
IStaticRouteMgrLocateStaticRouteMgr (Address::Family family)
 
IRouteAggregatorroute_aggregator (Address::Family family) const
 
IRouteAggregatorLocateRouteAggregator (Address::Family family)
 
void DestroyRouteAggregator (Address::Family family)
 
size_t peer_manager_size () const
 
PeerManagerpeer_manager ()
 
const PeerManagerpeer_manager () const
 
PeerManagerLocatePeerManager ()
 
RoutingPolicyAttachListrouting_policies ()
 
const RoutingPolicyAttachListrouting_policies () const
 
SandeshTraceBufferPtr trace_buffer () const
 
void AddRoutingPolicy (RoutingPolicyPtr policy)
 
bool IsServiceChainRoute (const BgpRoute *route) const
 
bool ProcessRoutingPolicy (const BgpRoute *route, BgpPath *path) const
 
bool IsAggregateRoute (const BgpTable *table, const BgpRoute *route) const
 
bool IsContributingRoute (const BgpTable *table, const BgpRoute *route) const
 
int GetOriginVnForAggregateRoute (Address::Family family) const
 
const std::string & mvpn_project_manager_network () const
 
std::string & mvpn_project_manager_network ()
 
void set_mvpn_project_manager_network (std::string network)
 

Static Public Member Functions

static std::string GetTableName (std::string instance_name, Address::Family fmly)
 
static std::string GetVrfFromTableName (const std::string table)
 

Private Member Functions

void AddMvpnRTargetRoute (as_t asn)
 
void DeleteMvpnRTargetRoute (as_t old_asn, Ip4Address old_ip)
 
void AddRTargetRoute (as_t asn, const RouteTarget &rtarget)
 
void DeleteRTargetRoute (as_t asn, const RouteTarget &rtarget)
 
void InitAllRTargetRoutes (as_t asn)
 
void FlushAllRTargetRoutes (as_t asn)
 
void ProcessIdentifierUpdate (as_t asn)
 
void AddRouteTarget (bool import, std::vector< std::string > *change_list, RouteTargetList::const_iterator it)
 
void DeleteRouteTarget (bool import, std::vector< std::string > *change_list, RouteTargetList::iterator it)
 
void Shutdown ()
 
BgpTableVpnTableCreate (Address::Family vpn_family)
 
BgpTableRTargetTableCreate ()
 
BgpTableVrfTableCreate (Address::Family vrf_family, Address::Family vpn_family)
 
void ClearFamilyRouteTarget (Address::Family vrf_family, Address::Family vpn_family)
 

Private Attributes

std::string name_
 
int index_
 
std::unique_ptr
< RouteDistinguisher
rd_
 
RouteTableList vrf_tables_by_name_
 
RouteTableFamilyList vrf_tables_by_family_
 
RouteTargetList import_
 
RouteTargetList export_
 
BgpServerserver_
 
RoutingInstanceMgrmgr_
 
const BgpInstanceConfigconfig_
 
bool is_master_
 
bool always_subscribe_
 
std::string virtual_network_
 
int virtual_network_index_
 
bool virtual_network_allow_transit_
 
bool virtual_network_pbb_evpn_enable_
 
int vxlan_id_
 
SandeshTraceBufferPtr trace_buffer_
 
boost::scoped_ptr< DeleteActordeleter_
 
LifetimeRef< RoutingInstancemanager_delete_ref_
 
boost::scoped_ptr
< IStaticRouteMgr
inet_static_route_mgr_
 
boost::scoped_ptr
< IStaticRouteMgr
inet6_static_route_mgr_
 
boost::scoped_ptr
< IRouteAggregator
inet_route_aggregator_
 
boost::scoped_ptr
< IRouteAggregator
inet6_route_aggregator_
 
boost::scoped_ptr< PeerManagerpeer_manager_
 
std::string mvpn_project_manager_network_
 
RoutingPolicyAttachList routing_policies_
 

Friends

class RoutingInstanceMgr
 

Detailed Description

Definition at line 54 of file routing_instance.h.

Member Typedef Documentation

Definition at line 58 of file routing_instance.h.

typedef std::map<std::string, BgpTable *> RoutingInstance::RouteTableList

Definition at line 57 of file routing_instance.h.

Definition at line 56 of file routing_instance.h.

Constructor & Destructor Documentation

RoutingInstance::RoutingInstance ( std::string  name,
BgpServer server,
RoutingInstanceMgr mgr,
const BgpInstanceConfig config 
)

Definition at line 989 of file routing_instance.cc.

Here is the call graph for this function:

RoutingInstance::~RoutingInstance ( )
virtual

Definition at line 1006 of file routing_instance.cc.

Member Function Documentation

void RoutingInstance::AddMvpnRTargetRoute ( as_t  asn)
private

Definition at line 1189 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::AddRouteTarget ( bool  import,
std::vector< std::string > *  change_list,
RouteTargetList::const_iterator  it 
)
private

Definition at line 1585 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::AddRoutingPolicy ( RoutingPolicyPtr  policy)
void RoutingInstance::AddRTargetRoute ( as_t  asn,
const RouteTarget rtarget 
)
private

Definition at line 1489 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::AddTable ( BgpTable tbl)

Definition at line 1712 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::always_subscribe ( ) const
inline

Definition at line 115 of file routing_instance.h.

void RoutingInstance::ClearConfig ( )

Definition at line 1398 of file routing_instance.cc.

void RoutingInstance::ClearFamilyRouteTarget ( Address::Family  vrf_family,
Address::Family  vpn_family 
)
private

Definition at line 1475 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ClearRouteTarget ( )

Definition at line 1652 of file routing_instance.cc.

Here is the call graph for this function:

const BgpInstanceConfig* RoutingInstance::config ( ) const
inline

Definition at line 123 of file routing_instance.h.

void RoutingInstance::CreateNeighbors ( )

Definition at line 1009 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::deleted ( ) const

Definition at line 1444 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::DeleteMvpnRTargetRoute ( as_t  old_asn,
Ip4Address  old_ip 
)
private

Definition at line 1181 of file routing_instance.cc.

Here is the call graph for this function:

LifetimeActor * RoutingInstance::deleter ( )

Definition at line 1436 of file routing_instance.cc.

const LifetimeActor * RoutingInstance::deleter ( ) const

Definition at line 1440 of file routing_instance.cc.

void RoutingInstance::DeleteRouteTarget ( bool  import,
std::vector< std::string > *  change_list,
RouteTargetList::iterator  it 
)
private

Definition at line 1619 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::DeleteRTargetRoute ( as_t  asn,
const RouteTarget rtarget 
)
private

Definition at line 1528 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::DestroyDBTable ( DBTable table)

Definition at line 1734 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::DestroyRouteAggregator ( Address::Family  family)

Definition at line 1974 of file routing_instance.cc.

void RoutingInstance::FlushAllRTargetRoutes ( as_t  asn)
private

Definition at line 1569 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::FlushRouteAggregationConfig ( )

Definition at line 1169 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::FlushStaticRouteConfig ( )

Definition at line 1117 of file routing_instance.cc.

Here is the call graph for this function:

RoutingInstanceInfo RoutingInstance::GetDataCollection ( const char *  operation)

Definition at line 1809 of file routing_instance.cc.

Here is the call graph for this function:

const RouteTargetList& RoutingInstance::GetExportList ( ) const
inline

Definition at line 96 of file routing_instance.h.

const RouteTargetList& RoutingInstance::GetImportList ( ) const
inline

Definition at line 95 of file routing_instance.h.

int RoutingInstance::GetOriginVnForAggregateRoute ( Address::Family  family) const

Definition at line 1996 of file routing_instance.cc.

Here is the call graph for this function:

const RouteDistinguisher* RoutingInstance::GetRD ( ) const
inline

Definition at line 99 of file routing_instance.h.

BgpTable * RoutingInstance::GetTable ( Address::Family  fmly)

Definition at line 1770 of file routing_instance.cc.

const BgpTable * RoutingInstance::GetTable ( Address::Family  fmly) const

Definition at line 1775 of file routing_instance.cc.

string RoutingInstance::GetTableName ( std::string  instance_name,
Address::Family  fmly 
)
static

Definition at line 1752 of file routing_instance.cc.

Here is the call graph for this function:

RouteTableList& RoutingInstance::GetTables ( )
inline

Definition at line 65 of file routing_instance.h.

const RouteTableList& RoutingInstance::GetTables ( ) const
inline

Definition at line 66 of file routing_instance.h.

const string RoutingInstance::GetVirtualNetworkName ( ) const

Definition at line 1448 of file routing_instance.cc.

string RoutingInstance::GetVrfFromTableName ( const std::string  table)
static

Definition at line 1780 of file routing_instance.cc.

bool RoutingInstance::HasExportTarget ( const ExtCommunity extcomm) const

Definition at line 1823 of file routing_instance.cc.

Here is the call graph for this function:

int RoutingInstance::index ( ) const
inline

Definition at line 114 of file routing_instance.h.

void RoutingInstance::InitAllRTargetRoutes ( as_t  asn)
private

Definition at line 1558 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::IsAggregateRoute ( const BgpTable table,
const BgpRoute route 
) const

Definition at line 1983 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::IsContributingRoute ( const BgpTable table,
const BgpRoute route 
) const

Definition at line 1990 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::IsMasterRoutingInstance ( ) const
inline

Definition at line 116 of file routing_instance.h.

bool RoutingInstance::IsServiceChainRoute ( const BgpRoute route) const

Definition at line 1840 of file routing_instance.cc.

Here is the call graph for this function:

PeerManager * RoutingInstance::LocatePeerManager ( )

Definition at line 2014 of file routing_instance.cc.

IRouteAggregator * RoutingInstance::LocateRouteAggregator ( Address::Family  family)

Definition at line 1953 of file routing_instance.cc.

Here is the call graph for this function:

IStaticRouteMgr * RoutingInstance::LocateStaticRouteMgr ( Address::Family  family)

Definition at line 1936 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ManagedDelete ( )

Definition at line 1403 of file routing_instance.cc.

Here is the call graph for this function:

const RoutingInstanceMgr* RoutingInstance::manager ( ) const
inline

Definition at line 129 of file routing_instance.h.

RoutingInstanceMgr* RoutingInstance::manager ( )
inline

Definition at line 130 of file routing_instance.h.

bool RoutingInstance::MayDelete ( ) const

Definition at line 1432 of file routing_instance.cc.

const std::string& RoutingInstance::mvpn_project_manager_network ( ) const
inline

Definition at line 190 of file routing_instance.h.

std::string& RoutingInstance::mvpn_project_manager_network ( )
inline

Definition at line 193 of file routing_instance.h.

const std::string& RoutingInstance::name ( ) const
inline

Definition at line 120 of file routing_instance.h.

PeerManager* RoutingInstance::peer_manager ( )
inline

Definition at line 166 of file routing_instance.h.

const PeerManager* RoutingInstance::peer_manager ( ) const
inline

Definition at line 167 of file routing_instance.h.

size_t RoutingInstance::peer_manager_size ( ) const

Definition at line 2010 of file routing_instance.cc.

void RoutingInstance::ProcessConfig ( )

Definition at line 1198 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ProcessIdentifierUpdate ( as_t  asn)
private

Definition at line 1579 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ProcessRouteAggregationConfig ( )

Definition at line 1141 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::ProcessRoutingPolicy ( const BgpRoute route,
BgpPath path 
) const

Definition at line 1866 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ProcessRoutingPolicyConfig ( )

Definition at line 1022 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ProcessServiceChainConfig ( )

If any VN (both internal and non-internal) is connnected to an internal VN via a service-chain, we will create a service chain for EVPN address family as well so that we can re-originate routes from the internal VN RI's EVPN table. For other cases (any VN communicating with a non-internal VN via service chain), we do not need a service chain to watch the EVPN table. Schema-transformer needs to make sure to add the service chain config for EVPN address family to all VNs which need to communicate via a service-chain with an internal VN.

Definition at line 1058 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::ProcessStaticRouteConfig ( )

Definition at line 1089 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::RemoveTable ( BgpTable tbl)

Definition at line 1721 of file routing_instance.cc.

Here is the call graph for this function:

IRouteAggregator* RoutingInstance::route_aggregator ( Address::Family  family) const
inline

Definition at line 153 of file routing_instance.h.

RoutingPolicyAttachList* RoutingInstance::routing_policies ( )
inline

Definition at line 170 of file routing_instance.h.

const RoutingPolicyAttachList& RoutingInstance::routing_policies ( ) const
inline

Definition at line 171 of file routing_instance.h.

BgpTable * RoutingInstance::RTargetTableCreate ( )
private

Definition at line 1668 of file routing_instance.cc.

Here is the call graph for this function:

BgpServer* RoutingInstance::server ( )
inline

Definition at line 133 of file routing_instance.h.

const BgpServer* RoutingInstance::server ( ) const
inline

Definition at line 134 of file routing_instance.h.

void RoutingInstance::set_index ( int  index)

Definition at line 1801 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::set_mvpn_project_manager_network ( std::string  network)
inline

Definition at line 196 of file routing_instance.h.

void RoutingInstance::Shutdown ( )
private

Definition at line 1412 of file routing_instance.cc.

Here is the call graph for this function:

IStaticRouteMgr* RoutingInstance::static_route_mgr ( Address::Family  family)
inline

Definition at line 142 of file routing_instance.h.

void RoutingInstance::TableDeleteComplete ( BgpTable table)
SandeshTraceBufferPtr RoutingInstance::trace_buffer ( ) const

Definition at line 1035 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::TriggerTableDelete ( BgpTable table)
void RoutingInstance::UpdateAllStaticRoutes ( )

Definition at line 1129 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::UpdateConfig ( const BgpInstanceConfig config)

Definition at line 1295 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::UpdateRouteAggregationConfig ( )

Definition at line 1155 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::UpdateRoutingPolicyConfig ( )

Definition at line 1048 of file routing_instance.cc.

Here is the call graph for this function:

void RoutingInstance::UpdateStaticRouteConfig ( )

Definition at line 1103 of file routing_instance.cc.

Here is the call graph for this function:

bool RoutingInstance::virtual_network_allow_transit ( ) const

Definition at line 1463 of file routing_instance.cc.

int RoutingInstance::virtual_network_index ( ) const

Definition at line 1459 of file routing_instance.cc.

bool RoutingInstance::virtual_network_pbb_evpn_enable ( ) const

Definition at line 1467 of file routing_instance.cc.

BgpTable * RoutingInstance::VpnTableCreate ( Address::Family  vpn_family)
private

Definition at line 1677 of file routing_instance.cc.

Here is the call graph for this function:

BgpTable * RoutingInstance::VrfTableCreate ( Address::Family  vrf_family,
Address::Family  vpn_family 
)
private

Definition at line 1692 of file routing_instance.cc.

Here is the call graph for this function:

int RoutingInstance::vxlan_id ( ) const

Definition at line 1471 of file routing_instance.cc.

Friends And Related Function Documentation

friend class RoutingInstanceMgr
friend

Definition at line 201 of file routing_instance.h.

Member Data Documentation

bool RoutingInstance::always_subscribe_
private

Definition at line 239 of file routing_instance.h.

const BgpInstanceConfig* RoutingInstance::config_
private

Definition at line 237 of file routing_instance.h.

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

Definition at line 246 of file routing_instance.h.

RouteTargetList RoutingInstance::export_
private

Definition at line 234 of file routing_instance.h.

RouteTargetList RoutingInstance::import_
private

Definition at line 233 of file routing_instance.h.

int RoutingInstance::index_
private

Definition at line 229 of file routing_instance.h.

boost::scoped_ptr<IRouteAggregator> RoutingInstance::inet6_route_aggregator_
private

Definition at line 251 of file routing_instance.h.

boost::scoped_ptr<IStaticRouteMgr> RoutingInstance::inet6_static_route_mgr_
private

Definition at line 249 of file routing_instance.h.

boost::scoped_ptr<IRouteAggregator> RoutingInstance::inet_route_aggregator_
private

Definition at line 250 of file routing_instance.h.

boost::scoped_ptr<IStaticRouteMgr> RoutingInstance::inet_static_route_mgr_
private

Definition at line 248 of file routing_instance.h.

bool RoutingInstance::is_master_
private

Definition at line 238 of file routing_instance.h.

LifetimeRef<RoutingInstance> RoutingInstance::manager_delete_ref_
private

Definition at line 247 of file routing_instance.h.

RoutingInstanceMgr* RoutingInstance::mgr_
private

Definition at line 236 of file routing_instance.h.

std::string RoutingInstance::mvpn_project_manager_network_
private

Definition at line 253 of file routing_instance.h.

std::string RoutingInstance::name_
private

Definition at line 228 of file routing_instance.h.

boost::scoped_ptr<PeerManager> RoutingInstance::peer_manager_
private

Definition at line 252 of file routing_instance.h.

std::unique_ptr<RouteDistinguisher> RoutingInstance::rd_
private

Definition at line 230 of file routing_instance.h.

RoutingPolicyAttachList RoutingInstance::routing_policies_
private

Definition at line 254 of file routing_instance.h.

BgpServer* RoutingInstance::server_
private

Definition at line 235 of file routing_instance.h.

SandeshTraceBufferPtr RoutingInstance::trace_buffer_
private

Definition at line 245 of file routing_instance.h.

std::string RoutingInstance::virtual_network_
private

Definition at line 240 of file routing_instance.h.

bool RoutingInstance::virtual_network_allow_transit_
private

Definition at line 242 of file routing_instance.h.

int RoutingInstance::virtual_network_index_
private

Definition at line 241 of file routing_instance.h.

bool RoutingInstance::virtual_network_pbb_evpn_enable_
private

Definition at line 243 of file routing_instance.h.

RouteTableFamilyList RoutingInstance::vrf_tables_by_family_
private

Definition at line 232 of file routing_instance.h.

RouteTableList RoutingInstance::vrf_tables_by_name_
private

Definition at line 231 of file routing_instance.h.

int RoutingInstance::vxlan_id_
private

Definition at line 244 of file routing_instance.h.


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