3
## Read BGPd logfile and lookup RR's whois database.
5
## Copyright (c) 1997 Kunihiro Ishiguro
9
## Configuration variables
10
$whois_host = "whois.jpix.ad.jp";
12
#$logfile = "/usr/local/sbin/logfile"
13
$logfile = shift || die "Please specify filename";
17
local ($prefix, $origin);
19
open (LOG, $logfile) || die "can't open $logfile";
24
if ($index =~ /[bgpd]/) {
30
if (/([\d\.\/]+)\s+([\d\.]+)\s+(\d+)\s+(\d+)\s+([\d ]+)\s+[ie\?]/) {
36
($origin) = ($aspath =~ /([\d]+)$/);
38
print "$nexthop [$origin] $prefix $aspath ";
40
$ret = &whois_check ($prefix, $origin);
44
print "AS orgin mismatch\n";
46
print "prefix doesn't exist \n";
54
local ($prefix, $origin) = @_;
55
local ($rr_prefix, $rr_origin) = ();
58
$origin = "AS" . $origin;
60
@result = &whois ($prefix);
64
if (/^route:.*\s([\d\.\/]+)$/) {
67
if (/^origin:.*\s(AS[\d]+)$/) {
70
if ($prefix eq $rr_prefix and $origin eq $rr_origin) {
72
} elsif ($prefix eq $rr_prefix) {
77
# alarm_mail ($prefix, $origin, @result);
88
local ($name, $aliases, $port, $proto) = getservbyname ("whois", "tcp");
89
return ($port, $proto);
96
local ($port, $proto) = &get_whois_port;
99
if ($whois_host=~ /^\s*\d+\.\d+\.\d+\.\d+\s*$/) {
100
$address = pack ("C4",split(/\./,$host));
102
$address = (gethostbyname ($whois_host))[4];
105
socket (SOCKET, PF_INET, SOCK_STREAM, $proto);
107
if (connect (SOCKET, sockaddr_in ($port, $address))) {
108
local ($oldhandle) = select (SOCKET);
112
print SOCKET "$query\r\n";
122
local ($prefix, $origin, @result) = @_;
124
open (MAIL, "|$mailer -t $mail_address") || die "can't open $mailer";
126
print MAIL "From: root\@rr1.jpix.ad.jp\n";
127
print MAIL "Subject: RR $origin $prefix\n";
128
print MAIL "MIME-Version: 1.0\n";
129
print MAIL "Content-Type: text/plain; charset=us-ascii \n\n";
130
print MAIL "RR Lookup Error Report\n";
131
print MAIL "======================\n";
132
print MAIL "Announced route : $prefix from $origin\n\n";
133
print MAIL "@result";