/* DNSNameSet */
g_lua.registerFunction<string(DNSNameSet::*)()>("toString", [](const DNSNameSet&dns ) { return dns.toString(); });
g_lua.registerFunction<void(DNSNameSet::*)(DNSName&)>("add", [](DNSNameSet& dns, DNSName& dn) { dns.insert(dn); });
- g_lua.registerFunction<bool(DNSNameSet::*)(DNSName&)>("contains", [](DNSNameSet& dns, DNSName& dn) { return dns.find(dn) != dns.end(); });
+ g_lua.registerFunction<bool(DNSNameSet::*)(DNSName&)>("check", [](DNSNameSet& dns, DNSName& dn) { return dns.find(dn) != dns.end(); });
g_lua.registerFunction("delete",(size_t (DNSNameSet::*)(const DNSName&)) &DNSNameSet::erase);
g_lua.registerFunction("size",(size_t (DNSNameSet::*)() const) &DNSNameSet::size);
g_lua.registerFunction("clear",(void (DNSNameSet::*)()) &DNSNameSet::clear);
class QNameSetRule : public DNSRule {
public:
- QNameSetRule(const DNSNameSet names) : qname_idx(names) {}
+ QNameSetRule(const DNSNameSet& names) : qname_idx(names) {}
bool matches(const DNSQuestion* dq) const override {
return qname_idx.find(*dq->qname) != qname_idx.end();
:param DNSName name The name to remove.
- .. method:: DNSNameSet:contains(name) -> bool
+ .. method:: DNSNameSet:check(name) -> bool
Returns true if the set contains the name.
:param string qname: Qname to match
.. function:: QNameSetRule(set)
- Matches if the set contains qname.
+ Matches if the set contains excact qname.
- :param DNSNameSet set: Set with qnames.
+ To match subdomain names, see :func:`SuffixMatchNodeRule`.
+
+ :param DNSNameSet set: Set with qnames.
.. function:: QNameLabelsCountRule(min, max)
Matches based on a group of domain suffixes for rapid testing of membership.
Pass true as second parameter to prevent listing of all domains matched.
+ To match domain names exactly, see :func:`QNameSetRule`.
+
:param SuffixMatchNode smb: The SuffixMatchNode to match on
:param bool quiet: Do not return the list of matched domains. Default is false.
#include <stdexcept>
#include <sstream>
#include <iterator>
+#include <unordered_set>
#include <boost/version.hpp>
extern const DNSName g_rootdnsname, g_wildcarddnsname;
-struct DNSNameSet: public std::set<DNSName> {
+struct DNSNameSet: public std::unordered_set<DNSName> {
std::string toString() const {
std::ostringstream oss;
std::copy(begin(), end(), std::ostream_iterator<DNSName>(oss, "\n"));