10 #include "vr_mirror.h"
16 sip_(entry->sip_), sport_(entry->sport_), dip_(entry->dip_),
17 dport_(entry->dport_), analyzer_name_(entry->analyzer_name_),
18 mirror_flag_(entry->mirror_flag_), vni_(entry->vni_),
19 nic_assisted_mirroring_(entry->nic_assisted_mirroring_),
20 nic_assisted_mirroring_vlan_(entry->nic_assisted_mirroring_vlan_),
21 mirror_index_(entry->mirror_index_) {
28 dip_(dip), dport_(dport) {
34 vrf_id_(mirror_entry->vrf_id()), sip_(*mirror_entry->GetSip()),
35 sport_(mirror_entry->GetSPort()), dip_(*mirror_entry->GetDip()),
36 dport_(mirror_entry->GetDPort()), nh_(NULL),
37 analyzer_name_(mirror_entry->GetAnalyzerName()),
38 mirror_flag_(mirror_entry->GetMirrorFlag()), vni_(mirror_entry->GetVni()),
39 nic_assisted_mirroring_(mirror_entry->nic_assisted_mirroring()),
40 nic_assisted_mirroring_vlan_(mirror_entry->nic_assisted_mirroring_vlan()),
41 mirror_index_(mirror_entry->mirror_index()) {
45 std::string &analyzer_name) :
46 ksync_obj_(obj), analyzer_name_(analyzer_name),
65 s <<
"Mirror Entry : " <<
dip_.to_string() <<
":" <<
dport_;
69 s <<
" Vrf : " << vrf->
GetName();
108 if (mirror->
GetNH() == NULL) {
109 LOG(DEBUG,
"nexthop in Mirror entry is null");
116 if (old_nh !=
nh()) {
129 vr_mirror_req encoder;
132 encoder.set_h_op(op);
133 encoder.set_mirr_rid(0);
136 encoder.set_mirr_nhid(nh_entry->
nh_id());
137 encoder.set_mirr_vni(
vni_);
139 encoder.set_mirr_flags(VR_MIRROR_FLAG_DYNAMIC);
143 encoder.set_mirr_flags(VR_MIRROR_FLAG_HW_ASSISTED);
146 encode_len = encoder.WriteBinary((uint8_t *)buf, buf_len, &error);
148 assert(encode_len <= buf_len);
154 LOG(DEBUG,
"MirrorEntry: Add");
155 return Encode(sandesh_op::ADD, buf, buf_len);
159 return AddMsg(buf, buf_len);
163 LOG(DEBUG,
"MirrorEntry: Delete");
164 return Encode(sandesh_op::DEL, buf, buf_len);
180 KSyncDBObject(
"KSync Mirror", kMirrorIndexCount), ksync_(ksync) {
KSyncDBObject * GetObject() const
const NextHop * GetNH() const
uint16_t nic_assisted_mirroring_vlan_
virtual ~MirrorKSyncEntry()
void RegisterDb(DBTableBase *table)
virtual KSyncEntry * Alloc(const KSyncEntry *entry, uint32_t index)
virtual int DeleteMsg(char *buf, int buf_len)
int Encode(sandesh_op::type op, char *buf, int buf_len)
boost::asio::ip::address IpAddress
virtual void MirrorMsgHandler(vr_mirror_req *req)=0
const string & GetName() const
virtual int AddMsg(char *buf, int buf_len)
virtual std::string ToString() const
MirrorTable * mirror_table() const
static const uint8_t kInvalidIndex
VrfEntry * FindVrfFromId(size_t index)
uint16_t nic_assisted_mirroring_vlan() const
NHKSyncObject * nh_ksync_obj() const
std::string analyzer_name_
virtual ~MirrorKSyncObject()
virtual KSyncEntry * UnresolvedReference()
bool nic_assisted_mirroring() const
uint8_t GetMirrorFlag() const
MirrorKSyncObject * ksync_obj_
KSyncEntry * Find(const KSyncEntry *key)
bool nic_assisted_mirroring_
KSyncEntry * GetReference(const KSyncEntry *key)
virtual int ChangeMsg(char *buf, int buf_len)
VrfTable * vrf_table() const
uint32_t mirror_index() const
NHKSyncEntry * nh() const
virtual bool IsLess(const KSyncEntry &rhs) const
#define LOG(_Level, _Msg)
virtual KSyncEntry * DBToKSyncEntry(const DBEntry *e)
virtual bool Sync(DBEntry *e)
uint32_t GetIdx(std::string analyzer_name)
MirrorKSyncEntry(MirrorKSyncObject *obj, const MirrorEntry *)
MirrorKSyncObject(KSync *ksync)