summaryrefslogtreecommitdiffstats
path: root/make_ip6_del.pl
blob: 80f0b0c2a68b10673d408cc01a655f75a8335d84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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|;
}