[haiku-development] Re: GSoc - IPv6 implementation for Haiku OS

  • From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Wed, 07 Apr 2010 10:47:50 +0200

Hi Atis,

Atis Elsts <the.kfx@xxxxxxxxx> wrote:
> > Basically, you should try to be able to test what you do as early 
> > as
> > possible. IOW you should add stuff in the order it is needed for 
> > IPv6
> > to work. The hardest part of IPv6 is probably IPsec, anyway.
> The thing with IPSec is that it's mandatory for IPv6 but not that 
> much
> used... even for IPv4. At least it has not become the "one and only"
> In any case, implementing IPSec seems much too complicated to be
> seriously even considered at this stage. At least the Linux IPSec
> kernel implementation (the "xfrm" thingies) looks simply terrifying 
> ;)

Linux implementations often look terrifying - they do seem to have 
talent for that :-)
I wouldn't rule out IPSec, though, even if its use might be marginal. 
At least I would make it part of your application - if the time doesn't 
suffice to implement it, so be it, but if it does, great.

> What IPv6 support Haiku already has and what is required:
> Utility programs:
> -----------------------
> Existing IPv6 support (can be enabled by recompiling):
> - ftp, ftpd
> - tcpdump
> - telnet, telnetd
> - wget
> Needed IPv6 support:
> - ifconfig
> - route
> - netcat (perhaps could just integrate newer version of netcat from
> that has ipv6 support, if such thing exists?)
> - netstat
> - ping (ping6?)
> - dhcp client
> (?) - ppp (but looks like there is no ipv4 specific code, at least
> grepping "AF_INET" fails)

Our ppp stuff has been written against an older incarnation of the 
stack (I rewrote it since then), and needs to be ported before taking 
it into account. Since one usually have a router inbetween nowadays, 
this isn't really high priority right now.
You may want to add the Network preferences application to that list.

> Libraries:
> -----------------------
> Existing IPv6 support:
> - libbind - getnameinfo(), getaddrinfo(), inet_ntop(), inet_pton() 
> functions
> - struct sockaddr_in6 and other stuff in headers/posix/netinet6/in6.h
> - struct ip6_hdr and stuff (should be moved from
> src/libs/compat/freebsd_network/compat/netinet/ip6.h to somewhere
> else?)

Probably; since those aren't POSIX headers, I left them out originally, 
but all the quasi standard headers have been added back in the mean 
time, and this one should not be an exception.

> Needed IPv6 support:
> - ?

Since we don't really have any high-level network APIs yet, I don't 
think there is anything else to do.

> Kernel:
> -----------------------
> Existing IPv6 support:
> - routing table is totally address family independent
> - multicast code is nicely parametrized by address families, so adding
> IPv6 there shouldn't be hard
> Needed IPv6 support:
> - addressing
> - routing (?)
> - ICMPv6
> - UDP, TCP over IPv6
> - IPv6 specific socket option getting and setting, for example,
> IPV6_TCLASS option
> - "struct IPv6Multicast", similar to existing "struct IPv4Multicast",
> should be defined and used. Note that the multicast code is already
> templatized by address types.

And of course the IPv6 protocol module that actually adds the IPv6 
header (and contains the address module, just like for IPv4) :-)


Other related posts: