samba-tool: Fix the IP output of "samba-tool dns serverinfo <some_server>"
authorGuenter Kukkukk <linux@kukkukk.com>
Fri, 21 Nov 2014 02:55:25 +0000 (03:55 +0100)
committerKarolin Seeger <kseeger@samba.org>
Thu, 4 Dec 2014 18:46:07 +0000 (19:46 +0100)
Avoid hardcoded IP-strings, use standard python IP functions to format
IPv4 and IPv6 addresses correctly.

I have removed the display of the port number.
MS-DNSP 2.2.3.2.2.1 DNS_ADDR: (from May 15, 2014)
Port Number (2bytes): Senders MUST set this to zero, and receivers MUST ignore
it.

Signed-off-by: Guenter Kukkukk <linux@kukkukk.com>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit d5af53c5372866a33a0195cabbd64232ac53bad4)

python/samba/netcmd/dns.py

index 7d498c9f2def9961dee47d6f988f48864f2a4b60..6dde9ecca3edd273e0d266f38da393d3d238e36d 100644 (file)
@@ -19,6 +19,9 @@
 import samba.getopt as options
 from struct import pack
 from socket import inet_ntoa
+from socket import inet_ntop
+from socket import AF_INET
+from socket import AF_INET6
 import shlex
 
 from samba.netcmd import (
@@ -126,7 +129,7 @@ def ip4_array_string(array):
     if not array:
         return ret
     for i in xrange(array.AddrCount):
-        addr = '%s' % inet_ntoa(pack('i', array.AddrArray[i]))
+        addr = inet_ntop(AF_INET, pack('I', array.AddrArray[i]))
         ret.append(addr)
     return ret
 
@@ -137,11 +140,11 @@ def dns_addr_array_string(array):
         return ret
     for i in xrange(array.AddrCount):
         if array.AddrArray[i].MaxSa[0] == 0x02:
-            addr = '%d.%d.%d.%d (%d)' % \
-                tuple(array.AddrArray[i].MaxSa[4:8] + [array.AddrArray[i].MaxSa[3]])
+            x = "".join([chr(b) for b in array.AddrArray[i].MaxSa])[4:8]
+            addr = inet_ntop(AF_INET, x)
         elif array.AddrArray[i].MaxSa[0] == 0x17:
-            addr = '%x%x:%x%x:%x%x:%x%x:%x%x:%x%x:%x%x:%x%x (%d)' % \
-                tuple(array.AddrArray[i].MaxSa[4:20] + [array.AddrArray[i].MaxSa[3]])
+            x = "".join([chr(b) for b in array.AddrArray[i].MaxSa])[8:24]
+            addr = inet_ntop(AF_INET6, x)
         else:
             addr = 'UNKNOWN'
         ret.append(addr)