]> git.sesse.net Git - nms/blobdiff - config/make-dhcpd.pl
Fix a typo.
[nms] / config / make-dhcpd.pl
index 9ca1edf685a11b0626b248653677798b8f877e06..2a2e2a35e502700dacc40e63919be26767e25718 100755 (executable)
@@ -9,7 +9,7 @@ open NAMES, "switches.txt"
        or die "switches.txt: $!";
 while (<NAMES>) {
        chomp;
-       /81\.162\.(\d+\.\d+)\s+(\d+)\s+(\S+)/ or next;
+       /194\.0\.(\d+\.\d+)\s+(\d+)\s+(\S+)/ or next;
        $netmasks{$1} = $2;
        $netnames{$1} = $3;
        push @nets, $1;
@@ -18,26 +18,46 @@ while (<NAMES>) {
 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;
+option domain-name "tg06.gathering.org";
+option domain-name-servers 194.0.254.2;
 
+# ddns-update-style none;
 ddns-update-style interim;
 
+# 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 ) ),
+                       "'"
+              )
+       );
+}
+
+# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST DHCP_UPDATER
 key DHCP_UPDATER {
         algorithm HMAC-MD5.SIG-ALG.REG.INT;
-       secret removed;
+       secret 5Yz1azvh7mE0IRGffTvtKg==;
 }
 
 default-lease-time 14400;
 max-lease-time 28800;
 
-# Servernett
-subnet 81.162.254.0 netmask 255.255.255.192 {
+# Tele-nett
+subnet 194.0.254.0 netmask 255.255.255.0 {
 }
-subnet 81.162.254.64 netmask 255.255.255.192 {
+
+# Server-nett
+subnet 194.0.255.0 netmask 255.255.255.0 {
 }
 
-zone 162.81.in-addr.arpa. {
+zone 0.194.in-addr.arpa. {
        primary 127.0.0.1;
        key DHCP_UPDATER;
 }
@@ -64,34 +84,76 @@ for my $net (@nets) {
        $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);
+       my $gw = "194.0.$majorsubnet." . ($minorsubnet + 1);
+       my $rangestart = "194.0.$majorsubnet." . ($minorsubnet + 10);
+       my $rangeend = "194.0.$majorsubnet." . ($minorsubnet + $numpc - 2);
 
-       print <<"EOF";
-zone $domain.tg05.gathering.org. {
+       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;
 }
-subnet 81.162.$net netmask $netmask {
+EOF
+               }
+               print <<"EOF";
+subnet 194.0.$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
+               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
+               }
 
-       # 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;
+               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. {
+       primary 127.0.0.1;
+       key DHCP_UPDATER;
+}
+subnet 194.0.$net netmask $netmask {
+       authoritative;
+       option routers $gw;
+
+       range $rangestart $rangeend;
+       option domain-name "$domain.tg06.gathering.org";
+       ddns-domainname "$domain.tg06.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";