ip/dhcpd: work around raspberry pi pxe firmware by providing dhcp option 66

The raspberry pi 4 PXE firmware insists on finding the tftp
server address by parsing dhcp option 66 as an ip address
string.
This commit is contained in:
cinap_lenrek 2021-04-11 20:20:41 +02:00
parent d9bf5d074d
commit a89bee7373

View file

@ -1136,8 +1136,7 @@ miscoptions(Req *rp, uchar *ip)
uchar *addrs[8];
uchar *op, *omax;
uchar x[nelem(addrs)*IPaddrlen], vopts[Maxoptlen];
char *p;
char *attr[100], **a;
char ip4str[16], *p, *attr[100], **a;
Ndbtuple *t;
Iplifc *lifc;
@ -1279,6 +1278,21 @@ miscoptions(Req *rp, uchar *ip)
case OBttl:
byteopt(rp, OBttl, 255);
break;
case ODtftpserver:
/*
* This option actually should contain a hostname, BUT:
* It appears that Rpi4 PXE firmware ignores the siaddr
* and instead insists on this (DHCP option 66) to contain
* the IP address string of the TFTP server.
*/
snprint(ip4str, sizeof(ip4str), "%V", rp->bp->siaddr);
stringopt(rp, ODtftpserver, ip4str);
break;
case ODbootfile:
if(*rp->bp->file)
stringopt(rp, ODbootfile, rp->bp->file);
break;
}
if (*rp->vendorclass != '\0') {