OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
KSyncDBObject * GetObject() const
Definition: mirror_ksync.cc:53
uint16_t nic_assisted_mirroring_vlan_
Definition: mirror_ksync.h:54
uint32_t vrf_id_
Definition: mirror_ksync.h:44
virtual ~MirrorKSyncEntry()
Definition: mirror_ksync.cc:50
static const int kMirrorIndexCount
Definition: mirror_ksync.h:61
virtual KSyncEntry * Alloc(const KSyncEntry *entry, uint32_t index)
KSync * ksync() const
Definition: mirror_ksync.h:65
virtual int DeleteMsg(char *buf, int buf_len)
int Encode(sandesh_op::type op, char *buf, int buf_len)
boost::asio::ip::address IpAddress
Definition: address.h:13
DISALLOW_COPY_AND_ASSIGN(MirrorKSyncObject)
virtual int AddMsg(char *buf, int buf_len)
virtual std::string ToString() const
Definition: mirror_ksync.cc:62
DISALLOW_COPY_AND_ASSIGN(MirrorKSyncEntry)
uint8_t type
Definition: load_balance.h:109
std::string analyzer_name_
Definition: mirror_ksync.h:50
uint8_t mirror_flag_
Definition: mirror_ksync.h:51
virtual ~MirrorKSyncObject()
boost::intrusive_ptr< KSyncEntry > KSyncEntryPtr
Definition: ksync_entry.h:68
virtual KSyncEntry * UnresolvedReference()
MirrorKSyncObject * ksync_obj_
Definition: mirror_ksync.h:43
IpAddress dip_
Definition: mirror_ksync.h:47
bool nic_assisted_mirroring_
Definition: mirror_ksync.h:53
virtual int ChangeMsg(char *buf, int buf_len)
uint32_t mirror_index_
Definition: mirror_ksync.h:55
NHKSyncEntry * nh() const
Definition: mirror_ksync.h:29
uint32_t mirror_index()
Definition: mirror_ksync.h:40
virtual bool IsLess(const KSyncEntry &rhs) const
Definition: mirror_ksync.cc:57
virtual KSyncEntry * DBToKSyncEntry(const DBEntry *e)
virtual bool Sync(DBEntry *e)
Definition: mirror_ksync.cc:74
uint32_t GetIdx(std::string analyzer_name)
IpAddress sip_
Definition: mirror_ksync.h:45
KSyncEntryPtr nh_
Definition: mirror_ksync.h:49
MirrorKSyncEntry(MirrorKSyncObject *obj, const MirrorEntry *)
Definition: mirror_ksync.cc:31
MirrorKSyncObject(KSync *ksync)