chiark / gitweb /
Bugfixes etc.
[chiark-utils.git] / scripts / named-conf
index 359c61c08bb6ac14ea298bd91c4a7e3a9eeb2a1d..24f99068e4ee1ee95835b2a660714955f52876e0 100755 (executable)
@@ -113,17 +113,22 @@ sub cfg_fail ($) { die "$quis: $where:\n $_[0]\n"; }
 
 sub read_config ($) {
     my ($if) = @_;
 
 sub read_config ($) {
     my ($if) = @_;
-    my ($fh,$z,@self, $mod,$dir,$prefix,$suffix,$lprefix,$lsuffix);
+    my ($fh,$z,@self,$before, $mod,$dir,$prefix,$suffix,$lprefix,$lsuffix);
     local ($_);
 
     $fh= new IO::File $if,'r' or cfg_fail("open $if:\n $!");
     local ($_);
 
     $fh= new IO::File $if,'r' or cfg_fail("open $if:\n $!");
+    $before= '';
     for (;;) {
        if (!defined($_= <$fh>)) {
            cfg_fail("read config file $if:\n $!") if $fh->error();
            last;
        }
     for (;;) {
        if (!defined($_= <$fh>)) {
            cfg_fail("read config file $if:\n $!") if $fh->error();
            last;
        }
+       chomp; s/\s+$//;
+       if (m/\\$/) { $before.= $_; next; }
+       $_= $before.$_;
+       $before= '';
+       s/^\s+//;
        $where= "$if:$.";
        $where= "$if:$.";
-       s/^\s+//; chomp; s/\s+$//;
        next if m/^\#/;
        last if m/^end$/;
        next unless m/\S/;
        next if m/^\#/;
        last if m/^end$/;
        next unless m/\S/;
@@ -261,7 +266,7 @@ sub zone_warning ($) {
 }
 
 sub zone_warnmore ($) {
 }
 
 sub zone_warnmore ($) {
-    print STDERR " $_[0]\n" or die $!;
+    print STDERR "$zone:  $_[0]\n" or die $!;
 }
 
 use vars qw(%delgs); # $delgs{$nameserver_list} = [ $whosaidandwhy ]
 }
 
 use vars qw(%delgs); # $delgs{$nameserver_list} = [ $whosaidandwhy ]
@@ -269,6 +274,7 @@ use vars qw(%auths); # $auths{$nameserver_list} = [ $whosaidandwhy ]
 use vars qw(%glue);  # $glue{$name}{$addr_list} = [ $whosaidandwhy ]
 use vars qw(%soas);  # $soa{"$origin $serial"} = [ $whosaidandwhy ]
 use vars qw(%addr_is_ok %warned_glueless %warned_mynameaddr);
 use vars qw(%glue);  # $glue{$name}{$addr_list} = [ $whosaidandwhy ]
 use vars qw(%soas);  # $soa{"$origin $serial"} = [ $whosaidandwhy ]
 use vars qw(%addr_is_ok %warned_glueless %warned_mynameaddr);
+use vars qw($delg_to_us);
 use vars qw(@to_check); # ($addr,$whyask,$is_auth,$glueless_ok, ...)
 use vars qw(@to_check_soa); # ($addr,$whyask, ...)
 
 use vars qw(@to_check); # ($addr,$whyask,$is_auth,$glueless_ok, ...)
 use vars qw(@to_check_soa); # ($addr,$whyask, ...)
 
@@ -283,6 +289,7 @@ sub zone_reset() {
     %delgs= %auths= %glue= %soas=
        %warned_glueless= %warned_mynameaddr=
            %addr_is_ok= ();
     %delgs= %auths= %glue= %soas=
        %warned_glueless= %warned_mynameaddr=
            %addr_is_ok= ();
+    $delg_to_us= 0;
     @to_check= @to_check_soa= ();
 }
 
     @to_check= @to_check_soa= ();
 }
 
@@ -385,6 +392,7 @@ sub zone_server_addr ($$$$$) {
                     " us [$addr] with wrong name $name, (eg) $ww")
            unless $warned_mynameaddr{$name}{$addr}++;
     }
                     " us [$addr] with wrong name $name, (eg) $ww")
            unless $warned_mynameaddr{$name}{$addr}++;
     }
+    $delg_to_us=1 if $name_is_self;
 }
 
 sub zone_check_soa ($$$) {
 }
 
 sub zone_check_soa ($$$) {
@@ -449,6 +457,10 @@ sub zone_servers_ok () {
            }
        }
     }
            }
        }
     }
+    if ($cfg->{'s'} =~ m/s/ && !$delg_to_us) {
+       zone_warnmore("we are supposedly published secondary,".
+                     " but not listed as a nameserver");
+    }
 }
 
 sub zone_consistency_set ($%) {
 }
 
 sub zone_consistency_set ($%) {
@@ -535,7 +547,7 @@ sub lookup ($$$) {
     $h->error and die "$quis: read from adnshost:\n $!\n";
     chomp @result;
     $!=0; $h->close;
     $h->error and die "$quis: read from adnshost:\n $!\n";
     chomp @result;
     $!=0; $h->close;
-    die "$quis: lookup -t$type $domain $okrcodes failed $? $!\n"
+    die "$quis: lookup -t$type $domain $okrcodes failed $? $! @result\n"
        if $! or $?>6 or index($okrcodes,$?)<0;
     debug_trace("lookup <== $? @result");
     return ($?,@result);
        if $! or $?>6 or index($okrcodes,$?)<0;
     debug_trace("lookup <== $? @result");
     return ($?,@result);