OpenSDN source code
mirror_ksync.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_mirror_ksync_h
6 #define vnsw_agent_mirror_ksync_h
7 
8 #include <db/db_entry.h>
9 #include <db/db_table.h>
10 #include <db/db_table_partition.h>
11 #include <ksync/ksync_entry.h>
12 #include <ksync/ksync_object.h>
13 #include <ksync/ksync_netlink.h>
15 #include "oper/mirror_table.h"
16 
17 class MirrorKSyncObject;
18 
20 public:
23  uint32_t index);
24  MirrorKSyncEntry(MirrorKSyncObject *obj, const uint32_t vrf_id,
25  IpAddress dip, uint16_t dport);
26  MirrorKSyncEntry(MirrorKSyncObject *obj, std::string &analyzer_name);
27  virtual ~MirrorKSyncEntry();
28 
29  NHKSyncEntry *nh() const {
30  return static_cast<NHKSyncEntry *>(nh_.get());
31  }
32  KSyncDBObject *GetObject() const;
33  virtual bool IsLess(const KSyncEntry &rhs) const;
34  virtual std::string ToString() const;
36  virtual bool Sync(DBEntry *e);
37  virtual int AddMsg(char *buf, int buf_len);
38  virtual int ChangeMsg(char *buf, int buf_len);
39  virtual int DeleteMsg(char *buf, int buf_len);
40  uint32_t mirror_index() {return mirror_index_;}
41 private:
42  int Encode(sandesh_op::type op, char *buf, int buf_len);
44  uint32_t vrf_id_;
46  uint16_t sport_;
48  uint16_t dport_;
50  std::string analyzer_name_;
51  uint8_t mirror_flag_;
52  uint32_t vni_;
55  uint32_t mirror_index_;
57 };
58 
60 public:
61  static const int kMirrorIndexCount = 1000;
63  virtual ~MirrorKSyncObject();
64 
65  KSync *ksync() const { return ksync_; }
66 
67  void RegisterDBClients();
68  virtual KSyncEntry *Alloc(const KSyncEntry *entry, uint32_t index);
69  virtual KSyncEntry *DBToKSyncEntry(const DBEntry *e);
70  uint32_t GetIdx(std::string analyzer_name);
71 private:
74 };
75 
76 #endif // vnsw_agent_mirror_ksync_h
boost::asio::ip::address IpAddress
Definition: address.h:13
boost::intrusive_ptr< KSyncEntry > KSyncEntryPtr
Definition: ksync_entry.h:68
std::string analyzer_name_
Definition: mirror_ksync.h:50
NHKSyncEntry * nh() const
Definition: mirror_ksync.h:29
virtual int ChangeMsg(char *buf, int buf_len)
IpAddress sip_
Definition: mirror_ksync.h:45
uint16_t nic_assisted_mirroring_vlan_
Definition: mirror_ksync.h:54
uint8_t mirror_flag_
Definition: mirror_ksync.h:51
virtual bool Sync(DBEntry *e)
Definition: mirror_ksync.cc:74
int Encode(sandesh_op::type op, char *buf, int buf_len)
bool nic_assisted_mirroring_
Definition: mirror_ksync.h:53
uint32_t mirror_index()
Definition: mirror_ksync.h:40
virtual int AddMsg(char *buf, int buf_len)
virtual ~MirrorKSyncEntry()
Definition: mirror_ksync.cc:50
virtual int DeleteMsg(char *buf, int buf_len)
KSyncEntryPtr nh_
Definition: mirror_ksync.h:49
uint32_t mirror_index_
Definition: mirror_ksync.h:55
virtual bool IsLess(const KSyncEntry &rhs) const
Definition: mirror_ksync.cc:57
KSyncDBObject * GetObject() const
Definition: mirror_ksync.cc:53
virtual std::string ToString() const
Definition: mirror_ksync.cc:62
DISALLOW_COPY_AND_ASSIGN(MirrorKSyncEntry)
IpAddress dip_
Definition: mirror_ksync.h:47
uint32_t vrf_id_
Definition: mirror_ksync.h:44
MirrorKSyncObject * ksync_obj_
Definition: mirror_ksync.h:43
virtual KSyncEntry * UnresolvedReference()
MirrorKSyncEntry(MirrorKSyncObject *obj, const MirrorEntry *)
Definition: mirror_ksync.cc:31
static const int kMirrorIndexCount
Definition: mirror_ksync.h:61
DISALLOW_COPY_AND_ASSIGN(MirrorKSyncObject)
virtual ~MirrorKSyncObject()
virtual KSyncEntry * Alloc(const KSyncEntry *entry, uint32_t index)
MirrorKSyncObject(KSync *ksync)
virtual KSyncEntry * DBToKSyncEntry(const DBEntry *e)
uint32_t GetIdx(std::string analyzer_name)
KSync * ksync() const
Definition: mirror_ksync.h:65
uint8_t type
Definition: load_balance.h:2