]> granicus.if.org Git - pdns/commitdiff
dnsdist: Add missing Lua binding for NetmaskGroupRule()
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 19 Apr 2016 10:06:36 +0000 (12:06 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 19 Apr 2016 10:06:36 +0000 (12:06 +0200)
pdns/dnsdist-lua.cc
regression-tests.dnsdist/test_Advanced.py

index 42aaab46914ccc789f9cb4572402de0af29b3868..b42a5699dcebc14c44c1786e973393956dd36b9c 100644 (file)
@@ -718,6 +718,10 @@ vector<std::function<void(void)>> setupLua(bool client, const std::string& confi
       return std::shared_ptr<DNSRule>(new SuffixMatchNodeRule(smn));
     });
 
+  g_lua.writeFunction("NetmaskGroupRule", [](const NetmaskGroup& nmg) {
+      return std::shared_ptr<DNSRule>(new NetmaskGroupRule(nmg));
+    });
+
   g_lua.writeFunction("benchRule", [](std::shared_ptr<DNSRule> rule, boost::optional<int> times_, boost::optional<string> suffix_)  {
       setLuaNoSideEffect();
       int times = times_.get_value_or(100000);
index a4b31356d2b7952192bc5cd4f56c1c102b674dc8..bd2e7849feb7bed82aa104972a8d94849b0aab57 100644 (file)
@@ -949,3 +949,30 @@ class TestAdvancedQPSNone(DNSDistTest):
 
         (_, receivedResponse) = self.sendTCPQuery(query, response=None, useQueue=False)
         self.assertEquals(receivedResponse, expectedResponse)
+
+class TestAdvancedNMGRule(DNSDistTest):
+
+    _config_template = """
+    allowed = newNMG()
+    allowed:addMask("192.0.2.1/32")
+    addAction(NotRule(NetmaskGroupRule(allowed)), RCodeAction(5))
+    newServer{address="127.0.0.1:%s"}
+    """
+
+    def testAdvancedNMGRule(self):
+        """
+        Advanced: NMGRule should refuse our queries
+
+        Send queries to "nmgrule.advanced.tests.powerdns.com.",
+        check that we are getting a REFUSED response.
+        """
+        name = 'nmgrule.advanced.tests.powerdns.com.'
+        query = dns.message.make_query(name, 'A', 'IN')
+        expectedResponse = dns.message.make_response(query)
+        expectedResponse.set_rcode(dns.rcode.REFUSED)
+
+        (_, receivedResponse) = self.sendUDPQuery(query, response=None, useQueue=False)
+        self.assertEquals(receivedResponse, expectedResponse)
+
+        (_, receivedResponse) = self.sendTCPQuery(query, response=None, useQueue=False)
+        self.assertEquals(receivedResponse, expectedResponse)