chiark / gitweb /
Check glueless nameservers, too - properly.
[chiark-utils.git] / scripts / named-conf
index a7894f510fbccbbb1ab919b2f76110c255c47718..5e694a347be88bba397bf1935c7885f5aae01aed 100755 (executable)
@@ -391,7 +391,8 @@ 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 (@s, $s, $a, %s2g, @glue, $glue, $delgs_or_auths, $wwn, $ww);
+    my ($rcode);
     $ww= "[$uaddr] $wa";
     verbose("checking delegation by $ww");
     dig(sub {
@@ -421,7 +422,10 @@ sub zone_check_nsrrset ($$$$) {
                unless $glueless_ok || !$needglue ||
                       grep { has_suffix_of($s,".$_"); }
                           @{ $cfg->{'conv_glueless'} };
-           next;
+           ($rcode,@glue)= lookup($s,'a','0',"glueless NS from $ww");
+           foreach $a (@glue) {
+               zone_server_addr($a,$s,"glueless NS from $ww","NS [$uaddr]",0);
+           }
        }
        $glue= join ' ', sort @glue;
        push @{ $glue{$s}{$glue} }, $ww;
@@ -497,8 +501,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";