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";