#! /usr/bin/perl
open PATCHLIST, "<patchlist.txt"
	or die "patchlist.txt: $!";
my %distros = ();

while (<PATCHLIST>) {
	chomp;
	my ($name, $distro, $port) = split / /;

	$name =~ /e(\d+)-(\d+)/;
	my ($row, $switch) = ($1, $2);

	my $ip;
	if ($switch == 1) {
		$ip = "87.76." . ($row) . ".1";
	} elsif ($switch == 2) {
		$ip = "87.76." . ($row) . ".65";
	} elsif ($switch == 3) {
		$ip = "87.76." . ($row) . ".129";
	} elsif ($switch == 4) {
		$ip = "87.76." . ($row + 1) . ".1";
	} elsif ($switch == 5) {
		$ip = "87.76." . ($row + 1) . ".65";
	} elsif ($switch == 6) {
		$ip = "87.76." . ($row + 1) . ".129";
	}

	my $vlan = "$row$switch";

	$distros{$distro} .= <<"EOF";
vlan $vlan
  name $name
!
default interface vlan $vlan
interface vlan $vlan
  description $name
  ip address $ip 255.255.255.192
  ip directed-broadcast 10
  ip helper-address 87.76.254.2
  no ip proxy-arp
  ip access-group great-wall-of-tg in
  ipv6 address 2001:16D8:FFFF:$vlan::1/64
  no shutdown
!
 
default interface $port
interface $port
 description $name
 switchport mode access
 switchport access vlan $vlan

 spanning-tree portfast
 spanning-tree bpduguard enable

 ip igmp snooping
 storm-control broadcast level 2
 no shutdown
!
EOF
}

for my $distro (keys %distros) {
	open DISTRO, ">$distro-config"
		or die "$distro-config: $!";
	print DISTRO $distros{$distro};
	print DISTRO "end\n";
	close DISTRO;
}
