This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi! Changing type of xp_raddr field in SVCXPRT (rpc/svc.h) from sockaddr_in to sockaddr_storage breaks binary compatibility on 64bit hosts (sockaddr_storage is aligned to 64 bits while sockaddr_in to 32bits only, so there is 4 bytes padding before sockaddr_storage while it is not present for sockaddr_in). Any ideas what to do with it? Versioning almost the whole sunrpc/ does not seem like a good idea to me, so perhaps cannot we have (on 64bit arches only): int xp_addrlen; /* length of remote address */ struct sockaddr_in xp_raddr; /* remote address */ struct sockaddr_storage xp_rnaddr; /* new remote address */ struct opaque_auth xp_verf; /* raw response verifier */ caddr_t xp_p1; /* private */ caddr_t xp_p2; /* private */ int xp_p3; /* private */ char xp_pad [256]; /* padding, internal use */ where svc_getcaller would be: #define svc_getcaller(x) \ ({ SVCXPRT *__svcxprt = (SVCXPRT *)(x); \ __svcxprt->xp_p3 ? \ (void *)&__svcxprt->xp_rnaddr : \ (void *)&__svcxprt->xp_raddr; \ }) Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |