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