#!/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";

