chiark / gitweb /
Check glueless nameservers, too.
[chiark-utils.git] / scripts / named-conf
index 212cc8b1fa853a493a4fbb1f135f5b3b34f6ebeb..bad6caa6c6cd2e42b866cf633ec01bbcbe92c68b 100755 (executable)
@@ -392,7 +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);
+    my ($rcode, $sa);
     $ww= "[$uaddr] $wa";
     verbose("checking delegation by $ww");
     dig(sub {
@@ -401,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;
        }
     },
@@ -424,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;
     }
@@ -498,7 +500,7 @@ 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 "%-16s %34s has %s%s",
+    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");