-sub zone_check_nsrrset ($$\%\%) {
- my ($uaddr,$ww, $delgs_or_auths,$glueless_ok) = @_;
- my (@s, $s, %s2g, @glue, $glue);
- dig::dig({
- if ($dig::type eq 'ns' && $dig::owner eq $zone) {
- $s2g{lc $dig::rdata} = [ ];
- } elsif ($dig::type eq 'a' && exists $s2g{$dig::owner}) {
- push @to_check,
- $dig::rdata,
- "glue for $dig::owner, from (eg) $why",
- \%auths, 0;
- $addr_is_ok{$dig::rdata}= 1 if $cfg->{'style'} eq 'stealth';
- push @{ $s2g{$dig::rdata} }, $dig::rdata;
+sub zone_consistency() {
+ my ($d, $org_ser, $origin, $a, $showok, $h);
+ zone_consistency_set('delegations',\%delgs);
+ foreach $d (keys %delgs) { delete $auths{$d}; }
+ zone_consistency_set('zone nameserver rrset',\%auths);
+ foreach $h (keys %glue) {
+ zone_consistency_set("glue for $h", $glue{$h});
+ }
+ zone_consistency_set("SOA ORIGIN and SERIAL",\%soas);
+ if ($cfg->{'style'} eq 'primary') {
+ foreach $org_ser (keys %soas) {
+ $org_ser =~ m/^(\S+) \d+$/ or die "$org_ser ?";
+ $origin= $1;
+ next if grep { $_ eq $origin } @self_soa;
+ zone_warning("our name(s) @self_soa not in SOA ORIGIN $origin,".
+ " eg from ".((values %{ $soas{$org_ser} })[1]));