gdjacobs wrote:What about implementing a form of DHCP proxy? I suspect you could leverage off the shelf BSD or ISC licensed software to do it on the host OS.
Or I could be doing something more simple: a simple DHCP relay agent(As it's called here).
That DHCP relay agent is pretty much what my SLIP server does as well(except it passes through all IPv4 packets to the modem that's configured).
Although the multiple DHCP offers filter could be made more simply: only take one offer from a DHCP server(matching transaction ID etc.), then blocking all other offers from being sent to the client. That way, it can simply keep track of the entire transaction without much memory allocation and multiple(who knows how many) buffers for DHCP offers, as well as making tracking it easier? So after sending a discover(saving it), take the first offer(saving it), then the request(saving it) and final ack(saving it, then loading the IP filter settings from those 4 packets). Of course the DHCP release restores the default(static) IP address back in place(simple catch-all for the host PC). The non-DHCP way currently still assigns the same IP as the host(using a text transaction before starting SLIP-mode(Windows 95) using the login script on the repository, or manually configured(with Arachne)).
Edit: Of course I'll also need to figure out the checksums, which aren't implemented in the SLIP server yet.