chiark / gitweb /
Compile fixes.
authorianmdlvl <ianmdlvl>
Fri, 4 Jan 2002 22:44:04 +0000 (22:44 +0000)
committerianmdlvl <ianmdlvl>
Fri, 4 Jan 2002 22:44:04 +0000 (22:44 +0000)
scripts/named-conf

index 26b5ea7..3781191 100755 (executable)
@@ -8,7 +8,7 @@ use POSIX;
 use vars qw($quis
            $mode $doall
            $etcfile $where
-           $debug $needglue $localonly $verbosity);
+           $debug $needglue $localonly $repeat $verbosity);
 
 $quis= $0; $quis =~ s,.*/,,;
 
@@ -77,7 +77,7 @@ usage: named-conf-regen [options] -f|-y|-n|<zone>...\n".
 " -l --localonly full checks only on zones which we primary\n".
 " -q --quiet     no output for OK zones\n".
 " -r --repeat    repeat warnings for all sources of imperfect data\n".
-" -v --verbose   extra verbose info about each zone\n"
+" -v --verbose   extra verbose info about each zone\n".
 " -C|--config <DIR/FILE  use FILE as default config and DIR as default dir\n";
 }
 
@@ -265,6 +265,7 @@ sub process_zones (@) {
     local ($zone,$cfg);
 
     foreach $zone (@zones) {
+       zone_reset();
        $cfg= $zone_cfg{$zone} || {
            'style_p' => 'foreign',
            's' => 'f',
@@ -291,13 +292,22 @@ sub process_zones (@) {
        if $warnings;
 }
 
+use vars qw(%delgs); # $delgs{$nameserver_list} = [ $whosaidandwhy ]
+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);
+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, ...)
+
 sub zone_warning ($$) {
     my ($w,$o) = @_;
     my ($wk);
 
     $wk= $w;
     $wk =~ s/,.*// if !$repeat;
-    return 0 if $$warned{$w}{$wk}++;
+    return 0 if $warned{$w}{$wk}++;
 
     $w =~ s/\n$//;
     $w =~ s,\n, // ,g;
@@ -311,17 +321,7 @@ sub zone_warnmore ($) {
     print STDERR "$zone:  $_[0]\n" or die $!;
 }
 
-use vars qw(%delgs); # $delgs{$nameserver_list} = [ $whosaidandwhy ]
-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);
-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, ...)
-
 sub zone_check_full () {
-    zone_reset();
     zone_investigate();
     zone_consistency();
     zone_servers_ok();
@@ -367,7 +367,7 @@ sub zone_investigate() {
            zone_check_nsrrset($addr, $wa, $is_auth, $glueless_ok);
        } elsif (($addr,$wa,@to_check_soa) = @to_check_soa) {
            next if $soa_checked{$addr}++;
-           zone_check_soa($addr, $wa, "NS [$uaddr]");
+           zone_check_soa($addr, $wa, "NS [$addr]");
        } else {
            last;
        }
@@ -416,10 +416,11 @@ sub zone_check_nsrrset ($$$$) {
 
 sub zone_server_addr ($$$$$) {
     my ($addr,$name,$ww,$wwq,$is_soa) = @_;
+    my ($cg);
     $addr_is_ok{$addr}= "$name ($wwq)"
        if $is_soa || $cfg->{'s'} =~ m/u/;
     foreach $cg (@conv_glueless) {
-       next unless has_suffix_of(".$s",".$cg");
+       next unless has_suffix_of(".$name",".$cg");
        zone_warning("nameserver [$addr] $name in serverless-glueless".
                     " namespace area $cg",
                     $ww);
@@ -447,9 +448,10 @@ sub zone_server_addr ($$$$$) {
 
 sub zone_check_soa ($$$) {
     my ($uaddr,$wa,$waq) = @_;
-    my ($lame,$origin,$got,$rcode,@soa_addrs,$soa_addr,$wwn);
-    verbose("checking service at $wwq");
+    my ($lame,$origin,$got,$rcode,@soa_addrs,$soa_addr,$ww,$wwn);
+    verbose("checking service at [$uaddr] $waq");
     $lame= 'dead or lame';
+    $ww= "[$uaddr] $wa";
     dig(sub {
        if ($dig_type eq 'flags:') {
            $lame= $dig_rdata =~ m/ aa / ? '' : 'lame';
@@ -465,8 +467,8 @@ sub zone_check_soa ($$$) {
     if ($lame) { zone_warning("$lame server [$uaddr]",$wa); return; }
     push @{ $soas{$got} }, $ww;
     ($rcode,@soa_addrs)= lookup($origin,'a','0');
+    $wwn= "SOA ORIGIN from $ww";
     foreach $soa_addr (@soa_addrs) {
-       $wwn= "SOA ORIGIN from $ww";
        zone_server_addr($soa_addr,$origin,$wwn,"SOA [$uaddr]",1);
        push @to_check, $soa_addr, "$origin, $wwn";
     }
@@ -528,7 +530,6 @@ sub zone_consistency_set ($%) {
 }
 
 sub zone_check_local () {
-    zone_reset();
     zone_servers_simplefind();
     zone_servers_ok();
 }
@@ -632,7 +633,7 @@ sub debug_trace ($) {
 
 sub has_suffix_of ($$) {
     my ($whole,$suffix);
-    return 0 if length $while < length $suffix;
+    return 0 if length $whole < length $suffix;
     return 0 if substr($whole, length($whole) - length($suffix)) ne $suffix;
     return 1;
 }