selftest: allow dns_hub.py to do forwarding to ipv6 servers
authorStefan Metzmacher <metze@samba.org>
Wed, 11 Mar 2020 16:09:13 +0000 (17:09 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Fri, 27 Mar 2020 09:02:38 +0000 (09:02 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
selftest/target/dns_hub.py

index e9982c1341b9398ca87fbb8198c5b716fb560631..4f42395f17d098b48c84674a1ac8967a503a0276 100755 (executable)
@@ -58,11 +58,18 @@ class DnsHandler(sserver.BaseRequestHandler):
     def dns_transaction_udp(self, packet, host):
         "send a DNS query and read the reply"
         s = None
+        flags = socket.AddressInfo.AI_NUMERICHOST
+        flags |= socket.AddressInfo.AI_NUMERICSERV
+        flags |= socket.AddressInfo.AI_PASSIVE
+        addr_info = socket.getaddrinfo(host, int(53),
+                                       type=socket.SocketKind.SOCK_DGRAM,
+                                       flags=flags)
+        assert len(addr_info) == 1
         try:
             send_packet = ndr.ndr_pack(packet)
-            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
+            s = socket.socket(addr_info[0][0], addr_info[0][1], 0)
             s.settimeout(DNS_REQUEST_TIMEOUT)
-            s.connect((host, 53))
+            s.connect(addr_info[0][4])
             s.sendall(send_packet, 0)
             recv_packet = s.recv(2048, 0)
             return ndr.ndr_unpack(dns.name_packet, recv_packet)