This is an old revision of the document!

Week 2 (May 30 to June 5)

Day 1 (May 30)

Breakthrough! Found the point where attempting to open an IPv6 connection was failing (debug line in core/open.c) and added an AF_INET6 socket opener to TCP. I'll probably have to do the same for UDP soon.

The kind of output I'm getting now is:

gPXE> imgfetch http://[f fc00::1]/test.bin
creating xfer
XFER 0xabc48 opening http URI
RESOLV 0xac614 opening named socket "fc00::1"
RESOLV 0xac664 attempting to resolve "fc00::1"
RESOLV 0xac664 trying method NUMERIC
NUMERIC 0xac6b4 attempting to resolve "fc00::1"
ipv6 converting fc00::1 to an in6_addr
RESOLV 0xac664 succeeded using method NUMERIC
XFER 0xac61c->0xabfbc redirect
XFER 0xabfbc->0xac61c close
XFER 0xac61c->0xabfbc close
XFER 0xabfbc opening (SOCK_STREAM,AF_INET6) socket
TCP 0xac704 allocated
TCP 0xac704 transitioned from CLOSED to SYN_SENT
TCP 0xac704 bound to port 64065
XFER 0xac61c->0x97d98 close
TCP 0xac704 timer fired in SYN_SENT for 3bf72bc6..3bf72bc6 00000000
TCP/IP sending IPv6 packet
ipv6: tx
IP6 0xad018 src fe80::5254:ff:fe12:3456 dest ::0 nxt_hdr 6 len 36
Neighbour cache miss: IP6 fc00::1
New neighbour cache entry: IP6 fc00::1 => Ethernet 00:00:00:00:00:00
TCP/IP sending IPv6 packet
ipv6: tx
IP6 0xb083c src fe80::5254:ff:fe12:3456 dest ::0 nxt_hdr 58 len 32
No entry for fc00::1

As per the schedule, this week I'll be implementing neighbour discovery protocol and some other ICMPv6 features, so it's highly likely I'll have (basic) HTTP booting working by the end of the week.

It's good to finally figure out how this part of gPXE works :).

Update, a few hours later… Packet Dumps now holds some packet dumps, and in particular now holds a valid HTTP response (albeit 404) from an IPv6 web server.

Now the real coding begins - so far it's just been a lot of patching the existing IPv6 implementation; now I will be implementing completely new code.

Update #2: had the weekly meeting and sorted through some coding style issues. Getting used to the new coding style has proved to be challenging :). I managed to get IPv6 routing working properly during/after the meeting but now remote hosts try and look up the MAC address of the gPXE host by sending Neighbour Solicit messages, which aren't handled yet. I'll work on that tomorrow - Guo-Fu gave some advice about how to make responding to Neighbour Solicit messages work.

Day 2 (May 31)

Modified the network → transport transition in the network stack to pass a net_device object alongside the packet buffer. This will let me access the local machine's link-layer address in the ICMPv6/NDP implementation.

I sorted out all the compile issues that came as a result of that and stubbed a few NDP functions ready for implementation.

Once NDP solicits are working I'll get the relevant commits out there with a request for comments, as they change some of the fundamental prototypes in the network stack. It'll be easier to see the purpose of the changes when the changes are actually being used.

QR Code
QR Code soc:2011:pcmattman:journal:week2 (generated for current page)