Porting to Solaris IPv6

Solaris 2 uses 4.3 BSD socket structures, so when porting KAME apps (written for 4.4 BSD sockets, with sa_len in struct sockaddr), KAME have used __linux__ to determine if sa_len is there.

This is a bad aproach ... RFC 2553 mandates that SIN6_LEN be defined in netinet/in.h if sa_len is in struct sockaddr, so the KAME code mostly requires the following changes :

#ifdef __linux__
#ifndef SIN6_LEN
Aditionally, Linux appears to have a function in libc, __libc_sa_len() which returns the value that sa_len would be, if it was there. This doesn't exist under Solaris 7 + 107788-01, I'm working out an appropriate macro to do this for me in my port of the KAME apache 1.3.6 + IPv6 to Solaris.

The bug in getaddrinfo() in Sun patch 107788-01 for Solaris 7 has been fixed in Solaris 8. getaddrinfo() now works properly with services and ports not listed in /etc/services.

BIND 9.0.0b1 has a bug with interfaces. If you try and run it on a solaris 8early access server, with IPv6 interfaces that don't have IPv4 addresses as well (eg le1:1 with just an IPv6 address) BIND 9 will refuse to load. I've submitted a bug report to ISC, and the workaround is to plumb an interface in IPv4, then the IPv6 interface works.

$Id: IPv6-porting.html,v 1.2 2000/02/07 05:03:02 carl Exp $