mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Final PXE tweak, and release-note to reflect changes.
This commit is contained in:
15
CHANGELOG
15
CHANGELOG
@@ -84,6 +84,21 @@ version 2.76
|
|||||||
Add ARM32_EFI and ARM64_EFI as valid architectures in
|
Add ARM32_EFI and ARM64_EFI as valid architectures in
|
||||||
--pxe-service.
|
--pxe-service.
|
||||||
|
|
||||||
|
Fix PXE booting for UEFI architectures. Modify PXE boot
|
||||||
|
sequence in this case to force the client to talk to dnsmasq
|
||||||
|
over port 4011. This makes PXE and especially proxy-DHCP PXE
|
||||||
|
work with these archictectures.
|
||||||
|
|
||||||
|
Workaround problems with UEFI PXE clients. There exist
|
||||||
|
in the wild PXE clients which have problems with PXE
|
||||||
|
boot menus. To work around this, when there's a single
|
||||||
|
--pxe-service which applies to client, then that target
|
||||||
|
will be booted directly, rather then sending a
|
||||||
|
single-item boot menu.
|
||||||
|
|
||||||
|
Many thanks to Jarek Polok, Michael Kuron and Dreamcat4
|
||||||
|
for their work on the long-standing UEFI PXE problem.
|
||||||
|
|
||||||
|
|
||||||
version 2.75
|
version 2.75
|
||||||
Fix reversion on 2.74 which caused 100% CPU use when a
|
Fix reversion on 2.74 which caused 100% CPU use when a
|
||||||
|
|||||||
@@ -864,6 +864,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
|||||||
if (tmp)
|
if (tmp)
|
||||||
{
|
{
|
||||||
struct dhcp_boot *boot;
|
struct dhcp_boot *boot;
|
||||||
|
int redirect4011 = 0;
|
||||||
|
|
||||||
if (tmp->netid.net)
|
if (tmp->netid.net)
|
||||||
{
|
{
|
||||||
@@ -882,8 +883,13 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
|||||||
|
|
||||||
clear_packet(mess, end);
|
clear_packet(mess, end);
|
||||||
|
|
||||||
/* Redirect the client to port 4011 */
|
/* Redirect EFI clients to port 4011 */
|
||||||
|
if (pxearch >= 6)
|
||||||
|
{
|
||||||
|
redirect4011 = 1;
|
||||||
mess->siaddr = tmp->local;
|
mess->siaddr = tmp->local;
|
||||||
|
}
|
||||||
|
|
||||||
/* Returns true if only one matching service is available. On port 4011,
|
/* Returns true if only one matching service is available. On port 4011,
|
||||||
it also inserts the boot file and server name. */
|
it also inserts the boot file and server name. */
|
||||||
workaround = pxe_uefi_workaround(pxearch, tagif_netid, mess, tmp->local, now, pxe);
|
workaround = pxe_uefi_workaround(pxearch, tagif_netid, mess, tmp->local, now, pxe);
|
||||||
@@ -906,7 +912,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
|||||||
option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, htonl(tmp->local.s_addr));
|
option_put(mess, end, OPTION_SERVER_IDENTIFIER, INADDRSZ, htonl(tmp->local.s_addr));
|
||||||
pxe_misc(mess, end, uuid);
|
pxe_misc(mess, end, uuid);
|
||||||
prune_vendor_opts(tagif_netid);
|
prune_vendor_opts(tagif_netid);
|
||||||
if (pxe && !workaround)
|
if ((pxe && !workaround) || !redirect4011)
|
||||||
do_encap_opts(pxe_opts(pxearch, tagif_netid, tmp->local, now), OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
|
do_encap_opts(pxe_opts(pxearch, tagif_netid, tmp->local, now), OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
|
||||||
|
|
||||||
log_packet("PXE", NULL, emac, emac_len, iface_name, ignore ? "proxy-ignored" : "proxy", NULL, mess->xid);
|
log_packet("PXE", NULL, emac, emac_len, iface_name, ignore ? "proxy-ignored" : "proxy", NULL, mess->xid);
|
||||||
|
|||||||
Reference in New Issue
Block a user