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

#include <mirror_table.h>

Inheritance diagram for MirrorTable:
Collaboration diagram for MirrorTable:

Classes

struct  MirrorVrfState
 

Public Types

typedef std::vector
< MirrorEntry * > 
MirrorEntryList
 
typedef std::map< std::string,
MirrorEntryList
VrfMirrorEntryList
 
typedef std::pair< std::string,
MirrorEntryList
VrfMirrorEntry
 
- 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

 MirrorTable (DB *db, const std::string &name)
 
virtual ~MirrorTable ()
 
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 DBEntryAdd (const DBRequest *req)
 
virtual bool OnChange (DBEntry *entry, const DBRequest *req)
 
virtual bool Delete (DBEntry *entry, const DBRequest *request)
 
virtual bool Resync (DBEntry *entry, const DBRequest *req)
 
virtual AgentSandeshPtr GetAgentSandesh (const AgentSandeshArguments *args, const std::string &context)
 
VrfEntryFindVrfEntry (const std::string &vrf_name) const
 
virtual void OnZeroRefcount (AgentDBEntry *e)
 
void MirrorSockInit (void)
 
void ReadHandler (const boost::system::error_code &error, size_t bytes)
 
void AddUnresolved (MirrorEntry *entry)
 
void RemoveUnresolved (MirrorEntry *entry)
 
void AddResolvedVrfMirrorEntry (MirrorEntry *entry)
 
void DeleteResolvedVrfMirrorEntry (MirrorEntry *entry)
 
void ResyncMirrorEntry (VrfMirrorEntryList &list, const VrfEntry *vrf)
 
void ResyncResolvedMirrorEntry (const VrfEntry *vrf)
 
void ResyncUnresolvedMirrorEntry (const VrfEntry *vrf)
 
void Add (VrfMirrorEntryList &vrf_entry_map, MirrorEntry *entry)
 
void Delete (VrfMirrorEntryList &vrf_entry_map, MirrorEntry *entry)
 
void VrfListenerInit ()
 
void VrfNotify (DBTablePartBase *root, DBEntryBase *entry)
 
void Shutdown ()
 
void Initialize ()
 
bool OnChange (MirrorEntry *mirror_entry)
 
void BridgeRouteTableNotify (DBTablePartBase *partition, DBEntryBase *e)
 
void UnRegisterBridgeRouteTableListener (const VrfEntry *entry, MirrorVrfState *state)
 
bool UnresolvedMirrorVrf (const VrfEntry *vrf, VrfMirrorEntryList &list)
 
MirrorEntryGetMirrorEntry (VrfEntry *vrf, const MacAddress &mac, VrfMirrorEntryList &list)
 
void DeleteMirrorVrf (MirrorEntry *entry, bool del_from_vrf_list)
 
bool IsConfigured ()
 
- 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 void Input (DBTablePartition *root, DBClient *client, DBRequest *req)
 
virtual DBEntryCfgAdd (DBRequest *req)
 
virtual void Clear ()
 
virtual bool IFNodeToReq (IFMapNode *node, DBRequest &req, const boost::uuids::uuid &uuid)
 
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)
 
virtual bool ProcessConfig (IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
 
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 void AddMirrorEntry (const std::string &analyzer_name, const std::string &vrf_name, const IpAddress &sip, uint16_t sport, const IpAddress &dip, uint16_t dport)
 
static void AddMirrorEntry (const std::string &analyzer_name, const std::string &vrf_name, const IpAddress &sip, uint16_t sport, const IpAddress &dip, uint16_t dport, uint32_t vni, uint8_t mirror_flag, const MacAddress &mac)
 
static void AddMirrorEntry (const std::string &analyzer_name, uint32_t nic_assisted_mirroring_vlan)
 
static void DelMirrorEntry (const std::string &analyzer_name)
 
static DBTableBaseCreateTable (DB *db, const std::string &name)
 
static MirrorTableGetInstance ()
 
static
MirrorEntryData::MirrorEntryFlags 
DecodeMirrorFlag (const std::string &nh_mode, bool juniper_header)
 
- Static Public Member Functions inherited from DBTable
static void DBStateClear (DBTable *table, ListenerId id)
 

Static Public Attributes

static const unsigned bufLen = 512
 
static const uint8_t kInvalidIndex = 0xFF
 
- 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 Attributes

std::unique_ptr
< boost::asio::ip::udp::socket > 
udp_sock_
 
char rx_buff_ [bufLen]
 
VrfMirrorEntryList unresolved_entry_list_
 
VrfMirrorEntryList resolved_entry_list_
 
DBTableBase::ListenerId vrf_listener_id_
 

Static Private Attributes

static MirrorTablemirror_table_
 

Detailed Description

Definition at line 116 of file mirror_table.h.

Member Typedef Documentation

typedef std::vector<MirrorEntry *> MirrorTable::MirrorEntryList

Definition at line 120 of file mirror_table.h.

typedef std::pair<std::string , MirrorEntryList> MirrorTable::VrfMirrorEntry

Definition at line 122 of file mirror_table.h.

typedef std::map<std::string , MirrorEntryList> MirrorTable::VrfMirrorEntryList

Definition at line 121 of file mirror_table.h.

Constructor & Destructor Documentation

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

Definition at line 124 of file mirror_table.h.

MirrorTable::~MirrorTable ( )
virtual

Definition at line 24 of file mirror_table.cc.

Member Function Documentation

DBEntry * MirrorTable::Add ( const DBRequest req)
virtual

Reimplemented from DBTable.

Definition at line 52 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::Add ( VrfMirrorEntryList vrf_entry_map,
MirrorEntry entry 
)

Definition at line 263 of file mirror_table.cc.

void MirrorTable::AddMirrorEntry ( const std::string &  analyzer_name,
const std::string &  vrf_name,
const IpAddress sip,
uint16_t  sport,
const IpAddress dip,
uint16_t  dport 
)
static

Definition at line 385 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::AddMirrorEntry ( const std::string &  analyzer_name,
const std::string &  vrf_name,
const IpAddress sip,
uint16_t  sport,
const IpAddress dip,
uint16_t  dport,
uint32_t  vni,
uint8_t  mirror_flag,
const MacAddress mac 
)
static

Definition at line 351 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::AddMirrorEntry ( const std::string &  analyzer_name,
uint32_t  nic_assisted_mirroring_vlan 
)
static

Definition at line 415 of file mirror_table.cc.

void MirrorTable::AddResolvedVrfMirrorEntry ( MirrorEntry entry)

Definition at line 334 of file mirror_table.cc.

void MirrorTable::AddUnresolved ( MirrorEntry entry)

Definition at line 326 of file mirror_table.cc.

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

Implements DBTable.

Definition at line 46 of file mirror_table.cc.

void MirrorTable::BridgeRouteTableNotify ( DBTablePartBase partition,
DBEntryBase e 
)

Definition at line 526 of file mirror_table.cc.

Here is the call graph for this function:

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

Definition at line 441 of file mirror_table.cc.

MirrorEntryData::MirrorEntryFlags MirrorTable::DecodeMirrorFlag ( const std::string &  nh_mode,
bool  juniper_header 
)
static

Definition at line 672 of file mirror_table.cc.

bool MirrorTable::Delete ( DBEntry entry,
const DBRequest request 
)
virtual

Reimplemented from DBTable.

Definition at line 237 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::Delete ( VrfMirrorEntryList vrf_entry_map,
MirrorEntry entry 
)

Definition at line 283 of file mirror_table.cc.

void MirrorTable::DeleteMirrorVrf ( MirrorEntry entry,
bool  del_from_vrf_list 
)

Definition at line 245 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::DeleteResolvedVrfMirrorEntry ( MirrorEntry entry)

Definition at line 338 of file mirror_table.cc.

void MirrorTable::DelMirrorEntry ( const std::string &  analyzer_name)
static

Definition at line 427 of file mirror_table.cc.

VrfEntry * MirrorTable::FindVrfEntry ( const std::string &  vrf_name) const

Definition at line 608 of file mirror_table.cc.

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

Reimplemented from AgentDBTable.

Definition at line 665 of file mirror_table.cc.

Here is the call graph for this function:

static MirrorTable* MirrorTable::GetInstance ( )
inlinestatic

Definition at line 156 of file mirror_table.h.

MirrorEntry * MirrorTable::GetMirrorEntry ( VrfEntry vrf,
const MacAddress mac,
VrfMirrorEntryList list 
)

Definition at line 509 of file mirror_table.cc.

Here is the call graph for this function:

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

Reimplemented from DBTable.

Definition at line 128 of file mirror_table.h.

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

Reimplemented from DBTable.

Definition at line 129 of file mirror_table.h.

void MirrorTable::Initialize ( )

Definition at line 447 of file mirror_table.cc.

bool MirrorTable::IsConfigured ( )

Definition at line 616 of file mirror_table.cc.

void MirrorTable::MirrorSockInit ( void  )

Definition at line 577 of file mirror_table.cc.

Here is the call graph for this function:

bool MirrorTable::OnChange ( DBEntry entry,
const DBRequest req 
)
virtual

Reimplemented from DBTable.

Definition at line 138 of file mirror_table.cc.

bool MirrorTable::OnChange ( MirrorEntry mirror_entry)

Definition at line 66 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::OnZeroRefcount ( AgentDBEntry e)
virtual

Reimplemented from AgentDBTable.

Definition at line 436 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::ReadHandler ( const boost::system::error_code &  error,
size_t  bytes 
)

Definition at line 562 of file mirror_table.cc.

void MirrorTable::RemoveUnresolved ( MirrorEntry entry)

Definition at line 330 of file mirror_table.cc.

virtual bool MirrorTable::Resync ( DBEntry entry,
const DBRequest req 
)
inlinevirtual

Reimplemented from AgentDBTable.

Definition at line 134 of file mirror_table.h.

Here is the call graph for this function:

void MirrorTable::ResyncMirrorEntry ( VrfMirrorEntryList list,
const VrfEntry vrf 
)

Definition at line 298 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::ResyncResolvedMirrorEntry ( const VrfEntry vrf)

Definition at line 342 of file mirror_table.cc.

void MirrorTable::ResyncUnresolvedMirrorEntry ( const VrfEntry vrf)

Definition at line 346 of file mirror_table.cc.

void MirrorTable::Shutdown ( )

Definition at line 612 of file mirror_table.cc.

void MirrorTable::UnRegisterBridgeRouteTableListener ( const VrfEntry entry,
MirrorVrfState state 
)

Definition at line 552 of file mirror_table.cc.

Here is the call graph for this function:

bool MirrorTable::UnresolvedMirrorVrf ( const VrfEntry vrf,
VrfMirrorEntryList list 
)

Definition at line 491 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::VrfListenerInit ( )

Definition at line 451 of file mirror_table.cc.

Here is the call graph for this function:

void MirrorTable::VrfNotify ( DBTablePartBase root,
DBEntryBase entry 
)

Definition at line 457 of file mirror_table.cc.

Here is the call graph for this function:

Member Data Documentation

const unsigned MirrorTable::bufLen = 512
static

Definition at line 118 of file mirror_table.h.

const uint8_t MirrorTable::kInvalidIndex = 0xFF
static

Definition at line 119 of file mirror_table.h.

MirrorTable * MirrorTable::mirror_table_
staticprivate

Definition at line 191 of file mirror_table.h.

VrfMirrorEntryList MirrorTable::resolved_entry_list_
private

Definition at line 194 of file mirror_table.h.

char MirrorTable::rx_buff_[bufLen]
private

Definition at line 192 of file mirror_table.h.

std::unique_ptr<boost::asio::ip::udp::socket> MirrorTable::udp_sock_
private

Definition at line 190 of file mirror_table.h.

VrfMirrorEntryList MirrorTable::unresolved_entry_list_
private

Definition at line 193 of file mirror_table.h.

DBTableBase::ListenerId MirrorTable::vrf_listener_id_
private

Definition at line 195 of file mirror_table.h.


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