[Samba] samba-tool dns serverinfo

Günter Kukkukk linux at kukkukk.com
Wed Nov 12 20:49:26 MST 2014


Am 12.11.2014 um 23:58 schrieb Günter Kukkukk:
SNIP - dropped a lot here

to get rid of
    uncaught exception - 'i' format requires -2147483648 <= number <= 2147483647
in

> 
> 
>   pszDsContainer              : CN=MicrosoftDNS,DC=DomainDnsZones,DC=addlz,DC=kukkukk,DC=com
> ERROR(<class 'struct.error'>): uncaught exception - 'i' format requires -2147483648 <= number <= 2147483647
>   File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 175, in _run
>     return self.run(*args, **kwargs)
>   File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/dns.py", line 709, in run
>     print_serverinfo(self.outf, typeid, res)
>   File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/dns.py", line 202, in print_serverinfo
>     ip4_array_string(serverinfo.aipServerAddrs))
>   File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/dns.py", line 129, in ip4_array_string
>     addr = '%s' % inet_ntoa(pack('i', array.AddrArray[i]))

a simple python format specifier had to be changed from
   "i"   signed int    to
   "I"   unsigned int

The problem behind this is, that an IP of 255.255.255.255 (0xffffffff) would
be treated as invalid signed int here!

So with some cleanup to also use inet_ntop(), an intermediate patch
would be:

diff --git a/python/samba/netcmd/dns.py b/python/samba/netcmd/dns.py
index e26ddd1..3e48e97 100644
--- a/python/samba/netcmd/dns.py
+++ b/python/samba/netcmd/dns.py
@@ -129,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
-------------

This leads to a *new* - now not failing - output:
samba-tool dns serverinfo li131 --client-version=dotnet
  dwVersion                   : 0xece0205
  fBootMethod                 : DNS_BOOT_METHOD_DIRECTORY
  fAdminConfigured            : FALSE
  fAllowUpdate                : TRUE
  fDsAvailable                : TRUE
  pszServerName               : LI131.addlz.kukkukk.com
  pszDsContainer              : CN=MicrosoftDNS,DC=DomainDnsZones,DC=addlz,DC=kukkukk,DC=com
  aipServerAddrs              : ['255.255.255.255', '127.0.0.1', '192.168.200.72', '255.255.255.255']
  aipListenAddrs              : ['255.255.255.255', '127.0.0.1', '192.168.200.72', '255.255.255.255']
  aipForwarders               : []

Not bad now!  :-)
The very first passed IP '255.255.255.255' was the culprit to bail out here very early.

BUT - why is samba passing such IP addresses here?

Some other (C-) function - which collects the IPs from the interface list - must
be doing wrong. Probably IPv6 is not handled correctly there.

So i'll look further into that...

Cheers, Günter

-- 



More information about the samba mailing list