summaryrefslogtreecommitdiffstats
path: root/make_ip6_del.pl
diff options
context:
space:
mode:
Diffstat (limited to 'make_ip6_del.pl')
-rwxr-xr-xmake_ip6_del.pl39
1 files changed, 39 insertions, 0 deletions
diff --git a/make_ip6_del.pl b/make_ip6_del.pl
new file mode 100755
index 0000000..80f0b0c
--- /dev/null
+++ b/make_ip6_del.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+while (<>) {
+ chomp;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
+ next if /^$/;
+
+ die "format error:\n$_\n"
+ if not m#^([\da-fA-F]{4}):([\da-fA-F]{1,4})::/(\d+)\s+([\w\.]+)$#;
+ my $len = $3; my $s = $4;
+ my $i1 = $1; my $i2 = $2;
+ my $net = (hex($i1) << 16) + hex $i2;
+
+ if (0) { # just some code to help me visually aggregate networks
+ my $bs = unpack('B32', pack('N', $net));
+ $bs =~ s/(.{8})/$1 /g;
+ print "${i1}:${i2}::/$len\t$bs $s\n";
+ next;
+ }
+
+ print qq|{ ${net}UL, $len, "|;
+ if ($s =~ /\./) {
+ print $s;
+ } elsif ($s eq '6to4') {
+ print "\\x0A";
+ } elsif ($s eq 'teredo') {
+ print "\\x0B";
+ } elsif ($s eq 'UNALLOCATED') {
+ print "\\006";
+ } else {
+ print $s =~ /\./ ? $s : "whois.$s.net";
+ }
+ print qq|" },\n|;
+}
+