OpenSDN source code
vxlan_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_vxlan_ksync_h
6 #define vnsw_agent_vxlan_ksync_h
7 
8 #include <boost/asio.hpp>
9 #include <boost/bind/bind.hpp>
10 
11 #include <db/db_entry.h>
12 #include <db/db_table.h>
13 #include <db/db_table_partition.h>
14 #include <ksync/ksync_entry.h>
15 #include <ksync/ksync_object.h>
16 #include <ksync/ksync_netlink.h>
17 #include "oper/nexthop.h"
18 #include "oper/vxlan.h"
19 #include "vrouter/ksync/agent_ksync_types.h"
20 
21 using namespace boost::placeholders;
22 
23 class VxLanKSyncObject;
24 
26 public:
28  uint32_t index);
29  VxLanIdKSyncEntry(VxLanKSyncObject *obj, const VxLanId *label);
30  virtual ~VxLanIdKSyncEntry();
31 
32  NHKSyncEntry *nh() const {
33  return static_cast<NHKSyncEntry *>(nh_.get());
34  }
35  KSyncDBObject *GetObject() const;
36 
37  virtual bool IsLess(const KSyncEntry &rhs) const;
38  virtual std::string ToString() const;
39  virtual KSyncEntry *UnresolvedReference();
40  virtual bool Sync(DBEntry *e);
41  virtual int AddMsg(char *buf, int buf_len);
42  virtual int ChangeMsg(char *buf, int buf_len);
43  virtual int DeleteMsg(char *buf, int buf_len);
44  void FillObjectLog(sandesh_op::type op, KSyncVxLanInfo &info) const;
45 private:
46  int Encode(sandesh_op::type op, char *buf, int buf_len);
48  uint32_t label_;
51 };
52 
54 public:
55  static const int kVxLanIndexCount = 10000;
56  VxLanKSyncObject(KSync *ksync);
57  virtual ~VxLanKSyncObject();
58  KSync *ksync() const { return ksync_; }
59  virtual KSyncEntry *Alloc(const KSyncEntry *entry, uint32_t index);
60  virtual KSyncEntry *DBToKSyncEntry(const DBEntry *e);
61  void RegisterDBClients();
62 private:
65 };
66 
67 #endif // vnsw_agent_vxlan_ksync_h
static bool IsLess(const ShowRoute &lhs, const ShowRoute &rhs, const BgpSandeshContext *bsc, const string &table_name)
boost::intrusive_ptr< KSyncEntry > KSyncEntryPtr
Definition: ksync_entry.h:68
VxLanKSyncObject * ksync_obj_
Definition: vxlan_ksync.h:47
DISALLOW_COPY_AND_ASSIGN(VxLanIdKSyncEntry)
KSyncEntryPtr nh_
Definition: vxlan_ksync.h:49
NHKSyncEntry * nh() const
Definition: vxlan_ksync.h:32
Definition: vxlan.h:14
DISALLOW_COPY_AND_ASSIGN(VxLanKSyncObject)
KSync * ksync() const
Definition: vxlan_ksync.h:58
uint8_t type
Definition: load_balance.h:2
static string ToString(PhysicalDevice::ManagementProtocol proto)