]> git.sesse.net Git - nms/commitdiff
Added make-dhcpd.pl from TG05.
authorSteinar H. Gunderson <sesse@samfundet.no>
Sun, 9 Apr 2006 18:44:50 +0000 (18:44 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Sun, 9 Apr 2006 18:44:50 +0000 (18:44 +0000)
config/make-dhcpd.pl [new file with mode: 0755]

diff --git a/config/make-dhcpd.pl b/config/make-dhcpd.pl
new file mode 100755 (executable)
index 0000000..9ca1edf
--- /dev/null
@@ -0,0 +1,98 @@
+#! /usr/bin/perl -w
+use strict;
+
+# les inn nettnavn
+my %netnames = ();
+my %netmasks = ();
+my @nets = ();
+open NAMES, "switches.txt"
+       or die "switches.txt: $!";
+while (<NAMES>) {
+       chomp;
+       /81\.162\.(\d+\.\d+)\s+(\d+)\s+(\S+)/ or next;
+       $netmasks{$1} = $2;
+       $netnames{$1} = $3;
+       push @nets, $1;
+}      
+
+print <<"EOF";
+# Autogenerated by make-dhcpd.pl. Do not edit manually!
+
+option domain-name "tg05.gathering.org";
+option domain-name-servers 81.162.254.2, 81.162.254.76;
+
+ddns-update-style interim;
+
+key DHCP_UPDATER {
+        algorithm HMAC-MD5.SIG-ALG.REG.INT;
+       secret removed;
+}
+
+default-lease-time 14400;
+max-lease-time 28800;
+
+# Servernett
+subnet 81.162.254.0 netmask 255.255.255.192 {
+}
+subnet 81.162.254.64 netmask 255.255.255.192 {
+}
+
+zone 162.81.in-addr.arpa. {
+       primary 127.0.0.1;
+       key DHCP_UPDATER;
+}
+
+EOF
+
+for my $net (@nets) {
+       my $domain = $netnames{$net};
+
+       my ($netmask, $numpc);
+       if ($netmasks{$net} == 24) {
+               $netmask = "255.255.255.0";
+               $numpc = 256;
+       } elsif ($netmasks{$net} == 25) {
+               $netmask = "255.255.255.128";
+               $numpc = 128;
+       } elsif ($netmasks{$net} == 26) {
+               $netmask = "255.255.255.192";
+               $numpc = 64;
+       } else {
+               die "Unknown netmask /$netmasks{$net}";
+       }
+
+       $net =~ /(\d+)\.(\d+)/ or die "Unknown net $net";
+       my ($majorsubnet,$minorsubnet) = ($1,$2);
+       
+       my $gw = "81.162.$majorsubnet." . ($minorsubnet + 1);
+       my $rangestart = "81.162.$majorsubnet." . ($minorsubnet + 10);
+       my $rangeend = "81.162.$majorsubnet." . ($minorsubnet + $numpc - 2);
+
+       print <<"EOF";
+zone $domain.tg05.gathering.org. {
+       primary 127.0.0.1;
+       key DHCP_UPDATER;
+}
+subnet 81.162.$net netmask $netmask {
+       authoritative;
+       range $rangestart $rangeend;
+       option routers $gw;
+
+       option domain-name "$domain.tg05.gathering.org";
+       ddns-domainname "$domain.tg05.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 81.162.254.89;
+       }
+EOF
+       }
+       
+       print "}\n";
+}