Subject: Re: RPC and ipv6
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Frank van der Linden <frank@wins.uva.nl>
List: tech-net
Date: 12/08/1999 11:36:20
On Tue, Dec 07, 1999 at 07:02:25PM -0800, Jason Thorpe wrote:
>  > >	b) Only use struct sockaddr_storage inside SVCXPRT (and use
>  > >	   versioning there too), but do not change the sockaddr_in *
>  > >	   paramemeters. Rely on the application to check for address
>  > >	   family and do the right thing.
> 
> Actually, I think this one is better.  We should follow the Sun example,
> considering how Sun RPC is really their thing...

The problem is that I can't find any documented statements/APIs/procedures
for this. I've found one reference in a Sun whitepaper saying that
"Applications using RPC will work as-is if they use the new shared library".
That would indicate that there's no interface change.

That's easier for Sun to say, since they've moved to TI-RPC, and consider
the explicit {clnt,svc}{udp,tcp}_* calls to be obsolete. The clnt calls
can be converted without interface change, since a socket address structure
is passed in. However, the server side versions just get a socket as a
parameter, and if that socket is RPC_ANYSOCK, you don't have enough
information to know what to do. Create both v6 and v4 sockets to listen to?

I've found one reference talking about creating an extended svc*
interface, for example, svcudp_create2(), with more parameters.
Unfortunately, they weren't actually specified.. If someone has
more info on this, I'd love to hear it.

Lastly, there's the issue of the default protocol to use, for RPC-using
programs. Should v6 be preferred? Solaris has /etc/netconfig, where
the order of the entries determines the preference, but we don't.

- Frank