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