5 #ifndef __AGENT_ACL_N_H__
6 #define __AGENT_ACL_N_H__
8 #include <boost/intrusive/list.hpp>
9 #include <boost/uuid/uuid.hpp>
10 #include <boost/intrusive_ptr.hpp>
11 #include <tbb/atomic.h>
94 typedef boost::intrusive::member_hook<
AclEntry,
95 boost::intrusive::list_member_hook<>,
97 typedef boost::intrusive::list<AclEntry, AclEntryNode>
AclEntries;
155 typedef boost::function<void(
const AclDBEntry *acl, AclFlowCountResp &data,
157 typedef boost::function<void(
const AclDBEntry *acl, AclFlowResp &data,
183 const std::string &context);
188 const std::string ctx,
const int last_count);
190 const std::string ctx,
191 const std::string &ace_id);
200 const autogen::SubnetType &rhs)
const;
202 const autogen::AddressType &rhs)
const;
204 const autogen::PortType &dst)
const;
206 const std::string ctx,
209 const autogen::FirewallRule *rule);
223 #define ACL_TRACE(obj, ...)\
225 Acl##obj::TraceMsg(AclTraceBuf, __FILE__, __LINE__, ##__VA_ARGS__);\
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
boost::intrusive_ptr< const AclDBEntry > AclDBEntryConstRef
bool Changed(const AclEntries &new_acl_entries) const
void SetName(const std::string name)
boost::function< void(const AclDBEntry *acl, AclFlowResp &data, const int last_count)> FlowAclSandeshDataFn
uint32_t GetRefCount() const
AclEntryIDList ace_id_list
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
virtual DBEntry * OperDBAdd(const DBRequest *req)
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
void SetDynamicAcl(bool dyn)
bool DBEntrySandesh(Sandesh *resp, std::string &name) const
std::set< AclDBEntry * > UnResolvedAclEntries
AclData(Agent *agent, IFMapNode *node, AclSpec &aclspec)
std::map< std::string, TrafficAction::Action > TrafficActionMap
static DBTableBase * CreateTable(DB *db, const std::string &name)
bool ResyncQosConfigEntries()
void FirewallPolicyIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u, AclSpec &acl_spec)
std::vector< AclEntryID > AclEntryIDList
const boost::uuids::uuid & GetUuid() const
AclResyncQosConfigData(Agent *agent, IFMapNode *node)
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
std::unique_ptr< DBRequestKey > KeyPtr
SandeshTraceBufferPtr AclTraceBuf
QosConfigActionSpec qos_config_action_
AclTable(DB *db, const std::string &name)
bool SubnetTypeEqual(const autogen::SubnetType &lhs, const autogen::SubnetType &rhs) const
std::vector< MirrorActionSpec > mirror_l
uint32_t ace_count() const
void set_acl_flow_sandesh_data_cb(FlowAclSandeshDataFn fn)
KeyPtr GetDBRequestKey() const
bool IsQosConfigResolved()
const std::string & GetName() const
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
bool IsRulePresent(const std::string &uuid) const
void DeleteAllAclEntries()
void Notify(DBTablePartBase *partition, DBEntryBase *e)
VrfTranslateActionSpec vrf_translate_action_
AclEntry * AddAclEntry(const AclEntrySpec &acl_entry_spec, AclEntries &entries)
static void AclFlowCountResponse(const std::string acl_uuid_str, const std::string ctx, const std::string &ace_id)
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
void PopulateServicePort(AclEntrySpec &ace_spec, IFMapNode *node)
bool AddressTypeEqual(const autogen::AddressType &lhs, const autogen::AddressType &rhs) const
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
bool PortTypeEqual(const autogen::PortType &src, const autogen::PortType &dst) const
const std::string & name() const
AclData(Agent *agent, IFMapNode *node, int ace_id_to_del)
virtual size_t Hash(const DBRequestKey *key) const
bool DeleteAclEntry(const uint32_t acl_entry_id)
DISALLOW_COPY_AND_ASSIGN(AclDBEntry)
const AclEntry * GetAclEntryAtIndex(uint32_t) const
FlowAclSandeshDataFn flow_acl_sandesh_data_cb_
bool GetDynamicAcl() const
IFMapNode * GetFirewallRule(IFMapNode *node)
bool IsLess(const DBEntry &rhs) const
bool PacketMatch(const PacketHeader &packet_header, MatchAclParams &m_acl, FlowPolicyInfo *info) const
uint32_t GetRefCount() const
const Agent * agent() const
void AddImplicitRule(AclSpec &acl_spec, AclEntrySpec &ace_spec, const autogen::FirewallRule *rule)
virtual size_t Hash(const DBEntry *entry) const
TrafficAction::Action ConvertActionString(std::string action) const
void DeleteUnresolvedEntry(AclDBEntry *entry)
AclKey(const boost::uuids::uuid &id)
static void AclFlowResponse(const std::string acl_uuid_str, const std::string ctx, const int last_count)
DBTableBase::ListenerId qos_config_listener_id_
boost::intrusive::list_member_hook acl_list_node
UnResolvedAclEntries unresolved_acl_entries_
void SetAclEntries(AclEntries &entries)
AclDBEntry(const boost::uuids::uuid &id)
std::string ToString() const
boost::function< void(const AclDBEntry *acl, AclFlowCountResp &data, const std::string &ace_id)> FlowAceSandeshDataFn
void AclIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u, AclSpec &acl_spec)
boost::intrusive::list< AclEntry, AclEntryNode > AclEntries
void SetAclSandeshData(AclSandeshData &data) const
DISALLOW_COPY_AND_ASSIGN(AclTable)
boost::intrusive::member_hook< AclEntry, boost::intrusive::list_member_hook<>,&AclEntry::acl_list_node > AclEntryNode
void SetKey(const DBRequestKey *key)
FlowPolicyInfo(const std::string &u)
void AddUnresolvedEntry(AclDBEntry *entry)
void set_ace_flow_sandesh_data_cb(FlowAceSandeshDataFn fn)
FlowAceSandeshDataFn flow_ace_sandesh_data_cb_
static const AclDBEntry * GetAclDBEntry(const std::string uuid_str, const std::string ctx, SandeshResponse *resp)