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

#include <bgp_membership.h>

Collaboration diagram for BgpMembershipManager:

Classes

struct  Event
 
class  PeerRibState
 
class  PeerState
 
class  RibState
 
class  Walker
 

Public Types

typedef boost::function< void(IPeer
*, BgpTable *, bool)> 
PeerRegistrationCallback
 

Public Member Functions

 BgpMembershipManager (BgpServer *server)
 
virtual ~BgpMembershipManager ()
 
int RegisterPeerRegistrationCallback (PeerRegistrationCallback callback)
 
void UnregisterPeerRegistrationCallback (int id)
 
virtual void Register (IPeer *peer, BgpTable *table, const RibExportPolicy &policy, int instance_id=-1)
 
void RegisterRibIn (IPeer *peer, BgpTable *table)
 
virtual void Unregister (IPeer *peer, BgpTable *table)
 
void UnregisterRibIn (IPeer *peer, BgpTable *table)
 
virtual void UnregisterRibOut (IPeer *peer, BgpTable *table)
 
void WalkRibIn (IPeer *peer, BgpTable *table)
 
bool GetRegistrationInfo (const IPeer *peer, const BgpTable *table, int *instance_id=NULL, uint64_t *subscription_gen_id=NULL) const
 
void SetRegistrationInfo (const IPeer *peer, const BgpTable *table, int instance_id, uint64_t subscription_gen_id)
 
bool IsRegistered (const IPeer *peer, const BgpTable *table) const
 
bool IsRibInRegistered (const IPeer *peer, const BgpTable *table) const
 
bool IsRibOutRegistered (const IPeer *peer, const BgpTable *table) const
 
uint32_t GetRibOutQueueDepth (const IPeer *peer, const BgpTable *table) const
 
void GetRegisteredRibs (const IPeer *peer, std::list< BgpTable * > *table_list) const
 
void FillRoutingInstanceTableInfo (ShowRoutingInstanceTable *srit, const BgpTable *table) const
 
void FillPeerMembershipInfo (const IPeer *peer, BgpNeighborResp *resp) const
 
BgpServerserver ()
 
bool IsQueueEmpty () const
 
size_t GetMembershipCount () const
 
uint64_t current_jobs_count () const
 
uint64_t total_jobs_count () const
 

Protected Member Functions

virtual bool EventCallbackInternal (Event *event)
 
virtual bool AssertRegister (PeerRibState *prs, bool do_assert=true)
 
virtual bool AssertUnregister (PeerRibState *prs, bool do_assert=true)
 
virtual bool AssertRegisterRibIn (PeerRibState *prs, IPeer *peer, bool do_assert=true)
 
virtual bool AssertWalkRibIn (PeerRibState *prs, bool do_assert=true)
 

Protected Attributes

tbb::spin_rw_mutex rw_mutex_
 

Private Types

enum  Action {
  NONE, RIBOUT_ADD, RIBIN_DELETE, RIBIN_WALK,
  RIBIN_WALK_RIBOUT_DELETE, RIBIN_DELETE_RIBOUT_DELETE
}
 
enum  EventType {
  REGISTER_RIB, REGISTER_RIB_COMPLETE, UNREGISTER_RIB, UNREGISTER_RIB_COMPLETE,
  WALK_RIB_COMPLETE
}
 
typedef std::vector
< PeerRegistrationCallback
PeerRegistrationListenerList
 
typedef std::map< const IPeer
*, PeerState * > 
PeerStateMap
 
typedef std::map< const
BgpTable *, RibState * > 
RibStateMap
 
typedef std::set< PeerRibState * > PeerRibList
 

Private Member Functions

void UnregisterRibInUnlocked (PeerRibState *prs)
 
PeerStateLocatePeerState (IPeer *peer)
 
PeerStateFindPeerState (const IPeer *peer)
 
const PeerStateFindPeerState (const IPeer *peer) const
 
void DestroyPeerState (PeerState *ps)
 
RibStateLocateRibState (BgpTable *table)
 
RibStateFindRibState (const BgpTable *table)
 
const RibStateFindRibState (const BgpTable *table) const
 
void DestroyRibState (RibState *ps)
 
void EnqueueRibState (RibState *rs)
 
PeerRibStateLocatePeerRibState (IPeer *peer, BgpTable *table)
 
PeerRibStateFindPeerRibState (const IPeer *peer, const BgpTable *table)
 
const PeerRibStateFindPeerRibState (const IPeer *peer, const BgpTable *table) const
 
void DestroyPeerRibState (PeerRibState *prs)
 
void TriggerRegisterRibCompleteEvent (IPeer *peer, BgpTable *table)
 
void TriggerUnregisterRibCompleteEvent (IPeer *peer, BgpTable *table)
 
void TriggerWalkRibCompleteEvent (IPeer *peer, BgpTable *table)
 
void ProcessRegisterRibEvent (Event *event)
 
void ProcessRegisterRibCompleteEvent (Event *event)
 
void ProcessUnregisterRibEvent (Event *event)
 
void ProcessUnregisterRibCompleteEvent (Event *event)
 
void ProcessWalkRibCompleteEvent (Event *event)
 
void EnqueueEvent (Event *event)
 
bool EventCallback (Event *event)
 
void NotifyPeerRegistration (IPeer *peer, BgpTable *table, bool unregister)
 
void SetQueueDisable (bool value)
 
Walkerwalker ()
 
 DISALLOW_COPY_AND_ASSIGN (BgpMembershipManager)
 

Private Attributes

BgpServerserver_
 
tbb::atomic< uint64_t > current_jobs_count_
 
tbb::atomic< uint64_t > total_jobs_count_
 
RibStateMap rib_state_map_
 
PeerStateMap peer_state_map_
 
boost::scoped_ptr< Walkerwalker_
 
boost::scoped_ptr< WorkQueue
< Event * > > 
event_queue_
 
boost::dynamic_bitset registration_bmap_
 
PeerRegistrationListenerList registration_callbacks_
 

Friends

class BgpMembershipManager::PeerState
 
class BgpMembershipManager::RibState
 
class BgpMembershipManager::PeerRibState
 
class BgpMembershipManager::Walker
 
class BgpMembershipTest
 
class BgpServerUnitTest
 
class BgpXmppUnitTest
 

Detailed Description

Definition at line 86 of file bgp_membership.h.

Member Typedef Documentation

typedef boost::function<void(IPeer *, BgpTable *, bool)> BgpMembershipManager::PeerRegistrationCallback

Definition at line 89 of file bgp_membership.h.

Definition at line 172 of file bgp_membership.h.

typedef std::set<PeerRibState *> BgpMembershipManager::PeerRibList
private

Definition at line 175 of file bgp_membership.h.

typedef std::map<const IPeer *, PeerState *> BgpMembershipManager::PeerStateMap
private

Definition at line 173 of file bgp_membership.h.

typedef std::map<const BgpTable *, RibState *> BgpMembershipManager::RibStateMap
private

Definition at line 174 of file bgp_membership.h.

Member Enumeration Documentation

Enumerator
NONE 
RIBOUT_ADD 
RIBIN_DELETE 
RIBIN_WALK 
RIBIN_WALK_RIBOUT_DELETE 
RIBIN_DELETE_RIBOUT_DELETE 

Definition at line 155 of file bgp_membership.h.

Enumerator
REGISTER_RIB 
REGISTER_RIB_COMPLETE 
UNREGISTER_RIB 
UNREGISTER_RIB_COMPLETE 
WALK_RIB_COMPLETE 

Definition at line 164 of file bgp_membership.h.

Constructor & Destructor Documentation

BgpMembershipManager::BgpMembershipManager ( BgpServer server)
explicit

Definition at line 27 of file bgp_membership.cc.

BgpMembershipManager::~BgpMembershipManager ( )
virtual

Definition at line 40 of file bgp_membership.cc.

Member Function Documentation

bool BgpMembershipManager::AssertRegister ( PeerRibState prs,
bool  do_assert = true 
)
protectedvirtual

Definition at line 101 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::AssertRegisterRibIn ( PeerRibState prs,
IPeer peer,
bool  do_assert = true 
)
protectedvirtual

Definition at line 136 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::AssertUnregister ( PeerRibState prs,
bool  do_assert = true 
)
protectedvirtual

Definition at line 171 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::AssertWalkRibIn ( PeerRibState prs,
bool  do_assert = true 
)
protectedvirtual

Definition at line 265 of file bgp_membership.cc.

Here is the call graph for this function:

uint64_t BgpMembershipManager::current_jobs_count ( ) const
inline

Definition at line 126 of file bgp_membership.h.

void BgpMembershipManager::DestroyPeerRibState ( PeerRibState prs)
private

Definition at line 576 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::DestroyPeerState ( PeerState ps)
private

Definition at line 483 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::DestroyRibState ( RibState ps)
private

Definition at line 525 of file bgp_membership.cc.

Here is the call graph for this function:

BgpMembershipManager::DISALLOW_COPY_AND_ASSIGN ( BgpMembershipManager  )
private
void BgpMembershipManager::EnqueueEvent ( Event event)
inlineprivate

Definition at line 206 of file bgp_membership.h.

void BgpMembershipManager::EnqueueRibState ( RibState rs)
private

Definition at line 534 of file bgp_membership.cc.

bool BgpMembershipManager::EventCallback ( Event event)
private

Definition at line 765 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::EventCallbackInternal ( Event event)
protectedvirtual

Definition at line 736 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::FillPeerMembershipInfo ( const IPeer peer,
BgpNeighborResp *  resp 
) const

Definition at line 406 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::FillRoutingInstanceTableInfo ( ShowRoutingInstanceTable *  srit,
const BgpTable table 
) const

Definition at line 394 of file bgp_membership.cc.

Here is the call graph for this function:

BgpMembershipManager::PeerRibState * BgpMembershipManager::FindPeerRibState ( const IPeer peer,
const BgpTable table 
)
private

Definition at line 553 of file bgp_membership.cc.

Here is the call graph for this function:

const BgpMembershipManager::PeerRibState * BgpMembershipManager::FindPeerRibState ( const IPeer peer,
const BgpTable table 
) const
private

Definition at line 565 of file bgp_membership.cc.

Here is the call graph for this function:

BgpMembershipManager::PeerState * BgpMembershipManager::FindPeerState ( const IPeer peer)
private

Definition at line 464 of file bgp_membership.cc.

const BgpMembershipManager::PeerState * BgpMembershipManager::FindPeerState ( const IPeer peer) const
private

Definition at line 474 of file bgp_membership.cc.

BgpMembershipManager::RibState * BgpMembershipManager::FindRibState ( const BgpTable table)
private

Definition at line 506 of file bgp_membership.cc.

const BgpMembershipManager::RibState * BgpMembershipManager::FindRibState ( const BgpTable table) const
private

Definition at line 516 of file bgp_membership.cc.

size_t BgpMembershipManager::GetMembershipCount ( ) const

Definition at line 436 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::GetRegisteredRibs ( const IPeer peer,
std::list< BgpTable * > *  table_list 
) const

Definition at line 381 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::GetRegistrationInfo ( const IPeer peer,
const BgpTable table,
int *  instance_id = NULL,
uint64_t *  subscription_gen_id = NULL 
) const

Definition at line 305 of file bgp_membership.cc.

Here is the call graph for this function:

uint32_t BgpMembershipManager::GetRibOutQueueDepth ( const IPeer peer,
const BgpTable table 
) const

Definition at line 366 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::IsQueueEmpty ( ) const

Definition at line 429 of file bgp_membership.cc.

bool BgpMembershipManager::IsRegistered ( const IPeer peer,
const BgpTable table 
) const

Definition at line 336 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::IsRibInRegistered ( const IPeer peer,
const BgpTable table 
) const

Definition at line 346 of file bgp_membership.cc.

Here is the call graph for this function:

bool BgpMembershipManager::IsRibOutRegistered ( const IPeer peer,
const BgpTable table 
) const

Definition at line 356 of file bgp_membership.cc.

Here is the call graph for this function:

BgpMembershipManager::PeerRibState * BgpMembershipManager::LocatePeerRibState ( IPeer peer,
BgpTable table 
)
private

Definition at line 541 of file bgp_membership.cc.

Here is the call graph for this function:

BgpMembershipManager::PeerState * BgpMembershipManager::LocatePeerState ( IPeer peer)
private

Definition at line 449 of file bgp_membership.cc.

BgpMembershipManager::RibState * BgpMembershipManager::LocateRibState ( BgpTable table)
private

Definition at line 491 of file bgp_membership.cc.

void BgpMembershipManager::NotifyPeerRegistration ( IPeer peer,
BgpTable table,
bool  unregister 
)
private

Definition at line 84 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::ProcessRegisterRibCompleteEvent ( Event event)
private

Definition at line 644 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::ProcessRegisterRibEvent ( Event event)
private

Definition at line 616 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::ProcessUnregisterRibCompleteEvent ( Event event)
private

Definition at line 683 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::ProcessUnregisterRibEvent ( Event event)
private

Definition at line 662 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::ProcessWalkRibCompleteEvent ( Event event)
private

Definition at line 710 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::Register ( IPeer peer,
BgpTable table,
const RibExportPolicy policy,
int  instance_id = -1 
)
virtual

Definition at line 119 of file bgp_membership.cc.

Here is the call graph for this function:

int BgpMembershipManager::RegisterPeerRegistrationCallback ( PeerRegistrationCallback  callback)

Definition at line 46 of file bgp_membership.cc.

void BgpMembershipManager::RegisterRibIn ( IPeer peer,
BgpTable table 
)

Definition at line 160 of file bgp_membership.cc.

Here is the call graph for this function:

BgpServer* BgpMembershipManager::server ( )
inline

Definition at line 123 of file bgp_membership.h.

void BgpMembershipManager::SetQueueDisable ( bool  value)
inlineprivate

Definition at line 212 of file bgp_membership.h.

void BgpMembershipManager::SetRegistrationInfo ( const IPeer peer,
const BgpTable table,
int  instance_id,
uint64_t  subscription_gen_id 
)

Definition at line 322 of file bgp_membership.cc.

Here is the call graph for this function:

uint64_t BgpMembershipManager::total_jobs_count ( ) const
inline

Definition at line 127 of file bgp_membership.h.

void BgpMembershipManager::TriggerRegisterRibCompleteEvent ( IPeer peer,
BgpTable table 
)
private

Definition at line 589 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::TriggerUnregisterRibCompleteEvent ( IPeer peer,
BgpTable table 
)
private

Definition at line 598 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::TriggerWalkRibCompleteEvent ( IPeer peer,
BgpTable table 
)
private

Definition at line 607 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::Unregister ( IPeer peer,
BgpTable table 
)
virtual

Definition at line 189 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::UnregisterPeerRegistrationCallback ( int  id)

Definition at line 64 of file bgp_membership.cc.

void BgpMembershipManager::UnregisterRibIn ( IPeer peer,
BgpTable table 
)

Definition at line 216 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::UnregisterRibInUnlocked ( PeerRibState prs)
private

Definition at line 231 of file bgp_membership.cc.

Here is the call graph for this function:

void BgpMembershipManager::UnregisterRibOut ( IPeer peer,
BgpTable table 
)
virtual

Definition at line 248 of file bgp_membership.cc.

Here is the call graph for this function:

Walker* BgpMembershipManager::walker ( )
inlineprivate

Definition at line 213 of file bgp_membership.h.

void BgpMembershipManager::WalkRibIn ( IPeer peer,
BgpTable table 
)

Definition at line 286 of file bgp_membership.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

Definition at line 149 of file bgp_membership.h.

friend class BgpMembershipManager::PeerState
friend

Definition at line 145 of file bgp_membership.h.

friend class BgpMembershipManager::RibState
friend

Definition at line 148 of file bgp_membership.h.

friend class BgpMembershipManager::Walker
friend

Definition at line 150 of file bgp_membership.h.

friend class BgpMembershipTest
friend

Definition at line 151 of file bgp_membership.h.

friend class BgpServerUnitTest
friend

Definition at line 152 of file bgp_membership.h.

friend class BgpXmppUnitTest
friend

Definition at line 153 of file bgp_membership.h.

Member Data Documentation

tbb::atomic<uint64_t> BgpMembershipManager::current_jobs_count_
private

Definition at line 216 of file bgp_membership.h.

boost::scoped_ptr<WorkQueue<Event *> > BgpMembershipManager::event_queue_
private

Definition at line 221 of file bgp_membership.h.

PeerStateMap BgpMembershipManager::peer_state_map_
private

Definition at line 219 of file bgp_membership.h.

boost::dynamic_bitset BgpMembershipManager::registration_bmap_
private

Definition at line 223 of file bgp_membership.h.

PeerRegistrationListenerList BgpMembershipManager::registration_callbacks_
private

Definition at line 224 of file bgp_membership.h.

RibStateMap BgpMembershipManager::rib_state_map_
private

Definition at line 218 of file bgp_membership.h.

tbb::spin_rw_mutex BgpMembershipManager::rw_mutex_
mutableprotected

Definition at line 140 of file bgp_membership.h.

BgpServer* BgpMembershipManager::server_
private

Definition at line 215 of file bgp_membership.h.

tbb::atomic<uint64_t> BgpMembershipManager::total_jobs_count_
private

Definition at line 217 of file bgp_membership.h.

boost::scoped_ptr<Walker> BgpMembershipManager::walker_
private

Definition at line 220 of file bgp_membership.h.


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