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 :

change
#ifdef __linux__
to
#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.