OpenSDN source code
PathResolver Class Reference

#include <path_resolver.h>

Collaboration diagram for PathResolver:

Classes

class  DeleteActor
 

Public Member Functions

 PathResolver (BgpTable *table)
 
 ~PathResolver ()
 
void StartPathResolution (BgpRoute *route, const BgpPath *path, BgpTable *nh_table=NULL)
 
void StopPathResolution (int part_id, const BgpPath *path)
 
ResolverRouteStateFindResolverRouteState (BgpRoute *route)
 
ResolverRouteStateLocateResolverRouteState (BgpRoute *route)
 
BgpTabletable ()
 
Address::Family family () const
 
DBTableBase::ListenerId listener_id () const
 
BgpConditionListenerget_condition_listener (Address::Family family)
 
bool IsDeleted () const
 
void ManagedDelete ()
 
bool MayDelete () const
 
void RetryDelete ()
 
bool nexthop_longest_match () const
 
void set_nexthop_longest_match (bool flag)
 
void FillShowInfo (ShowPathResolver *spr, bool summary) const
 

Static Public Member Functions

static bool RoutePrefixMatch (const BgpRoute *route, const IpAddress &address)
 

Private Types

typedef std::pair< IpAddress, BgpTable * > ResolverNexthopKey
 
typedef std::map< ResolverNexthopKey, ResolverNexthop * > ResolverNexthopMap
 
typedef std::set< ResolverNexthop * > ResolverNexthopList
 

Private Member Functions

PathResolverPartitionGetPartition (int part_id)
 
PathResolverPartitionGetPartition (int part_id) const
 
ResolverNexthopLocateResolverNexthop (IpAddress address, BgpTable *table)
 
void RemoveResolverNexthop (ResolverNexthop *rnexthop)
 
void UpdateResolverNexthop (ResolverNexthop *rnexthop)
 
void RegisterUnregisterResolverNexthop (ResolverNexthop *rnexthop)
 
void UnregisterResolverNexthopDone (BgpTable *table, ConditionMatch *match)
 
bool ProcessResolverNexthopRegUnreg (ResolverNexthop *rnexthop)
 
bool ProcessResolverNexthopRegUnregList ()
 
bool ProcessResolverNexthopUpdateList ()
 
bool RouteListener (DBTablePartBase *root, DBEntryBase *entry)
 
size_t GetResolverNexthopMapSize () const
 
size_t GetResolverNexthopDeleteListSize () const
 
void DisableResolverNexthopRegUnregProcessing ()
 
void EnableResolverNexthopRegUnregProcessing ()
 
size_t GetResolverNexthopRegUnregListSize () const
 
void DisableResolverNexthopUpdateProcessing ()
 
void EnableResolverNexthopUpdateProcessing ()
 
size_t GetResolverNexthopUpdateListSize () const
 
void DisableResolverPathUpdateProcessing ()
 
void EnableResolverPathUpdateProcessing ()
 
void PauseResolverPathUpdateProcessing ()
 
void ResumeResolverPathUpdateProcessing ()
 
size_t GetResolverPathUpdateListSize () const
 
 DISALLOW_COPY_AND_ASSIGN (PathResolver)
 

Private Attributes

BgpTabletable_
 
DBTableBase::ListenerId listener_id_
 
bool nexthop_longest_match_
 
tbb::mutex mutex_
 
ResolverNexthopMap nexthop_map_
 
ResolverNexthopList nexthop_reg_unreg_list_
 
boost::scoped_ptr< TaskTriggernexthop_reg_unreg_trigger_
 
ResolverNexthopList nexthop_update_list_
 
boost::scoped_ptr< TaskTriggernexthop_update_trigger_
 
ResolverNexthopList nexthop_delete_list_
 
std::vector< PathResolverPartition * > partitions_
 
boost::scoped_ptr< DeleteActordeleter_
 
LifetimeRef< PathResolvertable_delete_ref_
 

Friends

class PathResolverPartition
 
class ResolverNexthop
 
template<typename U >
class PathResolverTest
 

Detailed Description

Definition at line 93 of file path_resolver.h.

Member Typedef Documentation

◆ ResolverNexthopKey

typedef std::pair<IpAddress, BgpTable *> PathResolver::ResolverNexthopKey
private

Definition at line 126 of file path_resolver.h.

◆ ResolverNexthopList

Definition at line 128 of file path_resolver.h.

◆ ResolverNexthopMap

Definition at line 127 of file path_resolver.h.

Constructor & Destructor Documentation

◆ PathResolver()

PathResolver::PathResolver ( BgpTable table)
explicit

Definition at line 124 of file path_resolver.cc.

Here is the call graph for this function:

◆ ~PathResolver()

PathResolver::~PathResolver ( )

Definition at line 154 of file path_resolver.cc.

Here is the call graph for this function:

Member Function Documentation

◆ DisableResolverNexthopRegUnregProcessing()

void PathResolver::DisableResolverNexthopRegUnregProcessing ( )
private

Definition at line 499 of file path_resolver.cc.

◆ DisableResolverNexthopUpdateProcessing()

void PathResolver::DisableResolverNexthopUpdateProcessing ( )
private

Definition at line 524 of file path_resolver.cc.

◆ DisableResolverPathUpdateProcessing()

void PathResolver::DisableResolverPathUpdateProcessing ( )
private

Definition at line 549 of file path_resolver.cc.

Here is the call graph for this function:

◆ DISALLOW_COPY_AND_ASSIGN()

PathResolver::DISALLOW_COPY_AND_ASSIGN ( PathResolver  )
private

◆ EnableResolverNexthopRegUnregProcessing()

void PathResolver::EnableResolverNexthopRegUnregProcessing ( )
private

Definition at line 507 of file path_resolver.cc.

◆ EnableResolverNexthopUpdateProcessing()

void PathResolver::EnableResolverNexthopUpdateProcessing ( )
private

Definition at line 532 of file path_resolver.cc.

◆ EnableResolverPathUpdateProcessing()

void PathResolver::EnableResolverPathUpdateProcessing ( )
private

Definition at line 559 of file path_resolver.cc.

Here is the call graph for this function:

◆ family()

Address::Family PathResolver::family ( ) const

Definition at line 165 of file path_resolver.cc.

Here is the call graph for this function:

◆ FillShowInfo()

void PathResolver::FillShowInfo ( ShowPathResolver *  spr,
bool  summary 
) const

Definition at line 600 of file path_resolver.cc.

Here is the call graph for this function:

◆ FindResolverRouteState()

ResolverRouteState * PathResolver::FindResolverRouteState ( BgpRoute route)

Definition at line 248 of file path_resolver.cc.

Here is the call graph for this function:

◆ get_condition_listener()

BgpConditionListener * PathResolver::get_condition_listener ( Address::Family  family)

Definition at line 204 of file path_resolver.cc.

Here is the call graph for this function:

◆ GetPartition() [1/2]

PathResolverPartition * PathResolver::GetPartition ( int  part_id)
private

Definition at line 237 of file path_resolver.cc.

◆ GetPartition() [2/2]

PathResolverPartition * PathResolver::GetPartition ( int  part_id) const
private

Definition at line 241 of file path_resolver.cc.

◆ GetResolverNexthopDeleteListSize()

size_t PathResolver::GetResolverNexthopDeleteListSize ( ) const
private

Definition at line 490 of file path_resolver.cc.

◆ GetResolverNexthopMapSize()

size_t PathResolver::GetResolverNexthopMapSize ( ) const
private

Definition at line 481 of file path_resolver.cc.

◆ GetResolverNexthopRegUnregListSize()

size_t PathResolver::GetResolverNexthopRegUnregListSize ( ) const
private

Definition at line 515 of file path_resolver.cc.

◆ GetResolverNexthopUpdateListSize()

size_t PathResolver::GetResolverNexthopUpdateListSize ( ) const
private

Definition at line 540 of file path_resolver.cc.

◆ GetResolverPathUpdateListSize()

size_t PathResolver::GetResolverPathUpdateListSize ( ) const
private

Definition at line 589 of file path_resolver.cc.

Here is the call graph for this function:

◆ IsDeleted()

bool PathResolver::IsDeleted ( ) const

Definition at line 435 of file path_resolver.cc.

◆ listener_id()

DBTableBase::ListenerId PathResolver::listener_id ( ) const
inline

Definition at line 107 of file path_resolver.h.

◆ LocateResolverNexthop()

ResolverNexthop * PathResolver::LocateResolverNexthop ( IpAddress  address,
BgpTable table 
)
private

Definition at line 276 of file path_resolver.cc.

Here is the call graph for this function:

◆ LocateResolverRouteState()

ResolverRouteState * PathResolver::LocateResolverRouteState ( BgpRoute route)

Definition at line 260 of file path_resolver.cc.

Here is the call graph for this function:

◆ ManagedDelete()

void PathResolver::ManagedDelete ( )

Definition at line 442 of file path_resolver.cc.

◆ MayDelete()

bool PathResolver::MayDelete ( ) const

Definition at line 449 of file path_resolver.cc.

◆ nexthop_longest_match()

bool PathResolver::nexthop_longest_match ( ) const
inline

Definition at line 113 of file path_resolver.h.

◆ PauseResolverPathUpdateProcessing()

void PathResolver::PauseResolverPathUpdateProcessing ( )
private

Definition at line 569 of file path_resolver.cc.

Here is the call graph for this function:

◆ ProcessResolverNexthopRegUnreg()

bool PathResolver::ProcessResolverNexthopRegUnreg ( ResolverNexthop rnexthop)
private

Definition at line 341 of file path_resolver.cc.

Here is the call graph for this function:

◆ ProcessResolverNexthopRegUnregList()

bool PathResolver::ProcessResolverNexthopRegUnregList ( )
private

Definition at line 401 of file path_resolver.cc.

Here is the call graph for this function:

◆ ProcessResolverNexthopUpdateList()

bool PathResolver::ProcessResolverNexthopUpdateList ( )
private

Definition at line 419 of file path_resolver.cc.

Here is the call graph for this function:

◆ RegisterUnregisterResolverNexthop()

void PathResolver::RegisterUnregisterResolverNexthop ( ResolverNexthop rnexthop)
private

Definition at line 217 of file path_resolver.cc.

◆ RemoveResolverNexthop()

void PathResolver::RemoveResolverNexthop ( ResolverNexthop rnexthop)
private

Definition at line 306 of file path_resolver.cc.

Here is the call graph for this function:

◆ ResumeResolverPathUpdateProcessing()

void PathResolver::ResumeResolverPathUpdateProcessing ( )
private

Definition at line 579 of file path_resolver.cc.

Here is the call graph for this function:

◆ RetryDelete()

void PathResolver::RetryDelete ( )

Definition at line 463 of file path_resolver.cc.

◆ RouteListener()

bool PathResolver::RouteListener ( DBTablePartBase root,
DBEntryBase entry 
)
private

Definition at line 473 of file path_resolver.cc.

◆ RoutePrefixMatch()

bool PathResolver::RoutePrefixMatch ( const BgpRoute route,
const IpAddress address 
)
static

Definition at line 65 of file path_resolver.cc.

Here is the call graph for this function:

◆ set_nexthop_longest_match()

void PathResolver::set_nexthop_longest_match ( bool  flag)
inline

Definition at line 114 of file path_resolver.h.

◆ StartPathResolution()

void PathResolver::StartPathResolution ( BgpRoute route,
const BgpPath path,
BgpTable nh_table = NULL 
)

Definition at line 175 of file path_resolver.cc.

Here is the call graph for this function:

◆ StopPathResolution()

void PathResolver::StopPathResolution ( int  part_id,
const BgpPath path 
)

Definition at line 194 of file path_resolver.cc.

◆ table()

BgpTable* PathResolver::table ( )
inline

Definition at line 105 of file path_resolver.h.

◆ UnregisterResolverNexthopDone()

void PathResolver::UnregisterResolverNexthopDone ( BgpTable table,
ConditionMatch match 
)
private

Definition at line 324 of file path_resolver.cc.

Here is the call graph for this function:

◆ UpdateResolverNexthop()

void PathResolver::UpdateResolverNexthop ( ResolverNexthop rnexthop)
private

Definition at line 228 of file path_resolver.cc.

Friends And Related Function Documentation

◆ PathResolverPartition

friend class PathResolverPartition
friend

Definition at line 121 of file path_resolver.h.

◆ PathResolverTest

template<typename U >
friend class PathResolverTest
friend

Definition at line 123 of file path_resolver.h.

◆ ResolverNexthop

friend class ResolverNexthop
friend

Definition at line 122 of file path_resolver.h.

Member Data Documentation

◆ deleter_

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

Definition at line 174 of file path_resolver.h.

◆ listener_id_

DBTableBase::ListenerId PathResolver::listener_id_
private

Definition at line 163 of file path_resolver.h.

◆ mutex_

tbb::mutex PathResolver::mutex_
mutableprivate

Definition at line 165 of file path_resolver.h.

◆ nexthop_delete_list_

ResolverNexthopList PathResolver::nexthop_delete_list_
private

Definition at line 171 of file path_resolver.h.

◆ nexthop_longest_match_

bool PathResolver::nexthop_longest_match_
private

Definition at line 164 of file path_resolver.h.

◆ nexthop_map_

ResolverNexthopMap PathResolver::nexthop_map_
private

Definition at line 166 of file path_resolver.h.

◆ nexthop_reg_unreg_list_

ResolverNexthopList PathResolver::nexthop_reg_unreg_list_
private

Definition at line 167 of file path_resolver.h.

◆ nexthop_reg_unreg_trigger_

boost::scoped_ptr<TaskTrigger> PathResolver::nexthop_reg_unreg_trigger_
private

Definition at line 168 of file path_resolver.h.

◆ nexthop_update_list_

ResolverNexthopList PathResolver::nexthop_update_list_
private

Definition at line 169 of file path_resolver.h.

◆ nexthop_update_trigger_

boost::scoped_ptr<TaskTrigger> PathResolver::nexthop_update_trigger_
private

Definition at line 170 of file path_resolver.h.

◆ partitions_

std::vector<PathResolverPartition *> PathResolver::partitions_
private

Definition at line 172 of file path_resolver.h.

◆ table_

BgpTable* PathResolver::table_
private

Definition at line 162 of file path_resolver.h.

◆ table_delete_ref_

LifetimeRef<PathResolver> PathResolver::table_delete_ref_
private

Definition at line 175 of file path_resolver.h.


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