diff options
Diffstat (limited to 'misc/cisco2list')
-rwxr-xr-x | misc/cisco2list | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/misc/cisco2list b/misc/cisco2list new file mode 100755 index 0000000..6f5466f --- /dev/null +++ b/misc/cisco2list @@ -0,0 +1,20 @@ +#!/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; +} |