//! Minimal TFTP server sufficient to deliver iPXE binaries (~1 MiB each) //! to firmware PXE ROMs. Only implements RRQ (read requests) because we //! never receive WRQs in our use case. //! //! Implements RFC 1350 base protocol plus: //! - RFC 2347 option negotiation (OACK) //! - RFC 2348 `blksize` (critical — default 512 makes transfers unusably slow) //! - RFC 2349 `tsize` (some PXE ROMs require it) //! - RFC 7440 `windowsize` (huge throughput improvement for supporting clients) //! //! Files served are backed by the embedded iPXE asset store; there is no //! filesystem path traversal surface because we only look up by asset name. #![forbid(unsafe_code)] pub mod server; pub use server::{DynamicAsset, TftpServer};