diff --git a/src/etc/inc/plugins.inc.d/dhcpd.inc b/src/etc/inc/plugins.inc.d/dhcpd.inc
index f243b5527..01b96ddb4 100644
--- a/src/etc/inc/plugins.inc.d/dhcpd.inc
+++ b/src/etc/inc/plugins.inc.d/dhcpd.inc
@@ -1091,6 +1091,13 @@ EOD;
'00:0b' => 'filename64arm',
];
+ if (!empty($dhcpifconf['filenameipxe'])) {
+ $dhcpdconf .= " if exists user-class and option user-class = \"iPXE\" {\n";
+ $dhcpdconf .= " filename \"{$dhcpifconf['filenameipxe']}\";\n";
+ $dhcpdconf .= " }";
+ $conditional = true;
+ }
+
foreach ($filemap as $arch => $file) {
if (empty($dhcpifconf[$file])) {
continue;
@@ -1103,6 +1110,7 @@ EOD;
$conditional = true;
}
+
if ($conditional) {
if (!empty($dhcpifconf['filename'])) {
$dhcpdconf .= " else {\n";
diff --git a/src/www/services_dhcp.php b/src/www/services_dhcp.php
index 21c7403a7..39de82b70 100644
--- a/src/www/services_dhcp.php
+++ b/src/www/services_dhcp.php
@@ -58,7 +58,7 @@ $config_copy_fieldsnames = array('enable', 'staticarp', 'failover_peerip', 'fail
'defaultleasetime', 'maxleasetime', 'gateway', 'domain', 'domainsearchlist', 'denyunknown','ignoreuids', 'ddnsdomain',
'ddnsdomainprimary', 'ddnsdomainkeyname', 'ddnsdomainkey', 'ddnsdomainalgorithm', 'ddnsupdate', 'mac_allow',
'mac_deny', 'tftp', 'bootfilename', 'ldap', 'netboot', 'nextserver', 'filename', 'filename32', 'filename64',
- 'filename32arm', 'filename64arm', 'rootpath', 'netmask', 'numberoptions', 'interface_mtu', 'wpad', 'omapi', 'omapiport',
+ 'filename32arm', 'filename64arm', 'filenameipxe', 'rootpath', 'netmask', 'numberoptions', 'interface_mtu', 'wpad', 'omapi', 'omapiport',
'omapialgorithm', 'omapikey', 'minsecs');
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
@@ -988,8 +988,10 @@ include("head.inc");
=gettext('Set ARM UEFI (64-bit) filename');?>
+ =gettext('Set iPXE boot filename');?>
+
= gettext('You need both a filename and a boot server configured for this to work.') ?>
-
+
=gettext('Set root-path string');?>
=gettext("Note: string-format: iscsi:(servername):(protocol):(port):(LUN):targetname");?>