Ethereal-dev: Re: [Ethereal-dev] Doubts about IPv6 name resolution

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Heikki Vatiainen <hessu@xxxxxxxxx>
Date: 13 Jul 2001 11:46:15 +0300
Guy Harris <guy@xxxxxxxxxx> writes:

> Does Solaris 8 come with IPv6 support, or is it an add-on?

It comes with the IPv6 support. Here's some references:

http://www.sun.com/software/solaris/ipv6/faqs.html

  1. Is the IPv6 implementation in the Solaris 8 Operating Environment
  a prototype?

  No, Solaris 8 software has an integrated, dual IPv4 and IPv6
  stack. This is production quality and has been thoroughly tested.

  2. Is IPv6 "on" by default upon installation of the Solaris 8
  Operating Environment?

  No, it is "off" by default. You must enable it during the
  installation process.

http://docs.sun.com/ab2/coll.47.11/SYSADV3/%40Ab2PageView/
idmatch(SOLIMPTASKS-44)?Ab2Lang=C&Ab2Enc=iso-8859-1#SOLIMPTASKS-44

  How to Enable IPv6 on a Node
     1. Become superuser on the system where you want to enable IPv6.
     2. On a command line, type the following for each interface.
         # touch /etc/hostname6.interface
     3. Reboot.
        Note:  
        Rebooting sends out router discovery packets and the router
        responds with a prefix, enabling the node to configure the
        interfaces with an IP address. Rebooting also restarts key
        networking daemons in IPv6 mode.  4.
     4. On a command line, type the following command to display the
        IPv6 addresses.
         # ifconfig -a
     5. Add the IPv6 address to the appropriate name service as follows:
         1. For NIS and NIS+, see How to Add IPv6 Addresses to NIS and
            NIS+.
         2. For DNS, see How to Add IPv6 Addresses to DNS.

We currently have only two Solaris 8 boxes and IPv6 was turned on
during the installation, so I have not tried enabling IPv6 on after
the installation.
 
> If it's an add-on, you'd need to check not only for Solaris 8 (although
> you might want to check for SunOS 5.8 or later, rather than just SunOS
> 5.8), but also check whether it has the IPv6 support.

I was thinking about turning it on always since looks like the library
support is always there. That way ethereal binary would work on a IPv6
enabled Solaris 8 box even if it was compiled on a non-IPv6 enabled
box.

I did not think about checking later than 5.8 since gethostbyaddr()
for IPv6 might go away. At least the manual says that:

     The current implementations of these functions  only  return
     or  accept  addresses  for the Internet address family (type
     AF_INET).

Thinking a bit further, a Solaris 8 binary may even break with
e.g. Solaris 9 if this undocumented feature is removed from libnsl.

A better method might be using getipnodebyname() from RFC 2553 if name
resolution for Solaris 8 is desired, but one problem with that is
draft-ietf-ipngwg-rfc2553bis-03.txt says:

  Changes made to rfc2553bis-00 to rfc2553bis-01
     1.  Removed all references to getipnodebyname() and
         getipnodebyaddr().

However, since Sun says "uses it" it may be a good idea to use now and
not wait for something that's still a draft. Any folks with better
IPv6 knowledge care to comment?

> > Index: epan/resolv.c
> > ===================================================================
> > RCS file: /cvsroot/ethereal/epan/resolv.c,v
> > retrieving revision 1.11
> > diff -u -r1.11 resolv.c
> > --- resolv.c	2001/06/07 22:07:02	1.11
> > +++ resolv.c	2001/07/12 16:34:37
> > @@ -1055,7 +1055,11 @@
> >  #ifdef INET6
> >    if (!(prefs.name_resolve & PREFS_RESOLV_NETWORK))
> >      return ip6_to_str(addr);
> > +#ifdef SOLARIS8_INET6
> > +  if (IN6_IS_ADDR_LINKLOCAL((struct in6_addr*)addr) || IN6_IS_ADDR_MULTICAST((struct in6_addr*)addr))
> > +#else
> >    if (IN6_IS_ADDR_LINKLOCAL(addr) || IN6_IS_ADDR_MULTICAST(addr))
> > +#endif
> >      return ip6_to_str(addr);
> >  #endif
> 
> I.e., you have to cast it to "struct in6_addr *" to get it to work on
> Solaris 8?

Yes, that's all it needed.

-- 
Heikki Vatiainen                  * hessu@xxxxxxxxx
Tampere University of Technology  * Tampere, Finland