17 #include "vr_bridge.h"
22 mac_learning_entry_(ptr), packets_(0), deleted_(false) {
32 smac->set_index(entry->
index());
34 std::string time_since_addition =
36 smac->set_time_since_add(time_since_addition);
37 std::string last_stats_change =
39 smac->set_last_stats_change(last_stats_change);
43 agent_(agent), timeout_msec_(kDefaultAgingTimeout), vrf_(vrf) {
50 MacAgingEntryTable::iterator it =
aging_table_.find(ptr.get());
52 it->second->set_deleted(
false);
58 Trace(
"Adding MAC entry", aging_entry_ptr.get());
62 MacAgingEntryTable::iterator it =
aging_table_.find(ptr.get());
64 Trace(
"Deleting MAC entry", it->second.get());
72 uint32_t index = entry->
index();
74 GetBridgeEntry(index);
75 if (vr_entry == NULL) {
85 uint64_t packets = ptr->
packets();
89 if (packets == ptr->
packets()) {
101 std::string vrf =
"";
123 uint32_t entry_count = aging_table_entry_count;
136 uint32_t no_of_iteration = table_scan_time /
139 if (no_of_iteration == 0) {
143 uint32_t entry_count_per_iteration = entry_count / no_of_iteration;
148 return entry_count_per_iteration;
162 if (it->second->deleted() ==
false &&
179 agent_(agent), partition_id_(partition_id),
180 request_queue_(agent_->task_scheduler()->GetTaskId(
kTaskMacAging),
184 timer_(
TimerManager::CreateTimer(*(agent->event_manager()->io_service()),
186 agent->task_scheduler()->
199 uint32_t vrf_id = mle->vrf_id();
217 uint32_t vrf_id = mle->vrf_id();
227 if (it->second.get() && it->second->Run()) {
240 switch(req->event()) {
242 Add(req->mac_learning_entry());
246 Delete(req->mac_learning_entry());
void ReadStats(MacAgingEntry *ptr)
boost::shared_ptr< MacAgingEntry > MacAgingEntryPtr
const MacAddress & mac() const
void Trace(const std::string &str, MacAgingEntry *ptr)
MacLearningEntry * last_key_
void set_deleted(bool deleted)
bool ShouldBeAged(MacAgingEntry *ptr, uint64_t curr_time)
std::string ToString() const
static const uint32_t kMinEntriesPerScan
MacAgingTableMap aging_table_map_
MacLearningEntryPtr mac_learning_entry() const
boost::shared_ptr< MacAgingTable > MacAgingTablePtr
uint64_t last_modified_time_
VrfEntry * FindVrfFromId(size_t index)
uint32_t CalculateEntriesPerIteration(uint32_t table_size)
virtual ~MacAgingPartition()
SandeshTraceBufferPtr MacLearningTraceBuf
static const std::string duration_usecs_to_string(const uint64_t usecs)
MacAgingEntryTable aging_table_
bool RequestHandler(MacLearningEntryRequestPtr ptr)
MacAgingQueue request_queue_
std::pair< MacLearningEntry *, MacAgingEntryPtr > MacAgingPair
boost::shared_ptr< MacLearningEntryRequest > MacLearningEntryRequestPtr
void SendDeleteMsg(MacAgingEntry *ptr)
void Enqueue(MacLearningEntryRequestPtr req)
static const uint32_t kMinIterationTimeout
MacAgingEntry(MacLearningEntryPtr ptr)
MacAgingPartition(Agent *agent, uint32_t id)
void set_last_modified_time(uint64_t curr_time)
void DeleteVrf(uint32_t id)
VrfTable * vrf_table() const
MacAgingTable(Agent *agent, const VrfEntry *)
KSyncBridgeMemory * ksync_bridge_memory() const
MacLearningEntryPtr mac_learning_entry_
uint64_t last_modified_time() const
static uint64_t UTCTimestampUsec()
void Delete(MacLearningEntryPtr ptr)
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
void Add(MacLearningEntryPtr ptr)
void Delete(MacLearningEntryPtr ptr)
void FillSandesh(SandeshMacEntry *sme) const
bool Enqueue(QueueEntryT entry)
uint64_t timeout_in_usecs() const
static bool DeleteTimer(Timer *Timer)
boost::shared_ptr< MacLearningEntry > MacLearningEntryPtr
void set_packets(uint64_t packets)
void Add(MacLearningEntryPtr ptr)