X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=config%2Fmake-dhcpd.pl;h=be48882009b805bd5a676c3bee0586991d1d6a16;hb=567a81d8e3e7a04df59ffc4df6865c13581c11df;hp=9ca1edf685a11b0626b248653677798b8f877e06;hpb=ff83c67935bd1537bc0555b2c2e8eaf8963f8412;p=nms diff --git a/config/make-dhcpd.pl b/config/make-dhcpd.pl index 9ca1edf..be48882 100755 --- a/config/make-dhcpd.pl +++ b/config/make-dhcpd.pl @@ -9,7 +9,7 @@ open NAMES, "switches.txt" or die "switches.txt: $!"; while () { 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 () { 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 "$d.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";