5 #ifndef __AGENT_ACL_ENTRY_MATCH_H__
6 #define __AGENT_ACL_ENTRY_MATCH_H__
8 #include <boost/ptr_container/ptr_list.hpp>
9 #include <boost/intrusive/list.hpp>
10 #include <boost/intrusive/slist.hpp>
11 #include <boost/uuid/uuid.hpp>
15 #include <agent_types.h>
62 Range(
const uint16_t minimum,
const uint16_t maximum) :
63 min(minimum),
max(maximum) {}
65 boost::intrusive::slist_member_hook<>
node;
76 typedef boost::intrusive::member_hook<
Range,
77 boost::intrusive::slist_member_hook<>,
80 typedef boost::intrusive::slist<
Range,
82 boost::intrusive::cache_last<true>
93 void SetPortRange(
const uint16_t min_port,
const uint16_t max_port);
99 const uint16_t max_port)
const;
148 bool PortMatch(uint32_t sport, uint32_t dport)
const;
221 void SetSGId(
const uint32_t
id);
234 void SetIPAddress(
const std::vector<AclAddressInfo> &list);
240 static std::string
BuildIpMaskList(
const std::vector<AclAddressInfo> &list);
bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const
bool operator==(const Range &rhs) const
bool TagsMatch(const TagList &tags) const
static std::string BuildTags(const TagList &list)
void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)
void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)
bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const
bool operator==(const AclEntryMatch &rhs) const
void SetIPAddress(const std::vector< AclAddressInfo > &list)
void SetNetworkID(const uuid id)
Range(const uint16_t minimum, const uint16_t maximum)
boost::asio::ip::address IpAddress
void SetSGId(const uint32_t id)
std::vector< int > SecurityGroupList
void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)
void SetTags(const TagList &tags)
bool AddressGroupMatch(const IpAddress &ip, const TagList &tags) const
virtual bool Compare(const AclEntryMatch &rhs) const =0
virtual bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const =0
std::vector< AclAddressInfo > ip_list_
virtual bool Compare(const AclEntryMatch &rhs) const
virtual void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)=0
const TagList & tags() const
boost::intrusive::member_hook< Range, boost::intrusive::slist_member_hook<>,&Range::node > RangeNode
ServiceGroupMatch(ServicePortList service_port_list)
virtual bool Compare(const AclEntryMatch &rhs) const
void SetNetworkIDStr(const std::string id)
virtual bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const =0
static std::string BuildIpMaskList(const std::vector< AclAddressInfo > &list)
void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)=0
bool operator==(const ServicePort &rhs) const
bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const
RangeSList protocol_ranges_
bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const
bool PortMatch(uint32_t sport, uint32_t dport) const
bool operator==(const AclAddressInfo &rhs) const
bool SGMatch(const SecurityGroupList &sg_l, int id) const
void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)
void SetPortRange(const uint16_t min_port, const uint16_t max_port)
virtual bool Compare(const AclEntryMatch &rhs) const
void SetAddressGroup(const std::vector< AclAddressInfo > &list, const TagList &tags)
std::vector< ServicePort > ServicePortList
bool TagsMatchAG(const TagList &tags) const
bool Match(const PacketHeader *packet_header, FlowPolicyInfo *info) const
boost::intrusive::slist_member_hook node
void SetProtocolRange(const uint16_t min, const uint16_t max)
void SetAclEntryMatchSandeshData(AclEntrySandeshData &data)
void operator()(Range *range)
size_t ip_list_size() const
boost::intrusive::slist< Range, RangeNode, boost::intrusive::cache_last< true > > RangeSList
ServicePortList service_port_list_
virtual bool Compare(const AclEntryMatch &rhs) const
bool CheckPortRanges(const uint16_t min_port, const uint16_t max_port) const
std::vector< int > TagList