RPC IPv6 breaks binary compatibility
Thorsten Kukuk
kukuk@suse.de
Wed Jan 26 00:59:00 GMT 2000
Hi,
On Wed, Jan 26, Ulrich Drepper wrote:
> Thorsten Kukuk <kukuk@suse.de> writes:
>
> > Why should RPC authentication not work in a IPv6 environment ?
> > This has nothing to do with IPv4.
>
> The structures are different. A program expecting the IPv4 versions
> of the sockaddr element wil have problems with an IPv6 connectio.
No. Because a program using IPv4 doesn't call the IPv6 functions.
There is nothing to discuss:
Current programs, compiled against glibc 2.1.x and using RPC authentication,
are broken if they run with glibc 2.2 cvs. glibc uses the new struct,
the user program the old struct. This is binary incompatible. The change
to the struct is wrong. Only because we have new functions for IPv6, we
cannot break the old IPv4 functions.
I only see 2 solutions:
- Let the struct sockaddr_in, and if sa_family is != AF_INET use
struct sockaddr_storage, which will be append to the struct. This
should work with the current and new interface.
- We use symbol versioning and add a new version for the RPC functions.
In this case we should also fix the broken use of "long", which should
be uint32_t.
Thorsten
--
Thorsten Kukuk http://www.suse.de/~kukuk/ kukuk@suse.de
SuSE GmbH Schanzaeckerstr. 10 90443 Nuernberg
Linux is like a Vorlon. It is incredibly powerful, gives terse,
cryptic answers and has a lot of things going on in the background.
More information about the Libc-alpha
mailing list