#!/afs/athena/contrib/perl/perl
#
# WARNING: most of the code is stolen from marc's "resolv_axfr.pl"
#
# what it does: dumps all IP addresses and hostnames for a domain to STDOUT
#   and echos to STDERR.
#
# USAGE:  $0 domain-name

unshift(@INC,"/mit/marc/perl");

require 'resolv.pl';

$dom = shift(@ARGV);

@ARGV && die "$0: syntax\n";

$ns = &res_open;

$q = &res_mkquery($dom,"NS","IN");
@ans = &res_send($ns,$q);
die "Error finding nameserver: $ans[3]\n" if $ans[3];

$domainsrv = (split(/ /,$ans[$ans[6]]))[4];

print STDERR "\nUsing server $domainsrv for domain $dom\n\n";

$res'options |= &RES_USEVC | &RES_STAYOPEN ;

$ns = &res_open($domainsrv);
$q = &res_mkquery($dom,"AXFR","IN");

@ans = &res_send($ns, $q);
die "Error in domain transfer: $ans[3]\n" if $ans[3];

for ($i=$ans[6]; $i<=$ans[6]+$ans[7]+$ans[9]+$ans[11]-1; $i++) {
    if (($ans[$i] =~ /^(\S+) A \S+ \d+ ([0-9.]+)$/)
	&& ($1!~/localhost|LOCALHOST/)) {
	print $2,"\t",$1,"\n";
	print STDERR $2,"\t",$1,"\n";
    }
}

@ans = &res_send($ns, "");
while($ans[5] == 0) {
    for ($i=$ans[6]; $i<=$ans[6]+$ans[7]-1; $i++) {
	if (($ans[$i] =~ /^(\S+) A \S+ \d+ ([0-9.]+)$/)
	    && ($1!~/localhost|LOCALHOST/)) {
	    print $2,"\t",$1,"\n"; 
	    print STDERR $2,"\t",$1,"\n";
	}
    }
    @ans = &res_send($ns, "");
}
