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__);\
SandeshTraceBufferPtr AclTraceBuf
std::vector< AclEntryID > AclEntryIDList
boost::intrusive_ptr< const AclDBEntry > AclDBEntryConstRef
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
void SetDynamicAcl(bool dyn)
const std::string & GetName() const
uint32_t ace_count() const
boost::intrusive::member_hook< AclEntry, boost::intrusive::list_member_hook<>, &AclEntry::acl_list_node > AclEntryNode
boost::intrusive::list< AclEntry, AclEntryNode > AclEntries
const boost::uuids::uuid & GetUuid() const
bool PacketMatch(const PacketHeader &packet_header, MatchAclParams &m_acl, FlowPolicyInfo *info) const
bool GetDynamicAcl() const
AclDBEntry(const boost::uuids::uuid &id)
bool IsLess(const DBEntry &rhs) const
bool IsRulePresent(const std::string &uuid) const
bool ResyncQosConfigEntries()
std::string ToString() const
void DeleteAllAclEntries()
bool DBEntrySandesh(Sandesh *resp, std::string &name) const
const AclEntry * GetAclEntryAtIndex(uint32_t) const
void SetAclEntries(AclEntries &entries)
void SetAclSandeshData(AclSandeshData &data) const
void SetName(const std::string name)
bool IsQosConfigResolved()
DISALLOW_COPY_AND_ASSIGN(AclDBEntry)
bool DeleteAclEntry(const uint32_t acl_entry_id)
KeyPtr GetDBRequestKey() const
void SetKey(const DBRequestKey *key)
AclEntry * AddAclEntry(const AclEntrySpec &acl_entry_spec, AclEntries &entries)
bool Changed(const AclEntries &new_acl_entries) const
uint32_t GetRefCount() const
boost::intrusive::list_member_hook acl_list_node
void AddImplicitRule(AclSpec &acl_spec, AclEntrySpec &ace_spec, const autogen::FirewallRule *rule)
UnResolvedAclEntries unresolved_acl_entries_
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
virtual size_t Hash(const DBEntry *entry) const
virtual DBEntry * OperDBAdd(const DBRequest *req)
void set_ace_flow_sandesh_data_cb(FlowAceSandeshDataFn fn)
void AclIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u, AclSpec &acl_spec)
boost::function< void(const AclDBEntry *acl, AclFlowCountResp &data, const std::string &ace_id)> FlowAceSandeshDataFn
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
std::map< std::string, TrafficAction::Action > TrafficActionMap
FlowAceSandeshDataFn flow_ace_sandesh_data_cb_
void FirewallPolicyIFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u, AclSpec &acl_spec)
void AddUnresolvedEntry(AclDBEntry *entry)
void set_acl_flow_sandesh_data_cb(FlowAclSandeshDataFn fn)
DISALLOW_COPY_AND_ASSIGN(AclTable)
void Notify(DBTablePartBase *partition, DBEntryBase *e)
boost::function< void(const AclDBEntry *acl, AclFlowResp &data, const int last_count)> FlowAclSandeshDataFn
void PopulateServicePort(AclEntrySpec &ace_spec, IFMapNode *node)
virtual size_t Hash(const DBRequestKey *key) const
bool PortTypeEqual(const autogen::PortType &src, const autogen::PortType &dst) const
static DBTableBase * CreateTable(DB *db, const std::string &name)
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
DBTableBase::ListenerId qos_config_listener_id_
static void AclFlowResponse(const std::string acl_uuid_str, const std::string ctx, const int last_count)
IFMapNode * GetFirewallRule(IFMapNode *node)
static const AclDBEntry * GetAclDBEntry(const std::string uuid_str, const std::string ctx, SandeshResponse *resp)
FlowAclSandeshDataFn flow_acl_sandesh_data_cb_
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
static void AclFlowCountResponse(const std::string acl_uuid_str, const std::string ctx, const std::string &ace_id)
bool SubnetTypeEqual(const autogen::SubnetType &lhs, const autogen::SubnetType &rhs) const
std::set< AclDBEntry * > UnResolvedAclEntries
bool AddressTypeEqual(const autogen::AddressType &lhs, const autogen::AddressType &rhs) const
AclTable(DB *db, const std::string &name)
TrafficAction::Action ConvertActionString(std::string action) const
void DeleteUnresolvedEntry(AclDBEntry *entry)
uint32_t GetRefCount() const
std::unique_ptr< DBRequestKey > KeyPtr
const std::string & name() const
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
AclData(Agent *agent, IFMapNode *node, AclSpec &aclspec)
AclData(Agent *agent, IFMapNode *node, int ace_id_to_del)
AclKey(const boost::uuids::uuid &id)
AclResyncQosConfigData(Agent *agent, IFMapNode *node)
const Agent * agent() const
VrfTranslateActionSpec vrf_translate_action_
std::vector< MirrorActionSpec > mirror_l
QosConfigActionSpec qos_config_action_
FlowPolicyInfo(const std::string &u)
AclEntryIDList ace_id_list