]> git.sesse.net Git - nms/blobdiff - config/make-dhcpd.pl
Enable netboot for all.
[nms] / config / make-dhcpd.pl
index 2a2e2a35e502700dacc40e63919be26767e25718..ddce2c50a59db283a4d3937d3cf9dc9c07dad163 100755 (executable)
@@ -1,63 +1,53 @@
 #! /usr/bin/perl -w
 use strict;
 
-# les inn nettnavn
-my %netnames = ();
-my %netmasks = ();
+my $date = `date --rfc-2822`;
+chomp $date;
+
 my @nets = ();
 open NAMES, "switches.txt"
        or die "switches.txt: $!";
 while (<NAMES>) {
        chomp;
-       /194\.0\.(\d+\.\d+)\s+(\d+)\s+(\S+)/ or next;
-       $netmasks{$1} = $2;
-       $netnames{$1} = $3;
-       push @nets, $1;
+       /87\.76\.(\d+\.\d+)\s+(\d+)\s+(\S+)/ or next;
+       push @nets, {
+               net => $1,
+               netmask => $2,
+               name => $3
+       };
 }      
 
 print <<"EOF";
-# Autogenerated by make-dhcpd.pl. Do not edit manually!
+# Autogenerated by make-dhcpd.pl at $date. Do not edit manually!
 
-option domain-name "tg06.gathering.org";
-option domain-name-servers 194.0.254.2;
+option domain-name "tg07.gathering.org";
+option domain-name-servers 87.76.254.2, 87.76.255.2;
 
-# ddns-update-style none;
-ddns-update-style interim;
+# Netboot FTW
+next-server 87.76.255.18;
+filename "/pxelinux.0";
 
-# extra logging for option 82
-if exists agent.circuit-id
-{
-       log (
-               info,
-               concat (
-                       "option-82 info for ", binary-to-ascii (16, 8, ":", hardware),
-                       ": interface ", binary-to-ascii (10, 8, "/", suffix ( option agent.circuit-id, 2)),
-                       ", VLAN ", binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)),
-                       ", switch '", substring( option agent.remote-id, 2, 6),
-                       "', port-name '", substring ( option agent.circuit-id, 2, extract-int ( substring ( option agent.circuit-id, 3, 1 ), 8 ) ),
-                       "'"
-              )
-       );
-}
+ddns-update-style interim;
+omapi-port 7911;
 
 # dnssec-keygen -a HMAC-MD5 -b 128 -n HOST DHCP_UPDATER
 key DHCP_UPDATER {
         algorithm HMAC-MD5.SIG-ALG.REG.INT;
-       secret 5Yz1azvh7mE0IRGffTvtKg==;
+       secret F388UOhaIIKHRH9TDE5PTA==;
 }
 
 default-lease-time 14400;
 max-lease-time 28800;
 
 # Tele-nett
-subnet 194.0.254.0 netmask 255.255.255.0 {
+subnet 87.76.254.0 netmask 255.255.255.0 {
 }
 
 # Server-nett
-subnet 194.0.255.0 netmask 255.255.255.0 {
+subnet 87.76.255.0 netmask 255.255.255.0 {
 }
 
-zone 0.194.in-addr.arpa. {
+zone 76.87.in-addr.arpa. {
        primary 127.0.0.1;
        key DHCP_UPDATER;
 }
@@ -65,96 +55,44 @@ zone 0.194.in-addr.arpa. {
 EOF
 
 for my $net (@nets) {
-       my $domain = $netnames{$net};
+       my $domain = $net->{name};
 
        my ($netmask, $numpc);
-       if ($netmasks{$net} == 24) {
+       if ($net->{netmask} == 24) {
                $netmask = "255.255.255.0";
                $numpc = 256;
-       } elsif ($netmasks{$net} == 25) {
+       } elsif ($net->{netmask} == 25) {
                $netmask = "255.255.255.128";
                $numpc = 128;
-       } elsif ($netmasks{$net} == 26) {
+       } elsif ($net->{netmask} == 26) {
                $netmask = "255.255.255.192";
                $numpc = 64;
        } else {
-               die "Unknown netmask /$netmasks{$net}";
+               die "Unknown netmask /" . $net->{netmask};
        }
 
-       $net =~ /(\d+)\.(\d+)/ or die "Unknown net $net";
+       $net->{net} =~ /(\d+)\.(\d+)/ or die "Unknown net $net";
        my ($majorsubnet,$minorsubnet) = ($1,$2);
-       
-       my $gw = "194.0.$majorsubnet." . ($minorsubnet + 1);
-       my $rangestart = "194.0.$majorsubnet." . ($minorsubnet + 10);
-       my $rangeend = "194.0.$majorsubnet." . ($minorsubnet + $numpc - 2);
-
-       if ($domain =~ /^split:(.*)/) {
-               my @domains = split /,/, $1;
-               for my $d (@domains) {
-                       print <<"EOF";
-zone $d.tg06.gathering.org. {
-       primary 127.0.0.1;
-       key DHCP_UPDATER;
-}
-EOF
-               }
-               print <<"EOF";
-subnet 194.0.$net netmask $netmask {
-       authoritative;
-       option routers $gw;
 
-EOF
-               my $numpc_sub = int($numpc / scalar(@domains));
-               for my $d (@domains) {
-                       print <<"EOF";
-       class "$d" {
-               match if substring ( option agent.circuit-id, 2, extract-int ( substring ( option agent.circuit-id, 3, 1 ), 8 ) ) = "$d";
-       }
-EOF
-               }
-
-               my $i = 0;
-               for my $d (@domains) {
-                       my $rangestart = "194.0.$majorsubnet." . ($minorsubnet + $i * $numpc_sub + 10);
-                       my $rangeend = "194.0.$majorsubnet." . ($minorsubnet + $i * $numpc_sub + $numpc_sub - 2);
-                       
-                       print <<"EOF";
-       pool {
-               allow members of "$d";
-               range $rangestart $rangeend;
-               option domain-name "$d.tg06.gathering.org";
-               ddns-domainname "$.tg06.gathering.org";
-               ignore client-updates;
-       }
-EOF
-                       ++$i;
-               }
-       } else {
-               print <<"EOF";
-zone $domain.tg06.gathering.org. {
+       # FIXME: Should use Net::CIDR
+       my $gw = "87.76.$majorsubnet." . ($minorsubnet + 1);
+       my $rangestart = "87.76.$majorsubnet." . ($minorsubnet + 10);
+       my $rangeend = "87.76.$majorsubnet." . ($minorsubnet + $numpc - 2);
+
+       print <<"EOF";
+zone $domain.tg07.gathering.org. {
        primary 127.0.0.1;
        key DHCP_UPDATER;
 }
-subnet 194.0.$net netmask $netmask {
+subnet 87.76.$net->{net} netmask $netmask {
        authoritative;
        option routers $gw;
 
        range $rangestart $rangeend;
-       option domain-name "$domain.tg06.gathering.org";
-       ddns-domainname "$domain.tg06.gathering.org";
+       option domain-name "$domain.tg07.gathering.org";
+       ddns-domainname "$domain.tg07.gathering.org";
        ignore client-updates;
+}
 EOF
-
-       # hack for sesse =)
-#      if ($net eq '250.0') {
-#              print <<"EOF";
-#      host trofast {
-#              hardware ethernet 00:0e:0c:36:a7:66;
-#              filename "/pxelinux.0";
-#              next-server 194.0.254.89;
-#      }
-#EOF
-       }
-       
-       print "}\n";
 }
+