#!/afs/athena/contrib/perl/p

$ipadd = $ARGV[0];
(@ipaddr) = split(/\./, $ipadd);

if($ipaddr[0] < 127){
    $fld = "net $ipaddr[0]";
}
elsif($ipaddr[0] < 191){
    $fld = "net $ipaddr[0]".".".$ipaddr[1];
}
else{
    $fld = "net ".$ipaddr[0].".".$ipaddr[1].".".$ipaddr[2];
}
print &whois_lookup($fld), "\n";

sub whois_lookup {
    local($domain) = @_;
 
    return $Whois{$domain} if $Whois{$domain};
    return "--------------------" if $domain eq "";
 
    open(WH, "whois -h internic.net \"$domain\"|");
    while(<WH>){
        if(/MILES, JAMES/){
            return "--------------------";
        }
        if(/([^\(]+) \([A-Z\-1-9]+\)/){
            $Whois{$domain} = $1." [$domain]";
            return $1." [$domain]";
        }
        if(/No match for/){
            $Whois{$domain} = "Unknown [$domain]";
            return "Unknown [$domain]";
        }
        if(/system load/){
            return "NIC is overloaded";
        }
    }
    close(WH);
    "Hey, what gives? [$domain]";
}
