chiark / gitweb /
- do not warn about glueful nameservers in serverless-glueless
[chiark-utils.git] / scripts / named-conf
index 53d6a75300184f80d804356471a881d4d7662cca..fdfa404792adbfe7cb42767a6f598ffa2d87acf0 100755 (executable)
@@ -224,7 +224,11 @@ sub read_config ($) {
        $mod,$dir,$prefix,$suffix,$subfile,$lprefix,$lsuffix,$zf);
     local ($_);
 
-    $fh= new IO::File $if,'r' or cfg_fail("open $if:\n $!");
+    $fh= new IO::File $if,'r';
+    unless ($fh) {
+       return if $! == &ENOENT;
+       cfg_fail("open $if:\n $!");
+    }
     $before= '';
     for (;;) {
        if (!defined($_= <$fh>)) {
@@ -550,7 +554,7 @@ sub zone_investigate() {
 
 sub zone_check_nsrrset ($$$$) {
     my ($uaddr,$wa, $name_if_auth, $glueless_ok) = @_;
-    my (@s, $s, $a, %s2g, @glue, $glue, $delgs_or_auths, $wwn, $ww);
+    my (@s, $s, $a, %s2g, @glue, $glue, $delgs_or_auths, $wwn, $ww, $cg);
     my ($rcode);
     $ww= "[$uaddr] $wa";
     verbose("checking delegation by $ww");
@@ -585,6 +589,11 @@ sub zone_check_nsrrset ($$$$) {
                           @{ $cfg->{'indirect_glue'} }) and
                         !(grep { has_suffix_of($zone,".$_"); }
                           @{ $cfg->{'indirect_glue'} }));
+           foreach $cg (@{ $cfg->{'conv_glueless'} }) {
+               zone_warning("nameserver $s (glueless) in".
+                            " serverless-glueless namespace area $cg", $ww)
+                   if has_suffix_of(".$s",".$cg");
+           }
            ($rcode,@glue)= lookup($s,'a','0',"glueless NS from $ww");
            foreach $a (@glue) {
                $wwn= "glueless NS from $ww";
@@ -601,14 +610,7 @@ sub zone_check_nsrrset ($$$$) {
 
 sub zone_ns_name ($$) {
     my ($name,$ww) = @_;
-    my ($cg);
     $delg_to_us=1 if grep { $name eq $_ } @{ $cfg->{'self_ns'} };
-    foreach $cg (@{ $cfg->{'conv_glueless'} }) {
-       zone_warning("nameserver $name in serverless-glueless".
-                    " namespace area $cg",
-                    $ww)
-           if has_suffix_of(".$name",".$cg");
-    }
     zone_warning("published server, as $name, but configured as stealth",
                 $ww)
        if $cfg->{'s'} =~ m/u/ &&