5 #ifndef vnsw_agent_mirror_table_hpp
6 #define vnsw_agent_mirror_table_hpp
10 #include <agent_types.h>
29 const uint16_t sport,
const IpAddress &dip,
30 const uint16_t dport, uint8_t mirror_flags,
31 uint32_t vni,
const MacAddress &mac,
bool createdvrf):
38 uint16_t nic_assisted_mirroring_vlan):
68 virtual std::string
ToString()
const {
return "MirrorEntry";};
139 const std::string &context);
142 const std::string &vrf_name,
146 const std::string &vrf_name,
149 uint32_t vni, uint8_t mirror_flag,
152 uint32_t nic_assisted_mirroring_vlan);
158 void ReadHandler(
const boost::system::error_code& error,
size_t bytes);
190 std::unique_ptr<boost::asio::ip::udp::socket>
udp_sock_;
const NextHop * GetNH() const
uint16_t GetDPort() const
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
uint32_t GetRefCount() const
uint16_t GetSPort() const
VrfMirrorEntryList unresolved_entry_list_
MirrorEntry(std::string analyzer_name)
void ReadHandler(const boost::system::error_code &error, size_t bytes)
bool nic_assisted_mirroring_
boost::asio::ip::address IpAddress
bool GetCreatedVrf() const
void DeleteResolvedVrfMirrorEntry(MirrorEntry *entry)
VrfMirrorEntryList resolved_entry_list_
void ResyncResolvedMirrorEntry(const VrfEntry *vrf)
std::map< std::string, MirrorEntryList > VrfMirrorEntryList
uint32_t GetRefCount() const
virtual bool Resync(DBEntry *entry, const DBRequest *req)
MirrorEntryData(bool nic_assisted_mirroring, uint16_t nic_assisted_mirroring_vlan)
std::unique_ptr< DBRequestKey > KeyPtr
void BridgeRouteTableNotify(DBTablePartBase *partition, DBEntryBase *e)
virtual bool Change(const DBRequest *req)
void AddResolvedVrfMirrorEntry(MirrorEntry *entry)
virtual size_t Hash(const DBEntry *entry) const
uint16_t nic_assisted_mirroring_vlan_
void MirrorSockInit(void)
virtual void OnZeroRefcount(AgentDBEntry *e)
static const uint8_t kInvalidIndex
uint16_t nic_assisted_mirroring_vlan() const
DBTableBase::ListenerId bridge_rt_table_listener_id_
const VrfEntry * GetVrf() const
std::pair< std::string, MirrorEntryList > VrfMirrorEntry
MirrorEntryKey(const std::string analyzer_name)
bool nic_assisted_mirroring() const
uint8_t GetMirrorFlag() const
std::string analyzer_name_
const MacAddress * GetMac() const
virtual std::string ToString() const
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
const std::string & name() const
static MirrorEntryData::MirrorEntryFlags DecodeMirrorFlag(const std::string &nh_mode, bool juniper_header)
void DeleteMirrorVrf(MirrorEntry *entry, bool del_from_vrf_list)
virtual bool IsLess(const DBEntry &rhs) const
VrfEntry * FindVrfEntry(const std::string &vrf_name) const
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
static void DelMirrorEntry(const std::string &analyzer_name)
static MirrorTable * GetInstance()
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)
void set_mirror_entrySandeshData(MirrorEntrySandeshData &data) const
virtual DBEntry * Add(const DBRequest *req)
const IpAddress * GetSip() const
uint32_t mirror_index() const
bool nic_assisted_mirroring_
virtual size_t Hash(const DBRequestKey *key) const
const IpAddress * GetDip() const
void RemoveUnresolved(MirrorEntry *entry)
void ResyncUnresolvedMirrorEntry(const VrfEntry *vrf)
MirrorTable(DB *db, const std::string &name)
std::vector< MirrorEntry * > MirrorEntryList
bool UnresolvedMirrorVrf(const VrfEntry *vrf, VrfMirrorEntryList &list)
static const int kInvalidId
bool DBEntrySandesh(Sandesh *sresp, std::string &name) const
void VrfNotify(DBTablePartBase *root, DBEntryBase *entry)
static const unsigned bufLen
std::unique_ptr< boost::asio::ip::udp::socket > udp_sock_
virtual bool Delete(DBEntry *entry, const DBRequest *request)
const std::string GetAnalyzerName() const
const std::string vrf_name() const
static DBTableBase * CreateTable(DB *db, const std::string &name)
void AddUnresolved(MirrorEntry *entry)
void set_mirror_index(uint32_t index)
void UnRegisterBridgeRouteTableListener(const VrfEntry *entry, MirrorVrfState *state)
static MirrorTable * mirror_table_
DBTableBase::ListenerId vrf_listener_id_
virtual KeyPtr GetDBRequestKey() const
virtual bool OnChange(DBEntry *entry, const DBRequest *req)
std::string analyzer_name_
void ResyncMirrorEntry(VrfMirrorEntryList &list, const VrfEntry *vrf)
virtual void SetKey(const DBRequestKey *key)
uint16_t nic_assisted_mirroring_vlan_
MirrorEntry * GetMirrorEntry(VrfEntry *vrf, const MacAddress &mac, VrfMirrorEntryList &list)
MirrorEntryData(const std::string vrf_name, const IpAddress &sip, const uint16_t sport, const IpAddress &dip, const uint16_t dport, uint8_t mirror_flags, uint32_t vni, const MacAddress &mac, bool createdvrf)
boost::intrusive_ptr< NextHop > NextHopRef