#!/usr/bin/perl # # updaterpsl.pl: RPSL from Foundry Configuration script # (c) 2004 Unilogic Networks B.V. # # 2004-09-17 cliff Updating script to support our cisco border # $groupPreference{"TRANSIT-NTT"} = 200; $groupPreference{"TRANSIT-TG"} = 200; $groupPreference{"TRANSIT-KPN"} = 200; $groupPreference{"EPACITY"} = 100; $groupPreference{"AMSIX-BACKUP"} = 100; $groupPreference{"AMSIX"} = 100; $groupPreference{"PPEERING"} = 100; $groupPreference{"LIMBEX"} = 100; $groupPreference{"BNIX"} = 100; $groupPreference{"M6OWN"} = 100; $groupAnnouncement{"AMSIX-BACKUP"} = "ANY"; $groupAnnouncement{"AMSIX"} = "AS-UNILOGICNET"; $groupAnnouncement{"PPEERING"} = "AS28788"; $groupAnnouncement{"TRANSIT-NTT"} = "AS28788"; $groupAnnouncement{"TRANSIT-KPN"} = "AS28788"; $groupAnnouncement{"TRANSIT-TG"} = "AS28788"; $groupAnnouncement{"EPACITY"} = "AS28788"; $groupAnnouncement{"LIMBEX"} = "AS-UNILOGICNET"; $groupAnnouncement{"BNIX"} = "AS28788"; $groupAnnouncement{"M6OWN"} = "AS28788"; while (<>) { if ($_ =~ /neighbor (\d+\.\d+\.\d+\.\d+)\ peer-group\ +([^\ ]+)$/) { $remoteGroup{$1} = $2; chomp($remoteGroup{$1}); $preference{$1} = $groupPreference{$remoteGroup{$1}}; $announcement{$1} = $groupAnnouncement{$remoteGroup{$1}}; }; if ($_ =~ /neighbor (\d+\.\d+\.\d+\.\d+)\ remote-as\ (.+)$/) { $remoteAS{$1} = $2; if (!$remoteGroup{$1}) { $preference{$1} = 100; $announcement{$1} = 'ANY'; } }; if ($_ =~ /neighbor (\d+\.\d+\.\d+\.\d+)\ route-map\ (in|out)\ (.+)$/) { if ($2 == "in") { $remoteRoutemapIn{$1} = $3; } elsif ($2 == "out") { $remoteRoutemapOut{$1} = $3; } else { print("Error in configuration file"); } }; if ($_ =~ /neighbor (\d+\.\d+\.\d+\.\d+)\ description\ +(.+)$/) { $remoteDescription{$1} = $2; }; }; @sorted = sort { $remoteAS{$a} <=> $remoteAS{$b} } keys %remoteAS; foreach $nextHop (@sorted) { print "remarks: ---------------------------------------------------------------\n"; print "remarks: $remoteDescription{$nextHop}\n"; print "remarks: ---------------------------------------------------------------\n"; print "import: from AS$remoteAS{$nextHop} $nextHop \taction pref=$preference{$nextHop}; accept {0.0.0.0/0^0-27} AND NOT RS-UNFILTER\n"; print "export: to AS$remoteAS{$nextHop}\t $nextHop \t announce $announcement{$nextHop}\n"; }; print "remarks: ---------------------------------------------------------------\n";