OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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

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

Definition at line 125 of file path_resolver.h.

Definition at line 128 of file path_resolver.h.

Definition at line 127 of file path_resolver.h.

Constructor & Destructor Documentation

PathResolver::PathResolver ( BgpTable table)
explicit

Definition at line 94 of file path_resolver.cc.

Here is the call graph for this function:

PathResolver::~PathResolver ( )

Definition at line 124 of file path_resolver.cc.

Here is the call graph for this function:

Member Function Documentation

void PathResolver::DisableResolverNexthopRegUnregProcessing ( )
private

Definition at line 469 of file path_resolver.cc.

void PathResolver::DisableResolverNexthopUpdateProcessing ( )
private

Definition at line 494 of file path_resolver.cc.

void PathResolver::DisableResolverPathUpdateProcessing ( )
private

Definition at line 519 of file path_resolver.cc.

Here is the call graph for this function:

PathResolver::DISALLOW_COPY_AND_ASSIGN ( PathResolver  )
private
void PathResolver::EnableResolverNexthopRegUnregProcessing ( )
private

Definition at line 477 of file path_resolver.cc.

void PathResolver::EnableResolverNexthopUpdateProcessing ( )
private

Definition at line 502 of file path_resolver.cc.

void PathResolver::EnableResolverPathUpdateProcessing ( )
private

Definition at line 529 of file path_resolver.cc.

Here is the call graph for this function:

Address::Family PathResolver::family ( ) const

Definition at line 135 of file path_resolver.cc.

Here is the call graph for this function:

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

Definition at line 570 of file path_resolver.cc.

Here is the call graph for this function:

ResolverRouteState * PathResolver::FindResolverRouteState ( BgpRoute route)

Definition at line 218 of file path_resolver.cc.

Here is the call graph for this function:

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

Definition at line 174 of file path_resolver.cc.

Here is the call graph for this function:

PathResolverPartition * PathResolver::GetPartition ( int  part_id)
private

Definition at line 207 of file path_resolver.cc.

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

Definition at line 211 of file path_resolver.cc.

size_t PathResolver::GetResolverNexthopDeleteListSize ( ) const
private

Definition at line 460 of file path_resolver.cc.

size_t PathResolver::GetResolverNexthopMapSize ( ) const
private

Definition at line 451 of file path_resolver.cc.

size_t PathResolver::GetResolverNexthopRegUnregListSize ( ) const
private

Definition at line 485 of file path_resolver.cc.

size_t PathResolver::GetResolverNexthopUpdateListSize ( ) const
private

Definition at line 510 of file path_resolver.cc.

size_t PathResolver::GetResolverPathUpdateListSize ( ) const
private

Definition at line 559 of file path_resolver.cc.

Here is the call graph for this function:

bool PathResolver::IsDeleted ( ) const

Definition at line 405 of file path_resolver.cc.

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

Definition at line 107 of file path_resolver.h.

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

Definition at line 246 of file path_resolver.cc.

ResolverRouteState * PathResolver::LocateResolverRouteState ( BgpRoute route)

Definition at line 230 of file path_resolver.cc.

Here is the call graph for this function:

void PathResolver::ManagedDelete ( )

Definition at line 412 of file path_resolver.cc.

bool PathResolver::MayDelete ( ) const

Definition at line 419 of file path_resolver.cc.

bool PathResolver::nexthop_longest_match ( ) const
inline

Definition at line 113 of file path_resolver.h.

void PathResolver::PauseResolverPathUpdateProcessing ( )
private

Definition at line 539 of file path_resolver.cc.

Here is the call graph for this function:

bool PathResolver::ProcessResolverNexthopRegUnreg ( ResolverNexthop rnexthop)
private

Definition at line 311 of file path_resolver.cc.

Here is the call graph for this function:

bool PathResolver::ProcessResolverNexthopRegUnregList ( )
private

Definition at line 371 of file path_resolver.cc.

Here is the call graph for this function:

bool PathResolver::ProcessResolverNexthopUpdateList ( )
private

Definition at line 389 of file path_resolver.cc.

Here is the call graph for this function:

void PathResolver::RegisterUnregisterResolverNexthop ( ResolverNexthop rnexthop)
private

Definition at line 187 of file path_resolver.cc.

void PathResolver::RemoveResolverNexthop ( ResolverNexthop rnexthop)
private

Definition at line 276 of file path_resolver.cc.

Here is the call graph for this function:

void PathResolver::ResumeResolverPathUpdateProcessing ( )
private

Definition at line 549 of file path_resolver.cc.

Here is the call graph for this function:

void PathResolver::RetryDelete ( )

Definition at line 433 of file path_resolver.cc.

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

Definition at line 443 of file path_resolver.cc.

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

Definition at line 50 of file path_resolver.cc.

Here is the call graph for this function:

void PathResolver::set_nexthop_longest_match ( bool  flag)
inline

Definition at line 114 of file path_resolver.h.

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

Definition at line 145 of file path_resolver.cc.

Here is the call graph for this function:

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

Definition at line 164 of file path_resolver.cc.

BgpTable* PathResolver::table ( )
inline

Definition at line 105 of file path_resolver.h.

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

Definition at line 294 of file path_resolver.cc.

Here is the call graph for this function:

void PathResolver::UpdateResolverNexthop ( ResolverNexthop rnexthop)
private

Definition at line 198 of file path_resolver.cc.

Friends And Related Function Documentation

friend class PathResolverPartition
friend

Definition at line 121 of file path_resolver.h.

template<typename U >
friend class PathResolverTest
friend

Definition at line 123 of file path_resolver.h.

friend class ResolverNexthop
friend

Definition at line 122 of file path_resolver.h.

Member Data Documentation

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

Definition at line 174 of file path_resolver.h.

DBTableBase::ListenerId PathResolver::listener_id_
private

Definition at line 163 of file path_resolver.h.

tbb::mutex PathResolver::mutex_
mutableprivate

Definition at line 165 of file path_resolver.h.

ResolverNexthopList PathResolver::nexthop_delete_list_
private

Definition at line 171 of file path_resolver.h.

bool PathResolver::nexthop_longest_match_
private

Definition at line 164 of file path_resolver.h.

ResolverNexthopMap PathResolver::nexthop_map_
private

Definition at line 166 of file path_resolver.h.

ResolverNexthopList PathResolver::nexthop_reg_unreg_list_
private

Definition at line 167 of file path_resolver.h.

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

Definition at line 168 of file path_resolver.h.

ResolverNexthopList PathResolver::nexthop_update_list_
private

Definition at line 169 of file path_resolver.h.

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

Definition at line 170 of file path_resolver.h.

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

Definition at line 172 of file path_resolver.h.

BgpTable* PathResolver::table_
private

Definition at line 162 of file path_resolver.h.

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: