chiark / gitweb /
Check glueless nameservers, too.
[chiark-utils.git] / scripts / named-conf
index 53c06831879ade025b159dfb0d922d01f917ec1b..bad6caa6c6cd2e42b866cf633ec01bbcbe92c68b 100755 (executable)
@@ -392,6 +392,7 @@ sub zone_investigate() {
 sub zone_check_nsrrset ($$$$) {
     my ($uaddr,$wa, $name_if_auth, $glueless_ok) = @_;
     my (@s, $s, %s2g, @glue, $glue, $delgs_or_auths, $wwn, $ww);
+    my ($rcode, $sa);
     $ww= "[$uaddr] $wa";
     verbose("checking delegation by $ww");
     dig(sub {
@@ -400,7 +401,6 @@ sub zone_check_nsrrset ($$$$) {
        } elsif ($dig_type eq 'a' && exists $s2g{$dig_owner}) {
            $wwn= "in glue from $ww";
            push @to_check, $dig_rdata, "$dig_owner, $wwn", $dig_owner, 0;
-           zone_server_addr($dig_rdata,$dig_owner,$wwn,"NS [$uaddr]",0);
            push @{ $s2g{$dig_owner} }, $dig_rdata;
        }
     },
@@ -423,6 +423,9 @@ sub zone_check_nsrrset ($$$$) {
                           @{ $cfg->{'conv_glueless'} };
            ($rcode,@glue)= lookup($s,'a','0',"glueless NS from $ww");
        }
+       foreach ($sa) {
+           zone_server_addr($sa,$s,$wwn,"NS [$uaddr]",0);
+       }
        $glue= join ' ', sort @glue;
        push @{ $glue{$s}{$glue} }, $ww;
     }
@@ -497,8 +500,8 @@ sub zone_check_soa ($$$$) {
             $zone,'soa',$uaddr);
     $lame= 'broken' if !$lame && !defined $origin;
     if ($lame) { zone_warning("$lame server [$uaddr]",$wa); return; }
-    progress(2, sprintf "%-22s %40s has %s%s",
-            $zone, $name, $serial, $is_ns ? '' : '*');
+    progress(2, sprintf "%-16s %46s has %s%s",
+            $zone, "$name [$uaddr]", $serial, $is_ns ? '' : '*');
     push @{ $soas{$got} }, $ww;
     ($rcode,@soa_addrs)= lookup($origin,'a','0',"SOA ORIGIN");
     $wwn= "SOA ORIGIN from $ww";