Skip to content

feat(pxe): TFTP option negotiation and PXE boot fixes - #3

Merged
phaus merged 1 commit into
mainfrom
feature/pxe-tftp-oack
Aug 5, 2026
Merged

feat(pxe): TFTP option negotiation and PXE boot fixes#3
phaus merged 1 commit into
mainfrom
feature/pxe-tftp-oack

Conversation

@phaus

@phaus phaus commented Aug 5, 2026

Copy link
Copy Markdown
Member

Implement RFC 2347 TFTP option negotiation (OACK) with support for blksize and tsize. This fixes UEFI PXE clients (e.g. Fujitsu Esprimo) that request blksize=1468 and refuse DATA without a preceding OACK.

Also:

  • Bind TFTP transfer sockets to the interface IPv4 address instead of 0.0.0.0 to ensure replies originate from the expected server IP.
  • Force IPv4-only UDP sockets (udp4) for the TFTP control socket.
  • Add sanitizeTFTPName to strip trailing junk bytes from RRQ filenames.
  • Add prominent DHCP MAC logging line for easier client identification.
  • Update router-extras.toml with VLAN address, reservations and per-MAC PXE boot files for T410i, Fujitsu and the Lenovo test machine.

Validated on BPI-R1 with ThinkPad T410i (legacy) and Fujitsu Esprimo (UEFI) PXE booting into the netboot.xyz menu.

Implement RFC 2347 TFTP option negotiation (OACK) with support for
blksize and tsize. This fixes UEFI PXE clients (e.g. Fujitsu Esprimo)
that request blksize=1468 and refuse DATA without a preceding OACK.

Also:
- Bind TFTP transfer sockets to the interface IPv4 address instead of
  0.0.0.0 to ensure replies originate from the expected server IP.
- Force IPv4-only UDP sockets (udp4) for the TFTP control socket.
- Add sanitizeTFTPName to strip trailing junk bytes from RRQ filenames.
- Add prominent DHCP MAC logging line for easier client identification.
- Update router-extras.toml with VLAN address, reservations and per-MAC
  PXE boot files for T410i, Fujitsu and the Lenovo test machine.

Validated on BPI-R1 with ThinkPad T410i (legacy) and Fujitsu Esprimo
(UEFI) PXE booting into the netboot.xyz menu.
@phaus
phaus merged commit 5f263f0 into main Aug 5, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant