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

#include <vrf.h>

Inheritance diagram for VrfTable:
Collaboration diagram for VrfTable:

Public Types

typedef map< string, VrfEntry * > VrfNameTree
 
typedef pair< string, VrfEntry * > VrfNamePair
 
typedef std::set< std::string,
boost::uuids::uuid
CfgVmiTree
 
typedef map< string, RouteTable * > VrfDbTree
 
typedef pair< string,
RouteTable * > 
VrfDbPair
 
- Public Types inherited from DBTable
typedef boost::intrusive_ptr
< DBTableWalk
DBTableWalkRef
 
typedef boost::function< bool(DBTablePartBase
*, DBEntryBase *)> 
WalkFn
 
typedef boost::function< void(DBTableWalkRef,
DBTableBase *)> 
WalkCompleteFn
 
- Public Types inherited from DBTableBase
typedef boost::function< void(DBTablePartBase
*, DBEntryBase *)> 
ChangeCallback
 
typedef int ListenerId
 

Public Member Functions

 VrfTable (DB *db, const std::string &name)
 
virtual ~VrfTable ()
 
virtual std::unique_ptr< DBEntryAllocEntry (const DBRequestKey *k) const
 
virtual size_t Hash (const DBEntry *entry) const
 
virtual size_t Hash (const DBRequestKey *key) const
 
virtual void Input (DBTablePartition *root, DBClient *client, DBRequest *req)
 
void VrfReuse (std::string name)
 
virtual DBEntryOperDBAdd (const DBRequest *req)
 
virtual bool OperDBOnChange (DBEntry *entry, const DBRequest *req)
 
virtual bool OperDBDelete (DBEntry *entry, const DBRequest *req)
 
virtual void OnZeroRefcount (AgentDBEntry *e)
 
virtual AgentSandeshPtr GetAgentSandesh (const AgentSandeshArguments *args, const std::string &context)
 
virtual void Clear ()
 
void CreateVrf (const string &name, const boost::uuids::uuid &vn_uuid, uint32_t flags)
 
void CreateVrf (const string &name, const boost::uuids::uuid &vn_uuid, uint32_t flags, uint32_t isid, const std::string &bmac_vrf_name, uint32_t mac_aging_time, bool learning_enabled)
 
void DeleteVrf (const string &name, uint32_t flags=VrfData::ConfigVrf)
 
void CreateVrfReq (const string &name, uint32_t flags=VrfData::ConfigVrf)
 
void CreateVrfReq (const string &name, const boost::uuids::uuid &vn_uuid, uint32_t flags=VrfData::ConfigVrf)
 
void DeleteVrfReq (const string &name, uint32_t flags=VrfData::ConfigVrf)
 
void CreateStaticVrf (const string &name)
 
void DeleteStaticVrf (const string &name)
 
void CreateFabricPolicyVrf (const string &name)
 
virtual bool IFNodeToReq (IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
bool ProcessConfig (IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
VrfEntryFindVrfFromName (const string &name)
 
VrfEntryFindVrfFromId (size_t index)
 
VrfEntryFindVrfFromIdIncludingDeletedVrf (size_t index)
 
void FreeVrfId (size_t index)
 
InetUnicastAgentRouteTableGetInet4UnicastRouteTable (const std::string &vrf_name)
 
InetUnicastAgentRouteTableGetInet4MplsUnicastRouteTable (const std::string &vrf_name)
 
AgentRouteTableGetInet4MulticastRouteTable (const std::string &vrf_name)
 
AgentRouteTableGetEvpnRouteTable (const std::string &vrf_name)
 
AgentRouteTableGetBridgeRouteTable (const std::string &vrf_name)
 
AgentRouteTableGetRouteTable (const string &vrf_name, uint8_t table_type)
 
InetUnicastAgentRouteTableGetInet6UnicastRouteTable (const std::string &vrf_name)
 
bool IsStaticVrf (const std::string &vrf_name) const
 
void DeleteRoutes ()
 
void Shutdown ()
 
void DeleteFromDbTree (int table_type, const std::string &vrf_name)
 
void reset_route_delete_walker ()
 
void reset_vrf_delete_walker ()
 
- Public Member Functions inherited from AgentOperDBTable
 AgentOperDBTable (DB *db, const std::string &name)
 
 AgentOperDBTable (DB *db, const std::string &name, bool del_on_zero_refcount)
 
virtual ~AgentOperDBTable ()
 
virtual bool OperDBResync (DBEntry *entry, const DBRequest *req)
 
virtual void ConfigEventHandler (IFMapNode *node, DBEntry *entry)
 
- Public Member Functions inherited from AgentDBTable
 AgentDBTable (DB *db, const std::string &name)
 
 AgentDBTable (DB *db, const std::string &name, bool del_on_zero_refcount)
 
virtual ~AgentDBTable ()
 
virtual int PartitionCount () const
 
virtual DBEntryCfgAdd (DBRequest *req)
 
virtual bool IFLinkToReq (IFMapLink *link, IFMapNode *node, const std::string &peer_name, IFMapNode *peer, DBRequest &req)
 
virtual bool IFNodeToUuid (IFMapNode *node, boost::uuids::uuid &id)
 
virtual DBTablePartitionAllocPartition (int index)
 
virtual void NotifyEntry (DBEntryBase *entry)
 
void Notify (DBTablePartBase *partition, DBEntryBase *entry)
 
DBTableBase::ListenerId GetRefListenerId () const
 
AgentDBEntryFindActiveEntry (const DBEntry *key)
 
AgentDBEntryFindActiveEntryNoLock (const DBEntry *key)
 
AgentDBEntryFindActiveEntry (const DBRequestKey *key)
 
AgentDBEntryFindActiveEntryNoLock (const DBRequestKey *key)
 
AgentDBEntryFind (const DBEntry *key, bool ret_del)
 
AgentDBEntryFind (const DBRequestKey *key, bool ret_del)
 
virtual bool CanNotify (IFMapNode *dbe)
 
virtual void Process (DBRequest &req)
 
void set_agent (Agent *agent)
 
Agentagent () const
 
void Flush ()
 
void reset_flush_walk_ref ()
 
SandeshTraceBufferPtr GetOperDBTraceBuf () const
 
- Public Member Functions inherited from DBTable
 DBTable (DB *db, const std::string &name)
 
virtual ~DBTable ()
 
void Init ()
 
void NotifyAllEntries ()
 
DBEntryFind (const DBEntry *entry)
 
const DBEntryFind (const DBEntry *entry) const
 
DBEntryFind (const DBRequestKey *key, int id=-1)
 
const DBEntryFind (const DBRequestKey *key, int id=-1) const
 
DBEntryFindNoLock (const DBEntry *entry)
 
DBEntryFindNoLock (const DBRequestKey *key)
 
virtual DBTablePartBaseGetTablePartition (const DBRequestKey *key)
 
virtual const DBTablePartBaseGetTablePartition (const DBRequestKey *key) const
 
virtual DBTablePartBaseGetTablePartition (const DBEntryBase *entry)
 
virtual const DBTablePartBaseGetTablePartition (const DBEntryBase *entry) const
 
virtual DBTablePartBaseGetTablePartition (const int index)
 
virtual const DBTablePartBaseGetTablePartition (const int index) const
 
virtual void Change (DBEntryBase *entry)
 
virtual size_t Size () const
 
DBTableWalkRef AllocWalker (WalkFn walk_fn, WalkCompleteFn walk_complete)
 
void ReleaseWalker (DBTableWalkRef &walk)
 
void WalkTable (DBTableWalkRef walk)
 
void WalkAgain (DBTableWalkRef walk)
 
void SetWalkIterationToYield (int count)
 
int GetWalkIterationToYield ()
 
void SetWalkTaskId (int task_id)
 
int GetWalkerTaskId ()
 
- Public Member Functions inherited from DBTableBase
 DBTableBase (DB *db, const std::string &name)
 
virtual ~DBTableBase ()
 
bool Enqueue (DBRequest *req)
 
void EnqueueRemove (DBEntryBase *db_entry)
 
virtual void AddRemoveCallback (const DBEntryBase *entry, bool add) const
 
ListenerId Register (ChangeCallback callback, const std::string &name="unspecified")
 
void Unregister (ListenerId listener)
 
void RunNotify (DBTablePartBase *tpart, DBEntryBase *entry)
 
void AddToDBStateCount (ListenerId listener, int count)
 
uint64_t GetDBStateCount (ListenerId listener)
 
bool empty () const
 
virtual void RetryDelete ()
 
virtual bool MayDelete () const
 
DBdatabase ()
 
const DBdatabase () const
 
const std::string & name () const
 
bool HasListeners () const
 
size_t GetListenerCount () const
 
void FillListeners (std::vector< ShowTableListener > *listeners) const
 
uint64_t enqueue_count () const
 
void incr_enqueue_count ()
 
void reset_enqueue_count ()
 
uint64_t input_count () const
 
void incr_input_count ()
 
void reset_input_count ()
 
uint64_t notify_count () const
 
void incr_notify_count ()
 
void reset_notify_count ()
 
bool HasWalkers () const
 
uint64_t walker_count () const
 
void incr_walker_count ()
 
uint64_t decr_walker_count ()
 
uint64_t walk_request_count () const
 
uint64_t walk_complete_count () const
 
uint64_t walk_cancel_count () const
 
uint64_t walk_again_count () const
 
uint64_t walk_count () const
 
void incr_walk_request_count ()
 
void incr_walk_complete_count ()
 
void incr_walk_cancel_count ()
 
void incr_walk_again_count ()
 
void incr_walk_count ()
 

Static Public Member Functions

static DBTableBaseCreateTable (DB *db, const std::string &name)
 
static VrfTableGetInstance ()
 
- Static Public Member Functions inherited from DBTable
static void DBStateClear (DBTable *table, ListenerId id)
 

Static Public Attributes

static const uint32_t kDefaultMacAgingTime = 300
 
- Static Public Attributes inherited from AgentDBTable
static const int kPartitionCount = 1
 
- Static Public Attributes inherited from DBTable
static const int kIterationToYield = 256
 
- Static Public Attributes inherited from DBTableBase
static const int kInvalidId = -1
 

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (VrfTable)
 

Private Attributes

DBdb_
 
IndexVector< VrfEntry * > index_table_
 
VrfNameTree name_tree_
 
VrfDbTree dbtree_ [Agent::ROUTE_TABLE_MAX]
 
DBTableWalker::WalkId walkid_
 
std::set< std::string > static_vrf_set_
 
AgentRouteWalkerPtr route_delete_walker_
 
AgentRouteWalkerPtr vrf_delete_walker_
 

Static Private Attributes

static VrfTablevrf_table_
 

Friends

class VrfEntry
 

Additional Inherited Members

- Protected Member Functions inherited from AgentOperDBTable
void UpdateIfMapNode (AgentOperDBEntry *entry, IFMapNode *node)
 
virtual DBEntryAdd (const DBRequest *req)
 
virtual bool OnChange (DBEntry *entry, const DBRequest *req)
 
virtual bool Resync (DBEntry *entry, const DBRequest *req)
 
virtual bool Delete (DBEntry *entry, const DBRequest *req)
 

Detailed Description

Definition at line 268 of file vrf.h.

Member Typedef Documentation

typedef std::set<std::string, boost::uuids::uuid> VrfTable::CfgVmiTree

Definition at line 277 of file vrf.h.

typedef pair<string, RouteTable *> VrfTable::VrfDbPair

Definition at line 281 of file vrf.h.

typedef map<string, RouteTable *> VrfTable::VrfDbTree

Definition at line 280 of file vrf.h.

typedef pair<string, VrfEntry *> VrfTable::VrfNamePair

Definition at line 273 of file vrf.h.

typedef map<string, VrfEntry *> VrfTable::VrfNameTree

Definition at line 272 of file vrf.h.

Constructor & Destructor Documentation

VrfTable::VrfTable ( DB db,
const std::string &  name 
)
inline

Definition at line 283 of file vrf.h.

VrfTable::~VrfTable ( )
virtual

Definition at line 642 of file vrf.cc.

Member Function Documentation

std::unique_ptr< DBEntry > VrfTable::AllocEntry ( const DBRequestKey k) const
virtual

Implements DBTable.

Definition at line 636 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::Clear ( )
virtual

Reimplemented from AgentDBTable.

Definition at line 627 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::CreateFabricPolicyVrf ( const string &  name)

Definition at line 1000 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::CreateStaticVrf ( const string &  name)

Definition at line 995 of file vrf.cc.

Here is the call graph for this function:

DBTableBase * VrfTable::CreateTable ( DB db,
const std::string &  name 
)
static

Definition at line 867 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::CreateVrf ( const string &  name,
const boost::uuids::uuid vn_uuid,
uint32_t  flags 
)

Definition at line 970 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::CreateVrf ( const string &  name,
const boost::uuids::uuid vn_uuid,
uint32_t  flags,
uint32_t  isid,
const std::string &  bmac_vrf_name,
uint32_t  mac_aging_time,
bool  learning_enabled 
)

Definition at line 957 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::CreateVrfReq ( const string &  name,
uint32_t  flags = VrfData::ConfigVrf 
)

Definition at line 939 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::CreateVrfReq ( const string &  name,
const boost::uuids::uuid vn_uuid,
uint32_t  flags = VrfData::ConfigVrf 
)

Definition at line 947 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::DeleteFromDbTree ( int  table_type,
const std::string &  vrf_name 
)

Definition at line 1016 of file vrf.cc.

void VrfTable::DeleteRoutes ( )

Definition at line 1363 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::DeleteStaticVrf ( const string &  name)

Definition at line 1011 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::DeleteVrf ( const string &  name,
uint32_t  flags = VrfData::ConfigVrf 
)

Definition at line 987 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::DeleteVrfReq ( const string &  name,
uint32_t  flags = VrfData::ConfigVrf 
)

Definition at line 979 of file vrf.cc.

Here is the call graph for this function:

VrfTable::DISALLOW_COPY_AND_ASSIGN ( VrfTable  )
private
VrfEntry * VrfTable::FindVrfFromId ( size_t  index)

Definition at line 884 of file vrf.cc.

Here is the call graph for this function:

VrfEntry * VrfTable::FindVrfFromIdIncludingDeletedVrf ( size_t  index)

Definition at line 892 of file vrf.cc.

Here is the call graph for this function:

VrfEntry * VrfTable::FindVrfFromName ( const string &  name)

Definition at line 873 of file vrf.cc.

void VrfTable::FreeVrfId ( size_t  index)

Definition at line 623 of file vrf.cc.

Here is the call graph for this function:

AgentSandeshPtr VrfTable::GetAgentSandesh ( const AgentSandeshArguments args,
const std::string &  context 
)
virtual

Reimplemented from AgentDBTable.

Definition at line 1317 of file vrf.cc.

Here is the call graph for this function:

AgentRouteTable * VrfTable::GetBridgeRouteTable ( const std::string &  vrf_name)

Definition at line 917 of file vrf.cc.

Here is the call graph for this function:

AgentRouteTable * VrfTable::GetEvpnRouteTable ( const std::string &  vrf_name)

Definition at line 913 of file vrf.cc.

Here is the call graph for this function:

InetUnicastAgentRouteTable * VrfTable::GetInet4MplsUnicastRouteTable ( const std::string &  vrf_name)

Definition at line 904 of file vrf.cc.

AgentRouteTable * VrfTable::GetInet4MulticastRouteTable ( const std::string &  vrf_name)

Definition at line 909 of file vrf.cc.

Here is the call graph for this function:

InetUnicastAgentRouteTable * VrfTable::GetInet4UnicastRouteTable ( const std::string &  vrf_name)

Definition at line 898 of file vrf.cc.

InetUnicastAgentRouteTable * VrfTable::GetInet6UnicastRouteTable ( const std::string &  vrf_name)

Definition at line 922 of file vrf.cc.

static VrfTable* VrfTable::GetInstance ( )
inlinestatic

Definition at line 323 of file vrf.h.

AgentRouteTable * VrfTable::GetRouteTable ( const string &  vrf_name,
uint8_t  table_type 
)

Definition at line 927 of file vrf.cc.

virtual size_t VrfTable::Hash ( const DBEntry entry) const
inlinevirtual

Reimplemented from DBTable.

Definition at line 291 of file vrf.h.

virtual size_t VrfTable::Hash ( const DBRequestKey key) const
inlinevirtual

Reimplemented from DBTable.

Definition at line 292 of file vrf.h.

bool VrfTable::IFNodeToReq ( IFMapNode node,
DBRequest req,
const boost::uuids::uuid u 
)
virtual

Reimplemented from AgentDBTable.

Definition at line 1252 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::Input ( DBTablePartition root,
DBClient client,
DBRequest req 
)
virtual

Reimplemented from AgentDBTable.

Definition at line 1020 of file vrf.cc.

Here is the call graph for this function:

bool VrfTable::IsStaticVrf ( const std::string &  vrf_name) const
inline

Definition at line 345 of file vrf.h.

void VrfTable::OnZeroRefcount ( AgentDBEntry e)
virtual

Reimplemented from AgentDBTable.

Definition at line 856 of file vrf.cc.

Here is the call graph for this function:

DBEntry * VrfTable::OperDBAdd ( const DBRequest req)
virtual

Implements AgentOperDBTable.

Definition at line 645 of file vrf.cc.

Here is the call graph for this function:

bool VrfTable::OperDBDelete ( DBEntry entry,
const DBRequest req 
)
virtual

Implements AgentOperDBTable.

Definition at line 781 of file vrf.cc.

Here is the call graph for this function:

bool VrfTable::OperDBOnChange ( DBEntry entry,
const DBRequest req 
)
virtual

Implements AgentOperDBTable.

Definition at line 688 of file vrf.cc.

Here is the call graph for this function:

bool VrfTable::ProcessConfig ( IFMapNode node,
DBRequest req,
const boost::uuids::uuid u 
)
virtual

Reimplemented from AgentDBTable.

Definition at line 1279 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::reset_route_delete_walker ( )
inline

Definition at line 355 of file vrf.h.

void VrfTable::reset_vrf_delete_walker ( )
inline

Definition at line 356 of file vrf.h.

void VrfTable::Shutdown ( )

Definition at line 1377 of file vrf.cc.

Here is the call graph for this function:

void VrfTable::VrfReuse ( std::string  name)

Definition at line 842 of file vrf.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class VrfEntry
friend

Definition at line 359 of file vrf.h.

Member Data Documentation

DB* VrfTable::db_
private

Definition at line 361 of file vrf.h.

VrfDbTree VrfTable::dbtree_[Agent::ROUTE_TABLE_MAX]
private

Definition at line 365 of file vrf.h.

IndexVector<VrfEntry *> VrfTable::index_table_
private

Definition at line 363 of file vrf.h.

const uint32_t VrfTable::kDefaultMacAgingTime = 300
static

Definition at line 270 of file vrf.h.

VrfNameTree VrfTable::name_tree_
private

Definition at line 364 of file vrf.h.

AgentRouteWalkerPtr VrfTable::route_delete_walker_
private

Definition at line 368 of file vrf.h.

std::set<std::string> VrfTable::static_vrf_set_
private

Definition at line 367 of file vrf.h.

AgentRouteWalkerPtr VrfTable::vrf_delete_walker_
private

Definition at line 369 of file vrf.h.

VrfTable * VrfTable::vrf_table_
staticprivate

Definition at line 362 of file vrf.h.

DBTableWalker::WalkId VrfTable::walkid_
private

Definition at line 366 of file vrf.h.


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