OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
security_logging_object.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __AGENT_OPER_SECURITY_LOGGING_OBJECT_H
6 #define __AGENT_OPER_SECURITY_LOGGING_OBJECT_H
7 
8 #include <cmn/agent.h>
9 #include <oper_db.h>
10 #include <cmn/index_vector.h>
11 
12 class Agent;
13 class DB;
14 
15 struct SloRuleInfo {
17  int rate_;
18  SloRuleInfo(const boost::uuids::uuid &u, int rate) : uuid_(u), rate_(rate) {
19  }
20  bool operator==(const SloRuleInfo &rhs) const {
21  if (uuid_ == rhs.uuid_) {
22  return rate_ == rhs.rate_;
23  }
24  return false;
25  }
26 };
27 
28 typedef std::vector<SloRuleInfo> SloRuleList;
30 public:
32  uuid_(uuid) {}
33 
35  uuid_(rhs.uuid_) {}
36 
37  bool IsLess(const SecurityLoggingObjectKey &rhs) const {
38  return uuid_ < rhs.uuid_;
39  }
40 
42 };
43 
45 public:
47  const std::vector<autogen::SecurityLoggingObjectRuleEntryType> &lst,
48  const int &rate, const bool status, const std::string &name):
49  AgentOperDBData(agent, node), rules_(lst), status_(status), rate_(rate), name_(name),
51 
52  std::vector<autogen::SecurityLoggingObjectRuleEntryType> rules_;
53  bool status_;
54  int rate_;
55  std::string name_;
58 };
59 
61  AgentRefCount<SecurityLoggingObject>, public AgentOperDBEntry {
62 public:
64  virtual ~SecurityLoggingObject();
65 
66  KeyPtr GetDBRequestKey() const;
67  virtual void SetKey(const DBRequestKey *key);
68  std::string ToString() const;
69  virtual bool IsLess(const DBEntry &rhs) const;
70  virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const;
71  virtual bool Change(const DBRequest *req);
72  bool IsEqual(const std::vector<autogen::SecurityLoggingObjectRuleEntryType>
73  &lhs,
74  const std::vector<autogen::SecurityLoggingObjectRuleEntryType>
75  &rhs) const;
76 
77  uint32_t GetRefCount() const {
79  }
80 
81  bool status() const {
82  return status_;
83  }
84  const boost::uuids::uuid& uuid() const {
85  return uuid_;
86  }
87  const std::vector<autogen::SecurityLoggingObjectRuleEntryType> & rules()
88  const {
89  return rules_;
90  }
91  int rate() const { return rate_; }
92  const std::string& name() const {
93  return name_;
94  }
97 
98 private:
99  bool status_;
101  std::vector<autogen::SecurityLoggingObjectRuleEntryType> rules_;
102  int rate_;
103  std::string name_;
107 };
108 
110 public:
111  SecurityLoggingObjectTable(Agent *agent, DB *db, const std::string &name);
112  virtual ~SecurityLoggingObjectTable();
113 
114  static DBTableBase *CreateTable(Agent *agent, DB *db,
115  const std::string &name);
116  virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *k) const;
117  virtual DBEntry *OperDBAdd(const DBRequest *req);
118  virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req);
119  virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req);
120  virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req,
121  const boost::uuids::uuid &u);
122  virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u);
123  bool ProcessConfig(IFMapNode *node, DBRequest &req,
124  const boost::uuids::uuid &u);
126  const std::string &context);
127 
128 private:
131 };
132 #endif
SecurityLoggingObjectKey(const SecurityLoggingObjectKey &rhs)
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
uint32_t GetRefCount() const
Definition: agent_db.h:54
bool operator==(const SloRuleInfo &rhs) const
virtual bool Change(const DBRequest *req)
SecurityLoggingObjectTable(Agent *agent, DB *db, const std::string &name)
SecurityLoggingObjectData(const Agent *agent, IFMapNode *node, const std::vector< autogen::SecurityLoggingObjectRuleEntryType > &lst, const int &rate, const bool status, const std::string &name)
DISALLOW_COPY_AND_ASSIGN(SecurityLoggingObjectTable)
std::vector< SloRuleInfo > SloRuleList
virtual DBEntry * OperDBAdd(const DBRequest *req)
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
Agent * agent() const
Definition: agent_db.h:213
boost::uuids::uuid uuid
std::unique_ptr< DBRequestKey > KeyPtr
Definition: db_entry.h:25
bool IsEqual(const std::vector< autogen::SecurityLoggingObjectRuleEntryType > &lhs, const std::vector< autogen::SecurityLoggingObjectRuleEntryType > &rhs) const
boost::uuids::uuid uuid_
SecurityLoggingObjectData * BuildData(IFMapNode *node) const
Definition: db.h:24
SloRuleList & firewall_policy_list()
const std::vector< autogen::SecurityLoggingObjectRuleEntryType > & rules() const
Definition: agent.h:358
SloRuleList & firewall_rule_list()
std::vector< autogen::SecurityLoggingObjectRuleEntryType > rules_
SecurityLoggingObjectKey(const boost::uuids::uuid &uuid)
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
Definition: agent_db.h:18
const std::string & name() const
Definition: db_table.h:110
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const
SecurityLoggingObject(const boost::uuids::uuid &uuid)
const boost::uuids::uuid & uuid() const
bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
std::string ToString() const
const Agent * agent() const
Definition: oper_db.h:65
virtual bool IsLess(const DBEntry &rhs) const
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
bool IsLess(const SecurityLoggingObjectKey &rhs) const
DISALLOW_COPY_AND_ASSIGN(SecurityLoggingObject)
const std::string & name() const
std::vector< autogen::SecurityLoggingObjectRuleEntryType > rules_
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
SloRuleInfo(const boost::uuids::uuid &u, int rate)
virtual void SetKey(const DBRequestKey *key)