On Fri, 2013-06-07 at 13:28 +0100, Michael Brown wrote: > On 06/06/13 23:37, Alex Williamson wrote: > > When iPXE tries to boot in the above environment, it tries to load > > tftp://10.0.0.1/pxelinux.0 as the boot file. The next-server comes from > > server1's DHCP packet and filename comes from server2's. Clearly this > > is wrong. > > > > From what I can gather, this is a result of neither packet having a > > priority and the ordering of adding the settings from the DHCP packet > > before the ProxyDHCP packet. list_add_tail bites us. DHCP packets > > don't support reallocation, so I can't add an artificial priority to get > > them in the correct order. Registering the settings from the ProxyDHCP > > packet before the DHCP packet does work, but it's ugly and prone to > > being broken by changes to the list manipulation code in settings. > > Suggestions? > > You could work around it by adding an artifical priority to "net0". The > DHCP settings will show up as "net0.dhcp" while the ProxyDHCP settings > will show up as just "proxydhcp" (outside the scope of "net0"); setting > "net0/priority" will therefore affect "net0.dhcp" but not "proxydhcp". > This is an ugly hack and I wouldn't suggest using it, but it can be done.
We'd actually want to de-prioritize net0 though, which I'm not sure we can do since priority is a uint8_t. > As for a proper fix: it's difficult to reconcile the conflicting > requirements of the PXE spec (which conflicts with itself) and iPXE's > settings model (which incorporates multiple sources of settings not > envisioned by the PXE spec). The best solution I can think of off-hand > would be for fetch_next_server_and_filename() to ensure that both > next-server and filename come from the same settings block. > > This could be done by using fetch_setting_origin() to determine the > settings block containing the filename and then using that as the > settings block when fetching next-server. (As in your example, some > DHCP servers will provide a spurious next-server defaulting to the DHCP > server's own IP address; it therefore seems sensible to treat the > presence of a filename as indicating the intended presence of a > next-server+filename pair.) > > Thoughts? I like it. It seems like a good idea in general that next-server should come from the same settings block as filename. The PXE spec doesn't specify which to use if both dhcp and proxydhcp packets specify a filename, so I guess it's just an implementation detail that iPXE would use net0.dhcp in that case. Thanks, Alex _______________________________________________ ipxe-devel mailing list [email protected] https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

