Hello. I'm looking forward to participating in Google Summer of Code 2010. I plan to submit a proposal related to "Implement IPv6 support for Haiku" project idea. I am new to Haiku OS, but I have significant familiarity with IPv6 as a programmer, as well as familiarity with Linux kernel networking code and networking concepts in general. I feel enthusiastic about the prospects of IPv6 protocol and think that it will soon become a really necessary part of every desktop operating system. At the moment I am studying the source code of Haiku OS and it's network stack. Opinions regarding to what aspects of Haiku OS should be learned first are welcome :) What follows is a rough draft of the list of the points that are required for IPv6 support (in my opinion). Please make your comments about this list and the scope of its tasks. --- Haiku IPv6 roadmap: The points in different categories are sorted to roughly correspond to the order of the implementation. This is not a ready proposal yet and I do not claim that all these points will make it to my GSoC proposal. * Addressing: - basic IPv6 static addressing support - neighbor discovery support (i.e. the equivalent of ARP for IPv6) - DAD (duplicate address detection) - dynamic link-local scoped addresses - host side address autoconfiguration * Routing - connected route support - default route support - static route support * API: - AF_INET6 family support for sockets This includes: [Vijayakumar] adding sockaddr_in6 structure writing support for IPv6 specific getsockopt and setsockopt calls adding getnameinfo(), getaddrinfo(), inet_pton() and inet_ntop() functions * Tools: - ifconfig utility - allow to work with IPv6 addresses - route utility - allow to work with IPv6 routes - ping - for testing IPv6 connectivity and ICMPv6 support - traceroute over IPv6 (UDP over IPv6 support required first) - telnet over IPv6 (TCP over IPv6 support required first) (later tasks:) - FTP over IPv6 and wget over IPv6 (TCP required first) * Protocols: - limited ICMPv6 support, as much is needed to make address neighbor discovery, DAD, autocofiguration, and ping to work. Message types that need to be supported: [ICMPv6] [AutoConf] [NeighDisc] - Echo Reply Message - Echo Request Message - Neighbor Solicitation Message (similar to ARP request for IPv4) - Neighbor Advertisement Message (similar to ARP response for IPv4) - Router Solicitation Message (Tx only) - Router Advertisement Message (Rx only) (not sure about whether there will be enough time for these:) - TCP support over IPv6 - UDP support over IPv6 The main information about IPv6 is taken from [IPv6] and [Hagen]. The list does not contain points like "DHCPv6 client" or "tunnelling support", that according to [von Gluck] can be supported without implementing them in Haiku OS itself. The lost also does not include support for RADVD (router side address autoconfiguration). I don't think it's needed at all, at least for the first releases of the OS, because Haiku OS is meant to be a host side OS, not a router, right? And it does not include support for multicast over IPv6 (MLD protocol) or PPP over IPv6 support. References: [IPv6] - RFC 2460 - Internet Protocol, Version 6 (IPv6) Specification [ICMPv6] - RFC 4443 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification [AutoConf] - RFC 4862 - IPv6 Stateless Address Autoconfiguration [NeighDisc] - RFC 4861 - Neighbor Discovery for IP version 6 (IPv6) [Hagen] - IPv6 Essentials by Silvia Hagen, http://oreilly.com/catalog/9780596001254 [Vijayakumar] - Google Summer of Code 2009 Haiku IPv6 proposal by Smita Vijayakumar, www.cse.ohio-state.edu/~vijayaks/GSoC/Haiku_Proposal.pdf [von Gluck] - Mail about possible IPv6 features in Haiku, //www.freelists.org/post/haiku/IPv6-protocol-stack-developement,1