I was able to fix this problem by changing the code in dhcp_prot.c which sends the request packet. The existing code builds the request packet by copying the offer packer from the server and then changing a couple of fields. By examing how lw-ip and Windows XP systems drive a DHCP transaction I thought that it would be better to create the request packet from scratch in a manner very similar to the discover packet. This worked well and DHCP is now working perfectly for me. I now know more about DHCP than I wanted to know when I started this exercise. If anyone wants more details of my solution then please email me (Or post to this topic).
Mike