summaryrefslogtreecommitdiffstats
path: root/misc/cisco2list
diff options
context:
space:
mode:
Diffstat (limited to 'misc/cisco2list')
-rwxr-xr-xmisc/cisco2list20
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;
+}