diff options
Diffstat (limited to 'bootstrap/make-dhcpd.pl')
-rwxr-xr-x | bootstrap/make-dhcpd.pl | 60 |
1 files changed, 50 insertions, 10 deletions
diff --git a/bootstrap/make-dhcpd.pl b/bootstrap/make-dhcpd.pl index f1a398e..802c2ad 100755 --- a/bootstrap/make-dhcpd.pl +++ b/bootstrap/make-dhcpd.pl @@ -15,9 +15,10 @@ $base = $ARGV[0] if $#ARGV > -1; $base .= "/" if not $base =~ m/\/$/ and not $base eq ""; my $dhcpd_base = $base . "dhcp/"; -my $dhcpd_conf = $dhcpd_base . "dhcpd.conf"; -my $dhcpd_pxeconf = $dhcpd_base . "pxe-boot.conf"; -my $dhcpd_wlc_conf= $dhcpd_base . "wlc-conf.conf"; +my $dhcpd_conf = $dhcpd_base . "dhcpd.conf"; +my $dhcpd_pxeconf = $dhcpd_base . "v4-pxe-boot.conf"; +my $dhcpd_wlc_conf = $dhcpd_base . "v4-wlc.conf"; +my $dhcpd_voip_conf = $dhcpd_base . "v4-voip.conf"; # primary my $pri_range = Net::IP->new($nms::config::pri_net) or die ("pri_range fail"); @@ -29,7 +30,7 @@ my $sec_range = Net::IP->new($nms::config::sec_net) or die ("sec_range fail"); my $sec_mask = $sec_range->mask(); my $sec_net = $sec_range->ip(); -# Create PXE-boot configuration file for DHCP on master. +# Create PXE-boot configuration file for DHCP if ( not -f $dhcpd_conf ) { print STDERR "Creating file " . $dhcpd_conf . "\n"; @@ -57,27 +58,37 @@ key DHCP_UPDATER { subnet $pri_net netmask $pri_mask {} subnet $sec_net netmask $sec_mask {} -include "/etc/dhcp/revzones.conf"; -include "/etc/dhcp/generated-include.conf"; +include "/etc/dhcp/v4-revzones.conf"; +include "/etc/dhcp/v4-generated-include.conf"; include "$dhcpd_pxeconf"; include "$dhcpd_wlc_conf"; +include "$dhcpd_voip_conf"; EOF close DHCPDFILE; } -# Create PXE-boot configuration file for DHCP on master. +# Create PXE-boot configuration file for DHCP if ( not -f $dhcpd_pxeconf ) { print STDERR "Creating file " . $dhcpd_pxeconf . "\n"; open PXEFILE, ">" . $dhcpd_pxeconf or die ( $! . " " . $dhcpd_pxeconf); - print PXEFILE "next-server " . $nms::config::pxe_server . ";\n"; - print PXEFILE "filename \"pxelinux.0\";\n"; + print PXEFILE <<"EOF"; +option arch code 93 = unsigned integer 16; - close PXEFILE; +if option arch = 00:07 { + filename "bootx64.efi"; +} else { + filename "pxelinux.0"; } +next-server $nms::config::pxe_server_v4; + +EOF + + close PXEFILE; +} # Create WLC configuration file if ( not -f $dhcpd_wlc_conf ) @@ -99,3 +110,32 @@ EOF close WLCFILE; } +# Create VoIP config +if ( not -f $dhcpd_voip_conf ) +{ + print STDERR "Creating file " . $dhcpd_voip_conf . "\n"; + open VOIPFILE, ">" . $dhcpd_voip_conf or die ( $! . " " . $dhcpd_voip_conf); + + print VOIPFILE <<"EOF"; +option space CiscoVOIP; +option CiscoVOIP.cm-tftp-server code 150 = array of ip-address; + +class "cisco-voip-lan" { + match if substring (option vendor-class-identifier, 0, 28) = "Cisco Systems, Inc. IP Phone"; + vendor-option-space CiscoVOIP; + log( info, concat( "LOLOPHONE: " , option vendor-class-identifier )); + option CiscoVOIP.cm-tftp-server $nms::config::voip1; + next-server $nms::config::voip1; +} + +class "cisco-voip-wlan" { + match if substring (option vendor-class-identifier, 0, 33) = "Cisco Systems Inc. Wireless Phone"; + vendor-option-space CiscoVOIP; + log( info, concat( "BANANAPHONE: " , option vendor-class-identifier )); + option CiscoVOIP.cm-tftp-server $nms::config::voip1; + next-server $nms::config::voip1; +} +EOF + close VOIPFILE; +} + |