samba-tool:dns: Check through all the DNS records for a match
authorAmitay Isaacs <amitay@gmail.com>
Thu, 5 Jan 2012 23:28:52 +0000 (10:28 +1100)
committerAmitay Isaacs <amitay@samba.org>
Fri, 6 Jan 2012 01:41:22 +0000 (02:41 +0100)
There can be multiple dns records for a specified record type.

Autobuild-User: Amitay Isaacs <amitay@samba.org>
Autobuild-Date: Fri Jan  6 02:41:22 CET 2012 on sn-devel-104

source4/scripting/python/samba/netcmd/dns.py

index 002c5a2eab39c0ef12d51e9d87a0f166ab188948..74b649ee1e8391836d38d0d79ae15418e99a0f37 100644 (file)
@@ -457,6 +457,7 @@ class SRVRecord(dnsserver.DNS_RPC_RECORD):
         srv.nameTarget.len = len(target)
         self.data = srv
 
+# Match a dns record with specified data
 def dns_record_match(dns_conn, server, zone, name, record_type, data):
     select_flags = dnsserver.DNS_RPC_VIEW_AUTHORITY_DATA
 
@@ -474,36 +475,35 @@ def dns_record_match(dns_conn, server, zone, name, record_type, data):
     except RuntimeError, e:
         return None
 
+    if not res or res.count == 0:
+        return None
+
     rec_match = None
-    if res and res.count > 0:
-        recs = res.rec[0]
-        for rec in recs.records:
-            if rec.wType == record_type:
-                rec_match = rec
-                break
-
-    if rec_match:
+    for rec in res.rec[0].records:
+        if rec.wType != record_type:
+            continue
+
         found = False
         if record_type == dnsp.DNS_TYPE_A:
-            if rec_match.data == data:
+            if rec.data == data:
                 found = True
         elif record_type == dnsp.DNS_TYPE_AAAA:
-            if rec_match.data == data:
+            if rec.data == data:
                 found = True
         elif record_type == dnsp.DNS_TYPE_PTR:
-            if rec_match.data.str.rstrip('.') == data.rstrip('.'):
+            if rec.data.str.rstrip('.') == data.rstrip('.'):
                 found = True
         elif record_type == dnsp.DNS_TYPE_CNAME:
-            if rec_match.data.str.rstrip('.') == data.rstrip('.'):
+            if rec.data.str.rstrip('.') == data.rstrip('.'):
                 found = True
         elif record_type == dnsp.DNS_TYPE_NS:
-            if rec_match.data.str.rstrip('.') == data.rstrip('.'):
+            if rec.data.str.rstrip('.') == data.rstrip('.'):
                 found = True
-
         if found:
-            return rec_match
+            rec_match = rec
+            break
 
-    return None
+    return rec_match
 
 
 class cmd_serverinfo(Command):