+#! /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) . "1";
+ } elsif ($switch == 2) {
+ $ip = "87.76." . ($row - 1) . "65";
+ } elsif ($switch == 3) {
+ $ip = "87.76." . ($row - 1) . "129";
+ } elsif ($switch == 4) {
+ $ip = "87.76." . $row . "1";
+ } elsif ($switch == 5) {
+ $ip = "87.76." . $row . "65";
+ } elsif ($switch == 6) {
+ $ip = "87.76." . $row . "129";
+ }
+
+ my $vlan = "$row$switch";
+
+ $distros{$distro} .= <<"EOF";
+vlan $vlan
+ name $name
+!
+default interface vlan $vlan
+interface $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
+ 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};
+ close DISTRO;
+}