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

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
 
template<>
Address::Family GetFamily () const
 
template<>
Address::Family GetFamily () const
 
template<>
Ip4Address GetAddress (IpAddress addr) const
 
template<>
Ip6Address GetAddress (IpAddress addr) const
 
- Public Member Functions inherited from IRouteAggregator
virtual ~IRouteAggregator ()
 

Private Types

typedef std::set
< AggregateRoutePtr
AggregateRouteProcessList
 
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

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

Definition at line 165 of file route_aggregator.h.

Definition at line 211 of file route_aggregator.h.

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

Definition at line 169 of file route_aggregator.h.

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

Definition at line 209 of file route_aggregator.h.

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

Definition at line 166 of file route_aggregator.h.

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

Definition at line 164 of file route_aggregator.h.

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

Definition at line 163 of file route_aggregator.h.

Constructor & Destructor Documentation

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

Definition at line 578 of file route_aggregator.cc.

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

Definition at line 594 of file route_aggregator.cc.

Member Function Documentation

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

Definition at line 772 of file route_aggregator.cc.

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

Definition at line 184 of file route_aggregator.h.

template<typename T >
BgpTable * RouteAggregator< T >::bgp_table ( ) const

Definition at line 667 of file route_aggregator.cc.

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

Definition at line 762 of file route_aggregator.cc.

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

Definition at line 778 of file route_aggregator.cc.

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

Implements IRouteAggregator.

Definition at line 904 of file route_aggregator.cc.

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

Implements IRouteAggregator.

Definition at line 919 of file route_aggregator.cc.

template<typename T>
RouteAggregator< T >::DISALLOW_COPY_AND_ASSIGN ( RouteAggregator< T >  )
private
template<typename T >
void RouteAggregator< T >::EnableRouteAggregateUpdate ( )
privatevirtual

Implements IRouteAggregator.

Definition at line 909 of file route_aggregator.cc.

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

Implements IRouteAggregator.

Definition at line 924 of file route_aggregator.cc.

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

Definition at line 705 of file route_aggregator.cc.

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:

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

Implements IRouteAggregator.

Definition at line 634 of file route_aggregator.cc.

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

Definition at line 653 of file route_aggregator.cc.

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

Definition at line 660 of file route_aggregator.cc.

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

Implements IRouteAggregator.

Definition at line 181 of file route_aggregator.h.

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

Definition at line 643 of file route_aggregator.cc.

template<>
Address::Family RouteAggregator< AggregateInet6Route >::GetFamily ( ) const

Definition at line 648 of file route_aggregator.cc.

template<typename T >
size_t RouteAggregator< T >::GetUnregResolveListSize ( ) const
privatevirtual

Implements IRouteAggregator.

Definition at line 929 of file route_aggregator.cc.

template<typename T >
size_t RouteAggregator< T >::GetUpdateAggregateListSize ( ) const
privatevirtual

Implements IRouteAggregator.

Definition at line 914 of file route_aggregator.cc.

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:

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:

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:

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

Definition at line 191 of file route_aggregator.h.

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:

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

Definition at line 692 of file route_aggregator.cc.

template<typename T >
bool RouteAggregator< T >::MayDelete ( ) const

Definition at line 680 of file route_aggregator.cc.

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

Implements IRouteAggregator.

Definition at line 601 of file route_aggregator.cc.

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:

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:

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:

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

Definition at line 698 of file route_aggregator.cc.

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

Definition at line 897 of file route_aggregator.cc.

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

Definition at line 229 of file route_aggregator.h.

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

Definition at line 843 of file route_aggregator.cc.

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

Definition at line 712 of file route_aggregator.cc.

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

Definition at line 784 of file route_aggregator.cc.

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

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

Definition at line 243 of file route_aggregator.h.

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

Definition at line 241 of file route_aggregator.h.

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

Definition at line 249 of file route_aggregator.h.

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

Definition at line 250 of file route_aggregator.h.

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

Definition at line 242 of file route_aggregator.h.

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

Definition at line 246 of file route_aggregator.h.

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

Definition at line 240 of file route_aggregator.h.

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

Definition at line 248 of file route_aggregator.h.

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

Definition at line 245 of file route_aggregator.h.

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

Definition at line 247 of file route_aggregator.h.

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: