21 lines
492 B
Text
21 lines
492 B
Text
|
#!/usr/bin/perl
|
||
|
#
|
||
|
# Convert Cisco routing table listing to list of prefixes
|
||
|
#
|
||
|
|
||
|
$loc = ($ARGV[0] eq "-l"); # Print only local prefixes
|
||
|
|
||
|
while (<STDIN>) {
|
||
|
($loc ? /^[OR]\s/ : /^B\s/) || next;
|
||
|
/^[ORB]( E[12])?\s+(\d+\.\d+\.\d+\.\d+)(\s|\/\d+\s)/ || die "Cannot parse $_";
|
||
|
$net = $2;
|
||
|
$len = $3;
|
||
|
if ($len =~ /^\s*$/) {
|
||
|
# Magic rule :)
|
||
|
$len = ($net =~ /\.0$/) ? 24 : 32;
|
||
|
}
|
||
|
$len =~ s/^\///;
|
||
|
$net =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/;
|
||
|
printf "%02x%02x%02x%02x/%d\n", $1, $2, $3, $4, $len;
|
||
|
}
|