OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bridge_domain.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_VNSW_AGENT_BRIDGE_DOMAIN_H_
6 #define SRC_VNSW_AGENT_BRIDGE_DOMAIN_H_
7 
8 #include <boost/scoped_ptr.hpp>
9 #include <cmn/agent.h>
10 #include <oper_db.h>
11 
12 class BridgeDomainTable;
13 
16  AgentOperDBKey(), uuid_(id) { }
18  AgentOperDBKey(sub_op), uuid_(id) { }
19  virtual ~BridgeDomainKey() { }
20 
22 };
23 
26  AgentOperDBData(agent, node), name_(""),
27  vn_uuid_(boost::uuids::nil_uuid()), isid_(0),
30 
31  std::string name_;
33  uint32_t isid_;
35  std::string bmac_vrf_name_;
37  uint32_t mac_aging_time_;
38 };
39 
40 class BridgeDomainEntry : AgentRefCount<BridgeDomainEntry>,
41  public AgentOperDBEntry {
42 public:
44  const boost::uuids::uuid &id);
45  virtual ~BridgeDomainEntry() {}
46 
47  virtual bool IsLess(const DBEntry &rhs) const;
48  virtual std::string ToString() const;
49  virtual KeyPtr GetDBRequestKey() const;
50  virtual void SetKey(const DBRequestKey *key);
51  bool DBEntrySandesh(Sandesh *resp, std::string &name) const;
52  bool Change(const BridgeDomainTable *table, const BridgeDomainData *data);
53  void Delete();
54 
55  const boost::uuids::uuid &uuid() const { return uuid_; }
56  const std::string &name() const { return name_; }
57  const VnEntry* vn() const {
58  return vn_.get();
59  }
60 
61  uint32_t isid() const {
62  return isid_;
63  }
64 
65  uint32_t GetRefCount() const {
67  }
68 
69  const VrfEntry* vrf() const {
70  return vrf_.get();
71  }
72 
73  bool learning_enabled() const {
74  return learning_enabled_;
75  }
76 
77  bool pbb_etree_enabled() const {
78  return pbb_etree_enabled_;
79  }
80 
81  bool mac_aging_time() const {
82  return mac_aging_time_;
83  }
84 
85  bool layer2_control_word() const {
86  return layer2_control_word_;
87  }
88 
89 private:
90  friend class BridgeDomainTable;
91  void UpdateVrf(const BridgeDomainData *data);
92 
95  std::string name_;
97  uint32_t isid_;
99  std::string bmac_vrf_name_;
102  uint32_t mac_aging_time_;
105 };
106 
108 public:
109  BridgeDomainTable(Agent *agent, DB *db, const std::string &name);
110  virtual ~BridgeDomainTable();
111 
112  static DBTableBase *CreateTable(Agent *agent, DB *db,
113  const std::string &name);
114  virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *k) const;
115  virtual size_t Hash(const DBEntry *entry) const {return 0;}
116  virtual size_t Hash(const DBRequestKey *key) const {return 0;}
117 
118  virtual DBEntry *OperDBAdd(const DBRequest *req);
119  virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req);
120  virtual bool OperDBResync(DBEntry *entry, const DBRequest *req);
121  virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req);
122 
123  virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req,
124  const boost::uuids::uuid &u);
125  bool ProcessConfig(IFMapNode *node, DBRequest &req,
126  const boost::uuids::uuid &u);
127  virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u);
129  const std::string &context);
131 private:
133 };
134 #endif
std::string bmac_vrf_name_
Definition: bridge_domain.h:99
bool layer2_control_word() const
Definition: bridge_domain.h:85
const VnEntry * vn() const
Definition: bridge_domain.h:57
uint32_t mac_aging_time_
Definition: bridge_domain.h:37
virtual ~BridgeDomainEntry()
Definition: bridge_domain.h:45
uint32_t GetRefCount() const
Definition: agent_db.h:54
Definition: vrf.h:86
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
bool DBEntrySandesh(Sandesh *resp, std::string &name) const
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
Agent * agent() const
Definition: agent_db.h:213
const std::string & name() const
Definition: bridge_domain.h:56
std::string bmac_vrf_name_
Definition: bridge_domain.h:35
boost::uuids::uuid uuid
BridgeDomainEntry * Find(const boost::uuids::uuid &u)
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
virtual KeyPtr GetDBRequestKey() const
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
const VrfEntry * vrf() const
Definition: bridge_domain.h:69
virtual size_t Hash(const DBRequestKey *key) const
std::unique_ptr< DBRequestKey > KeyPtr
Definition: db_entry.h:25
BridgeDomainKey(const boost::uuids::uuid &id)
Definition: bridge_domain.h:15
uint32_t GetRefCount() const
Definition: bridge_domain.h:65
virtual void SetKey(const DBRequestKey *key)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
bool pbb_etree_enabled() const
Definition: bridge_domain.h:77
boost::uuids::uuid uuid_
Definition: bridge_domain.h:94
std::string name_
Definition: bridge_domain.h:95
BridgeDomainEntry(const BridgeDomainTable *table, const boost::uuids::uuid &id)
Definition: db.h:24
bool mac_aging_time() const
Definition: bridge_domain.h:81
DISALLOW_COPY_AND_ASSIGN(BridgeDomainTable)
virtual std::string ToString() const
virtual DBEntry * OperDBAdd(const DBRequest *req)
uint32_t mac_aging_time_
boost::intrusive_ptr< VnEntry > VnEntryRef
Definition: agent.h:68
Definition: agent.h:358
std::string name_
Definition: bridge_domain.h:31
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
Definition: agent_db.h:18
const std::string & name() const
Definition: db_table.h:110
bool learning_enabled() const
Definition: bridge_domain.h:73
const BridgeDomainTable * table_
Definition: bridge_domain.h:93
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
Definition: vn.h:151
const boost::uuids::uuid & uuid() const
Definition: bridge_domain.h:55
DISALLOW_COPY_AND_ASSIGN(BridgeDomainEntry)
const Agent * agent() const
Definition: oper_db.h:65
boost::uuids::uuid vn_uuid_
Definition: bridge_domain.h:32
BridgeDomainKey(const boost::uuids::uuid &id, DBSubOperation sub_op)
Definition: bridge_domain.h:17
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
DBSubOperation
Definition: agent_db.h:96
boost::uuids::uuid uuid_
Definition: bridge_domain.h:21
void UpdateVrf(const BridgeDomainData *data)
virtual ~BridgeDomainKey()
Definition: bridge_domain.h:19
uint32_t isid() const
Definition: bridge_domain.h:61
virtual bool IsLess(const DBEntry &rhs) const
BridgeDomainTable(Agent *agent, DB *db, const std::string &name)
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
bool Change(const BridgeDomainTable *table, const BridgeDomainData *data)
virtual size_t Hash(const DBEntry *entry) const
virtual ~BridgeDomainTable()
BridgeDomainData(Agent *agent, IFMapNode *node)
Definition: bridge_domain.h:25
bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
VrfEntryRef vrf_
Definition: bridge_domain.h:98