aboutsummaryrefslogtreecommitdiffstats
path: root/bootstrap/make-dhcpd.pl
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/make-dhcpd.pl')
-rwxr-xr-xbootstrap/make-dhcpd.pl60
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;
+}
+