OpenSDN source code
RouteAggregator< T > Class Template Reference

#include <route_aggregator.h>

Inheritance diagram for RouteAggregator< T >:
Collaboration diagram for RouteAggregator< T >:

Classes

class  DeleteActor
 

Public Types

typedef T::RouteT RouteT
 
typedef T::PrefixT PrefixT
 
typedef T::AddressT AddressT
 
typedef AggregateRoute< T > AggregateRouteT
 
typedef std::map< PrefixT, AggregateRoutePtrAggregateRouteMap
 

Public Member Functions

 RouteAggregator (RoutingInstance *instance)
 
 ~RouteAggregator ()
 
virtual void Initialize ()
 
virtual void ProcessAggregateRouteConfig ()
 
virtual void UpdateAggregateRouteConfig ()
 
virtual void FlushAggregateRouteConfig ()
 
virtual uint32_t GetAggregateRouteCount () const
 
const AggregateRouteMapaggregate_route_map () const
 
Address::Family GetFamily () const
 
AddressT GetAddress (IpAddress addr) const
 
BgpTablebgp_table () const
 
DBTableBase::ListenerId listener_id () const
 
bool MayDelete () const
 
void ManagedDelete ()
 
void RetryDelete ()
 
void EvaluateAggregateRoute (AggregateRoutePtr entry)
 
void UnregisterAndResolveRouteAggregate (AggregateRoutePtr entry)
 
virtual bool IsAggregateRoute (const BgpRoute *route) const
 
virtual bool IsContributingRoute (const BgpRoute *route) const
 
virtual bool FillAggregateRouteInfo (AggregateRouteEntriesInfo *info, bool summary) const
 
Address::Family GetFamily () const
 
Address::Family GetFamily () const
 
Ip4Address GetAddress (IpAddress addr) const
 
Ip6Address GetAddress (IpAddress addr) const
 
- Public Member Functions inherited from IRouteAggregator
virtual ~IRouteAggregator ()
 

Private Types

typedef std::set< AggregateRoutePtrAggregateRouteProcessList
 
typedef BgpInstanceConfig::AggregateRouteList AggregateRouteConfigList
 

Private Member Functions

int CompareAggregateRoute (typename AggregateRouteMap::iterator loc, AggregateRouteConfigList::iterator it)
 
void AddAggregateRoute (AggregateRouteConfigList::iterator it)
 
void DelAggregateRoute (typename AggregateRouteMap::iterator loc)
 
void UpdateAggregateRoute (typename AggregateRouteMap::iterator loc, AggregateRouteConfigList::iterator it)
 
void LocateAggregateRoutePrefix (const AggregateRouteConfig &cfg)
 
void RemoveAggregateRoutePrefix (const PrefixT &static_route)
 
void StopAggregateRouteDone (BgpTable *table, ConditionMatch *info)
 
bool ProcessUnregisterList ()
 
bool ProcessUpdateList ()
 
bool RouteListener (DBTablePartBase *root, DBEntryBase *entry)
 
RoutingInstancerouting_instance ()
 
virtual void DisableRouteAggregateUpdate ()
 
virtual void EnableRouteAggregateUpdate ()
 
virtual size_t GetUpdateAggregateListSize () const
 
virtual void DisableUnregResolveTask ()
 
virtual void EnableUnregResolveTask ()
 
virtual size_t GetUnregResolveListSize () const
 
 DISALLOW_COPY_AND_ASSIGN (RouteAggregator)
 

Private Attributes

RoutingInstancertinstance_
 
BgpConditionListenercondition_listener_
 
DBTableBase::ListenerId listener_id_
 
AggregateRouteMap aggregate_route_map_
 
boost::scoped_ptr< TaskTriggerupdate_list_trigger_
 
boost::scoped_ptr< TaskTriggerunregister_list_trigger_
 
tbb::mutex mutex_
 
AggregateRouteProcessList update_aggregate_list_
 
AggregateRouteProcessList unregister_aggregate_list_
 
boost::scoped_ptr< DeleteActordeleter_
 
LifetimeRef< RouteAggregatorinstance_delete_ref_
 

Detailed Description

template<typename T>
class RouteAggregator< T >

Definition at line 161 of file route_aggregator.h.

Member Typedef Documentation

◆ AddressT

template<typename T >
typedef T::AddressT RouteAggregator< T >::AddressT

Definition at line 165 of file route_aggregator.h.

◆ AggregateRouteConfigList

Definition at line 211 of file route_aggregator.h.

◆ AggregateRouteMap

template<typename T >
typedef std::map<PrefixT, AggregateRoutePtr> RouteAggregator< T >::AggregateRouteMap

Definition at line 169 of file route_aggregator.h.

◆ AggregateRouteProcessList

template<typename T >
typedef std::set<AggregateRoutePtr> RouteAggregator< T >::AggregateRouteProcessList
private

Definition at line 210 of file route_aggregator.h.

◆ AggregateRouteT

template<typename T >
typedef AggregateRoute<T> RouteAggregator< T >::AggregateRouteT

Definition at line 166 of file route_aggregator.h.

◆ PrefixT

template<typename T >
typedef T::PrefixT RouteAggregator< T >::PrefixT

Definition at line 164 of file route_aggregator.h.

◆ RouteT

template<typename T >
typedef T::RouteT RouteAggregator< T >::RouteT

Definition at line 163 of file route_aggregator.h.

Constructor & Destructor Documentation

◆ RouteAggregator()

template<typename T >
RouteAggregator< T >::RouteAggregator ( RoutingInstance instance)
explicit

Definition at line 578 of file route_aggregator.cc.

◆ ~RouteAggregator()

template<typename T >
RouteAggregator< T >::~RouteAggregator

Definition at line 594 of file route_aggregator.cc.

Member Function Documentation

◆ AddAggregateRoute()

template<typename T >
void RouteAggregator< T >::AddAggregateRoute ( AggregateRouteConfigList::iterator  it)
private

Definition at line 772 of file route_aggregator.cc.

◆ aggregate_route_map()

template<typename T >
const AggregateRouteMap& RouteAggregator< T >::aggregate_route_map ( ) const
inline

Definition at line 184 of file route_aggregator.h.

◆ bgp_table()

template<typename T >
BgpTable * RouteAggregator< T >::bgp_table

Definition at line 667 of file route_aggregator.cc.

◆ CompareAggregateRoute()

template<typename T >
int RouteAggregator< T >::CompareAggregateRoute ( typename AggregateRouteMap::iterator  loc,
AggregateRouteConfigList::iterator  it 
)
private

Definition at line 762 of file route_aggregator.cc.

◆ DelAggregateRoute()

template<typename T >
void RouteAggregator< T >::DelAggregateRoute ( typename AggregateRouteMap::iterator  loc)
private

Definition at line 778 of file route_aggregator.cc.

◆ DisableRouteAggregateUpdate()

template<typename T >
void RouteAggregator< T >::DisableRouteAggregateUpdate
privatevirtual

Implements IRouteAggregator.

Definition at line 904 of file route_aggregator.cc.

◆ DisableUnregResolveTask()

template<typename T >
void RouteAggregator< T >::DisableUnregResolveTask
privatevirtual

Implements IRouteAggregator.

Definition at line 919 of file route_aggregator.cc.

◆ DISALLOW_COPY_AND_ASSIGN()

template<typename T >
RouteAggregator< T >::DISALLOW_COPY_AND_ASSIGN ( RouteAggregator< T >  )
private

◆ EnableRouteAggregateUpdate()

template<typename T >
void RouteAggregator< T >::EnableRouteAggregateUpdate
privatevirtual

Implements IRouteAggregator.

Definition at line 909 of file route_aggregator.cc.

◆ EnableUnregResolveTask()

template<typename T >
void RouteAggregator< T >::EnableUnregResolveTask
privatevirtual

Implements IRouteAggregator.

Definition at line 924 of file route_aggregator.cc.

◆ EvaluateAggregateRoute()

template<typename T >
void RouteAggregator< T >::EvaluateAggregateRoute ( AggregateRoutePtr  entry)

Definition at line 705 of file route_aggregator.cc.

◆ FillAggregateRouteInfo()

template<typename T >
bool RouteAggregator< T >::FillAggregateRouteInfo ( AggregateRouteEntriesInfo *  info,
bool  summary 
) const
virtual

Implements IRouteAggregator.

Definition at line 740 of file route_aggregator.cc.

Here is the call graph for this function:

◆ FlushAggregateRouteConfig()

template<typename T >
void RouteAggregator< T >::FlushAggregateRouteConfig
virtual

Implements IRouteAggregator.

Definition at line 634 of file route_aggregator.cc.

◆ GetAddress() [1/3]

Ip4Address RouteAggregator< AggregateInetRoute >::GetAddress ( IpAddress  addr) const

Definition at line 653 of file route_aggregator.cc.

◆ GetAddress() [2/3]

Ip6Address RouteAggregator< AggregateInet6Route >::GetAddress ( IpAddress  addr) const

Definition at line 660 of file route_aggregator.cc.

◆ GetAddress() [3/3]

template<typename T >
AddressT RouteAggregator< T >::GetAddress ( IpAddress  addr) const

◆ GetAggregateRouteCount()

template<typename T >
virtual uint32_t RouteAggregator< T >::GetAggregateRouteCount ( ) const
inlinevirtual

Implements IRouteAggregator.

Definition at line 181 of file route_aggregator.h.

◆ GetFamily() [1/3]

Definition at line 643 of file route_aggregator.cc.

◆ GetFamily() [2/3]

Definition at line 648 of file route_aggregator.cc.

◆ GetFamily() [3/3]

template<typename T >
Address::Family RouteAggregator< T >::GetFamily ( ) const

◆ GetUnregResolveListSize()

template<typename T >
size_t RouteAggregator< T >::GetUnregResolveListSize
privatevirtual

Implements IRouteAggregator.

Definition at line 929 of file route_aggregator.cc.

◆ GetUpdateAggregateListSize()

template<typename T >
size_t RouteAggregator< T >::GetUpdateAggregateListSize
privatevirtual

Implements IRouteAggregator.

Definition at line 914 of file route_aggregator.cc.

◆ Initialize()

template<typename T >
void RouteAggregator< T >::Initialize
virtual

Implements IRouteAggregator.

Definition at line 672 of file route_aggregator.cc.

Here is the call graph for this function:

◆ IsAggregateRoute()

template<typename T >
bool RouteAggregator< T >::IsAggregateRoute ( const BgpRoute route) const
virtual

Implements IRouteAggregator.

Definition at line 720 of file route_aggregator.cc.

Here is the call graph for this function:

◆ IsContributingRoute()

template<typename T >
bool RouteAggregator< T >::IsContributingRoute ( const BgpRoute route) const
virtual

Implements IRouteAggregator.

Definition at line 730 of file route_aggregator.cc.

Here is the call graph for this function:

◆ listener_id()

template<typename T >
DBTableBase::ListenerId RouteAggregator< T >::listener_id ( ) const
inline

Definition at line 191 of file route_aggregator.h.

◆ LocateAggregateRoutePrefix()

template<typename T >
void RouteAggregator< T >::LocateAggregateRoutePrefix ( const AggregateRouteConfig cfg)
private

Definition at line 791 of file route_aggregator.cc.

Here is the call graph for this function:

◆ ManagedDelete()

template<typename T >
void RouteAggregator< T >::ManagedDelete

Definition at line 692 of file route_aggregator.cc.

◆ MayDelete()

template<typename T >
bool RouteAggregator< T >::MayDelete

Definition at line 680 of file route_aggregator.cc.

◆ ProcessAggregateRouteConfig()

template<typename T >
void RouteAggregator< T >::ProcessAggregateRouteConfig
virtual

Implements IRouteAggregator.

Definition at line 601 of file route_aggregator.cc.

◆ ProcessUnregisterList()

template<typename T >
bool RouteAggregator< T >::ProcessUnregisterList
private

Definition at line 851 of file route_aggregator.cc.

Here is the call graph for this function:

◆ ProcessUpdateList()

template<typename T >
bool RouteAggregator< T >::ProcessUpdateList
private

Definition at line 873 of file route_aggregator.cc.

Here is the call graph for this function:

◆ RemoveAggregateRoutePrefix()

template<typename T >
void RouteAggregator< T >::RemoveAggregateRoutePrefix ( const PrefixT static_route)
private

Definition at line 827 of file route_aggregator.cc.

Here is the call graph for this function:

◆ RetryDelete()

template<typename T >
void RouteAggregator< T >::RetryDelete

Definition at line 698 of file route_aggregator.cc.

◆ RouteListener()

template<typename T >
bool RouteAggregator< T >::RouteListener ( DBTablePartBase root,
DBEntryBase entry 
)
private

Definition at line 897 of file route_aggregator.cc.

◆ routing_instance()

template<typename T >
RoutingInstance* RouteAggregator< T >::routing_instance ( )
inlineprivate

Definition at line 229 of file route_aggregator.h.

◆ StopAggregateRouteDone()

template<typename T >
void RouteAggregator< T >::StopAggregateRouteDone ( BgpTable table,
ConditionMatch info 
)
private

Definition at line 843 of file route_aggregator.cc.

◆ UnregisterAndResolveRouteAggregate()

template<typename T >
void RouteAggregator< T >::UnregisterAndResolveRouteAggregate ( AggregateRoutePtr  entry)

Definition at line 712 of file route_aggregator.cc.

◆ UpdateAggregateRoute()

template<typename T >
void RouteAggregator< T >::UpdateAggregateRoute ( typename AggregateRouteMap::iterator  loc,
AggregateRouteConfigList::iterator  it 
)
private

Definition at line 784 of file route_aggregator.cc.

◆ UpdateAggregateRouteConfig()

template<typename T >
void RouteAggregator< T >::UpdateAggregateRouteConfig
virtual

Implements IRouteAggregator.

Definition at line 619 of file route_aggregator.cc.

Here is the call graph for this function:

Member Data Documentation

◆ aggregate_route_map_

template<typename T >
AggregateRouteMap RouteAggregator< T >::aggregate_route_map_
private

Definition at line 243 of file route_aggregator.h.

◆ condition_listener_

template<typename T >
BgpConditionListener* RouteAggregator< T >::condition_listener_
private

Definition at line 241 of file route_aggregator.h.

◆ deleter_

template<typename T >
boost::scoped_ptr<DeleteActor> RouteAggregator< T >::deleter_
private

Definition at line 249 of file route_aggregator.h.

◆ instance_delete_ref_

template<typename T >
LifetimeRef<RouteAggregator> RouteAggregator< T >::instance_delete_ref_
private

Definition at line 250 of file route_aggregator.h.

◆ listener_id_

template<typename T >
DBTableBase::ListenerId RouteAggregator< T >::listener_id_
private

Definition at line 242 of file route_aggregator.h.

◆ mutex_

template<typename T >
tbb::mutex RouteAggregator< T >::mutex_
private

Definition at line 246 of file route_aggregator.h.

◆ rtinstance_

template<typename T >
RoutingInstance* RouteAggregator< T >::rtinstance_
private

Definition at line 240 of file route_aggregator.h.

◆ unregister_aggregate_list_

template<typename T >
AggregateRouteProcessList RouteAggregator< T >::unregister_aggregate_list_
private

Definition at line 248 of file route_aggregator.h.

◆ unregister_list_trigger_

template<typename T >
boost::scoped_ptr<TaskTrigger> RouteAggregator< T >::unregister_list_trigger_
private

Definition at line 245 of file route_aggregator.h.

◆ update_aggregate_list_

template<typename T >
AggregateRouteProcessList RouteAggregator< T >::update_aggregate_list_
private

Definition at line 247 of file route_aggregator.h.

◆ update_list_trigger_

template<typename T >
boost::scoped_ptr<TaskTrigger> RouteAggregator< T >::update_list_trigger_
private

Definition at line 244 of file route_aggregator.h.


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