Line data Source code
1 : /* 2 : * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef SRC_VNSW_AGENT_MAC_LEARNING_MAC_LEARNING_BASE_H_ 6 : #define SRC_VNSW_AGENT_MAC_LEARNING_MAC_LEARNING_BASE_H_ 7 : 8 : #include "cmn/agent.h" 9 : #include "mac_learning_key.h" 10 : #include "pkt/flow_token.h" 11 : 12 : class MacAgingTable; 13 : class MacAgingPartition; 14 : class MacLearningEntryRequest; 15 : 16 : class MacLearningEntry; 17 : typedef boost::shared_ptr<MacLearningEntry> MacLearningEntryPtr; 18 : typedef boost::shared_ptr<MacLearningEntryRequest> MacLearningEntryRequestPtr; 19 : class MacLearningEntry { 20 : public: 21 0 : MacLearningEntry(uint32_t vrf_id): 22 0 : deleted_(false) { 23 : vrf_ = Agent::GetInstance()->vrf_table()-> 24 0 : FindVrfFromIdIncludingDeletedVrf(vrf_id); 25 0 : } 26 : 27 0 : virtual ~MacLearningEntry() {} 28 : virtual bool Add() = 0; 29 : virtual void Delete() = 0; 30 : virtual void Resync() = 0; 31 : 32 : 33 0 : VrfEntry* vrf() const { 34 0 : return vrf_.get(); 35 : } 36 : 37 : virtual uint32_t vrf_id() = 0; 38 : 39 0 : virtual void AddWithToken() { 40 0 : } 41 : 42 0 : virtual void AddToken(TokenPtr ptr) { 43 0 : } 44 : 45 0 : virtual void ReleaseToken() { 46 0 : } 47 : 48 0 : virtual void CopyToken(MacLearningEntry *entry) { 49 0 : } 50 : 51 0 : virtual bool HasTokens() { 52 0 : return false; 53 : } 54 : 55 0 : bool deleted() const { 56 0 : return deleted_; 57 : } 58 : virtual void EnqueueToTable(MacLearningEntryRequestPtr req)= 0; 59 : 60 : protected: 61 : VrfEntryRef vrf_; 62 : bool deleted_; 63 : private: 64 : DISALLOW_COPY_AND_ASSIGN(MacLearningEntry); 65 : }; 66 : #endif