This is an old revision of the document!
====== Week 8 (July 11 to July 17) ====== ==== Day 1 (July 11) ==== I began reworking the DHCPv6 code today to implement the necessary infrastructure for passing through the state machine. This will be quite similar to DHCPv4's state machine, with generic functions containing logic for transmission and receive that is the same across all states. As part of these changes, I removed a lot of old testing solicit code and re-implemented it into the new infrastructure. This has worked well, with the DHCPv6 server sending ADVERTISE packets in response to the SOLICIT packet. I just have to set the right options to request an address (an IA_{NA|TA} option, for example). At some point I will also need to modify the "settings" (gpxe/settings.h) code in gPXE to handle IPv6 addresses as well as IPv4 addresses. This will be useful for setting DNS nameservers and such, and I think I may also need to bring some of the settings changes into my stateless autoconfiguration code so that the IPv6 address of the network device is accessible. I am now on a part time contract, so I have a bit more time in the day to work on gPXE code. ==== Day 2 (July 12) ==== I spent a fair bit of time today reading the RFCs for DHCPv6, trying to wrap my head around temporary and non-temporary addresses, and the IA_TA/IA_NA options in DHCPv6. This understanding is critical to being able to implement these features in gPXE properly. I also implemented more of the SOLICIT state handling today. I can now send a request for an address, with the rapid commit option, and get an immediate reply from the DHCPv6 server. I managed to implement handling of this reply (generically, so there is no code duplication for a 4-way handshake transaction) but without the gpxe/settings.h changes I mentioned in yesterday's entry, I'm a bit stuck. So I'll be adding a few TODO comments in the code, and then continuing to implement the rest of the state machine. This way I can test each aspect of the DHCPv6 code and then sort out the settings changes later. At some point I also need to install the ISC dhcpd, so I can test my DHCPv6 code with more than one server. At the moment I'm using WIDE's DHCPv6 server, which should work fine for this initial implementation phase.