Date: Sat, 28 May 2005 03:30:02 +0900 From: Hajimu UMEMOTO <ume@FreeBSD.org> To: Warner Losh <imp@bsdimp.com>, nectar@FreeBSD.org, des@FreeBSD.org Cc: standards@FreeBSD.org, current@FreeBSD.org, freebsd-arch@FreeBSD.org Subject: Re: [CFR] correct type of addrinfo.ai_addrlen and netent.n_net Message-ID: <yge3bs8ttcl.wl%ume@mahoroba.org> In-Reply-To: <20050509.104234.71141880.imp@bsdimp.com> References: <ygemzrcgnej.wl%ume@mahoroba.org> <200505041529.36826.peter@wemm.org> <ygell6ojsef.wl%ume@mahoroba.org> <20050509.104234.71141880.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Multipart_Sat_May_28_03:30:02_2005-1
Content-Type: text/plain; charset=US-ASCII
Hi,
>>>>> On Mon, 09 May 2005 10:42:34 -0600 (MDT)
>>>>> Warner Losh <imp@bsdimp.com> said:
> Are you suggest when to remove padding? Since the major of libc was
> bumped already in 6-CURRENT, it may better to wait 7-CURRENT.
imp> We've generally not worried compatibility in the 'rough and tumble'
imp> world of FreeBSD current. So unless there's a problem in the upgrade
imp> path, I think that we safely omit them.
I'll commit the attached change to nuke padding. It will break ABI
compatibility on 64 bit arch. So, I'm planning bumping major of
affected shlibs. Please review it.
Sincerely,
--Multipart_Sat_May_28_03:30:02_2005-1
Content-Type: text/x-patch; charset=US-ASCII
Content-Disposition: attachment; filename="netdb.h-padding-nuke.diff"
Content-Transfer-Encoding: 7bit
Index: include/netdb.h
diff -u include/netdb.h.orig include/netdb.h
--- include/netdb.h.orig Sat May 28 01:20:40 2005
+++ include/netdb.h Sat May 28 01:31:52 2005
@@ -63,8 +63,6 @@
#include <sys/cdefs.h>
#include <sys/_types.h>
-#include <machine/_limits.h>
-#include <machine/endian.h>
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
@@ -105,28 +103,11 @@
#define h_addr h_addr_list[0] /* address, for backward compatibility */
};
-/*
- * Note: n_net used to be an unsigned long integer.
- * In XNS5, and subsequently in POSIX-2001 it was changed to an
- * uint32_t.
- * To accomodate for this while preserving binary compatibility with
- * the old interface, we prepend or append 32 bits of padding,
- * depending on the (LP64) architecture's endianness.
- *
- * This should be deleted the next time the libc major number is
- * incremented.
- */
struct netent {
char *n_name; /* official name of net */
char **n_aliases; /* alias list */
int n_addrtype; /* net address type */
-#if __LONG_BIT == 64 && _BYTE_ORDER == _BIG_ENDIAN
- uint32_t __n_pad0; /* ABI compatibility */
-#endif
uint32_t n_net; /* network # */
-#if __LONG_BIT == 64 && _BYTE_ORDER == _LITTLE_ENDIAN
- uint32_t __n_pad0; /* ABI compatibility */
-#endif
};
struct servent {
@@ -142,29 +123,12 @@
int p_proto; /* protocol # */
};
-/*
- * Note: ai_addrlen used to be a size_t, per RFC 2553.
- * In XNS5.2, and subsequently in POSIX-2001 and RFC 3493 it was
- * changed to a socklen_t.
- * To accomodate for this while preserving binary compatibility with the
- * old interface, we prepend or append 32 bits of padding, depending on
- * the (LP64) architecture's endianness.
- *
- * This should be deleted the next time the libc major number is
- * incremented.
- */
struct addrinfo {
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
int ai_family; /* PF_xxx */
int ai_socktype; /* SOCK_xxx */
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-#if __LONG_BIT == 64 && _BYTE_ORDER == _BIG_ENDIAN
- uint32_t __ai_pad0; /* ABI compatibility */
-#endif
socklen_t ai_addrlen; /* length of ai_addr */
-#if __LONG_BIT == 64 && _BYTE_ORDER == _LITTLE_ENDIAN
- uint32_t __ai_pad0; /* ABI compatibility */
-#endif
char *ai_canonname; /* canonical name for hostname */
struct sockaddr *ai_addr; /* binary address */
struct addrinfo *ai_next; /* next structure in linked list */
@@ -262,11 +226,7 @@
struct hostent *gethostent(void);
struct hostent *getipnodebyaddr(const void *, size_t, int, int *);
struct hostent *getipnodebyname(const char *, int, int, int *);
-#if __LONG_BIT == 64
-struct netent *getnetbyaddr(unsigned long, int); /* ABI compatibility */
-#else
struct netent *getnetbyaddr(uint32_t, int);
-#endif
struct netent *getnetbyname(const char *);
struct netent *getnetent(void);
int getnetgrent(char **, char **, char **);
Index: kerberos5/lib/Makefile.inc
diff -u kerberos5/lib/Makefile.inc.orig kerberos5/lib/Makefile.inc
--- kerberos5/lib/Makefile.inc.orig Sat Oct 25 18:24:54 2003
+++ kerberos5/lib/Makefile.inc Sat May 28 01:49:00 2005
@@ -1,5 +1,5 @@
# $FreeBSD: src/kerberos5/lib/Makefile.inc,v 1.6 2003/10/09 19:48:45 nectar Exp $
-SHLIB_MAJOR?= 7
+SHLIB_MAJOR?= 8
.include "../Makefile.inc"
Index: lib/libbsnmp/Makefile.inc
diff -u lib/libbsnmp/Makefile.inc.orig lib/libbsnmp/Makefile.inc
--- lib/libbsnmp/Makefile.inc.orig Mon Oct 25 00:32:30 2004
+++ lib/libbsnmp/Makefile.inc Sat May 28 01:39:39 2005
@@ -1,6 +1,6 @@
# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.5 2004/10/24 15:32:30 ru Exp $
-SHLIB_MAJOR= 2
+SHLIB_MAJOR= 3
WARNS?= 6
NO_WERROR=
INCSDIR= ${INCLUDEDIR}/bsnmp
Index: lib/libc/net/getaddrinfo.c
diff -u -p lib/libc/net/getaddrinfo.c.orig lib/libc/net/getaddrinfo.c
--- lib/libc/net/getaddrinfo.c.orig Sat May 28 01:38:16 2005
+++ lib/libc/net/getaddrinfo.c Sat May 28 01:33:09 2005
@@ -1352,9 +1352,6 @@ get_ai(pai, afd, addr)
memset(ai->ai_addr, 0, (size_t)afd->a_socklen);
ai->ai_addr->sa_len = afd->a_socklen;
ai->ai_addrlen = afd->a_socklen;
-#if __LONG_BIT == 64
- ai->__ai_pad0 = 0; /* ABI compatibility */
-#endif
ai->ai_addr->sa_family = ai->ai_family = afd->a_af;
p = (char *)(void *)(ai->ai_addr);
#ifdef FAITH
Index: lib/libc/net/getnetbydns.c
diff -u -p lib/libc/net/getnetbydns.c.orig lib/libc/net/getnetbydns.c
--- lib/libc/net/getnetbydns.c.orig Sat May 28 01:24:33 2005
+++ lib/libc/net/getnetbydns.c Sat May 28 01:36:52 2005
@@ -259,9 +259,6 @@ getnetanswer(querybuf *answer, int ansle
break;
}
ne->n_aliases++;
-#if __LONG_BIT == 64
- ne->__n_pad0 = 0; /* ABI compatibility */
-#endif
return 0;
}
h_errno = TRY_AGAIN;
@@ -334,9 +331,6 @@ _dns_getnetbyaddr(void *rval, void *cb_d
while ((net & 0xff) == 0 && net != 0)
net >>= 8;
ne->n_net = net;
-#if __LONG_BIT == 64
- ne->__n_pad0 = 0; /* ABI compatibility */
-#endif
return NS_SUCCESS;
}
return NS_NOTFOUND;
Index: lib/libc/net/getnetbyht.c
diff -u -p lib/libc/net/getnetbyht.c.orig lib/libc/net/getnetbyht.c
--- lib/libc/net/getnetbyht.c.orig Sat May 28 01:24:33 2005
+++ lib/libc/net/getnetbyht.c Sat May 28 01:37:13 2005
@@ -122,9 +122,6 @@ again:
if (p != NULL)
*p++ = '\0';
ne->n_net = inet_network(cp);
-#if __LONG_BIT == 64
- ne->__n_pad0 = 0; /* ABI compatibility */
-#endif
ne->n_addrtype = AF_INET;
q = ne->n_aliases = ned->net_aliases;
if (p != NULL) {
Index: lib/libc/net/getnetbynis.c
diff -u -p lib/libc/net/getnetbynis.c.orig lib/libc/net/getnetbynis.c
--- lib/libc/net/getnetbynis.c.orig Sat May 28 01:24:33 2005
+++ lib/libc/net/getnetbynis.c Sat May 28 01:37:35 2005
@@ -99,9 +99,6 @@ _getnetbynis(const char *name, char *map
cp++;
ne->n_net = inet_network(cp);
-#if __LONG_BIT == 64
- ne->__n_pad0 = 0; /* ABI compatibility */
-#endif
ne->n_addrtype = AF_INET;
q = ne->n_aliases = ned->net_aliases;
Index: lib/libc/net/getnetnamadr.c
diff -u -p lib/libc/net/getnetnamadr.c.orig lib/libc/net/getnetnamadr.c
--- lib/libc/net/getnetnamadr.c.orig Sat May 28 01:35:00 2005
+++ lib/libc/net/getnetnamadr.c Sat May 28 01:35:32 2005
@@ -165,17 +165,13 @@ getnetbyname(const char *name)
}
struct netent *
-#if __LONG_BIT == 64
-getnetbyaddr(u_long addr, int af) /* ABI compatibility */
-#else
getnetbyaddr(uint32_t addr, int af)
-#endif
{
struct netdata *nd;
if ((nd = __netdata_init()) == NULL)
return NULL;
- if (getnetbyaddr_r((uint32_t)addr, af, &nd->net, &nd->data) != 0)
+ if (getnetbyaddr_r(addr, af, &nd->net, &nd->data) != 0)
return NULL;
return &nd->net;
}
Index: lib/libfetch/Makefile
diff -u lib/libfetch/Makefile.orig lib/libfetch/Makefile
--- lib/libfetch/Makefile.orig Thu Jan 27 16:57:04 2005
+++ lib/libfetch/Makefile Sat May 28 01:41:14 2005
@@ -18,7 +18,7 @@
CSTD?= c99
WARNS?= 2
-SHLIB_MAJOR= 3
+SHLIB_MAJOR= 4
ftperr.h: ftp.errors
@echo "static struct fetcherr _ftp_errlist[] = {" > ${.TARGET}
Index: lib/libftpio/Makefile
diff -u lib/libftpio/Makefile.orig lib/libftpio/Makefile
--- lib/libftpio/Makefile.orig Sat Oct 25 18:25:46 2003
+++ lib/libftpio/Makefile Sat May 28 01:42:31 2005
@@ -1,7 +1,7 @@
# $FreeBSD: src/lib/libftpio/Makefile,v 1.13 2002/09/28 00:25:29 peter Exp $
LIB= ftpio
-SHLIB_MAJOR= 5
+SHLIB_MAJOR= 6
SRCS= ftpio.c ftperr.c
INCS= ftpio.h
Index: lib/libipsec/Makefile
diff -u lib/libipsec/Makefile.orig lib/libipsec/Makefile
--- lib/libipsec/Makefile.orig Thu Jan 27 16:57:05 2005
+++ lib/libipsec/Makefile Sat May 28 01:42:52 2005
@@ -29,7 +29,7 @@
LIB= ipsec
SHLIBDIR?= /lib
-SHLIB_MAJOR= 1
+SHLIB_MAJOR= 2
CFLAGS+=-I. -I${.CURDIR}
CFLAGS+=-DIPSEC_DEBUG -DIPSEC
.if !defined(NO_INET6)
Index: lib/libpam/Makefile.inc
diff -u lib/libpam/Makefile.inc.orig lib/libpam/Makefile.inc
--- lib/libpam/Makefile.inc.orig Sat May 28 01:45:39 2005
+++ lib/libpam/Makefile.inc Sat May 28 01:45:57 2005
@@ -28,4 +28,4 @@
DEBUG_FLAGS+= -DDEBUG
.endif
-SHLIB_MAJOR= 2
+SHLIB_MAJOR= 3
Index: lib/libpcap/Makefile
diff -u lib/libpcap/Makefile.orig lib/libpcap/Makefile
--- lib/libpcap/Makefile.orig Thu Jan 27 16:57:08 2005
+++ lib/libpcap/Makefile Sat May 28 01:43:25 2005
@@ -19,7 +19,7 @@
CFLAGS+=-DINET6
.endif
-SHLIB_MAJOR=3
+SHLIB_MAJOR=4
#
# Magic to grab sources out of src/contrib
Index: lib/libutil/Makefile
diff -u lib/libutil/Makefile.orig lib/libutil/Makefile
--- lib/libutil/Makefile.orig Thu Jan 27 16:57:16 2005
+++ lib/libutil/Makefile Sat May 28 01:44:45 2005
@@ -2,7 +2,7 @@
# $FreeBSD: src/lib/libutil/Makefile,v 1.56 2004/05/24 22:19:27 pjd Exp $
LIB= util
-SHLIB_MAJOR= 4
+SHLIB_MAJOR= 5
SHLIBDIR?= /lib
CFLAGS+=-DLIBC_SCCS -I${.CURDIR} -I${.CURDIR}/../libc/gen/
CFLAGS+=-DINET6
Index: lib/libwrap/Makefile
diff -u lib/libwrap/Makefile.orig lib/libwrap/Makefile
--- lib/libwrap/Makefile.orig Thu Jan 27 16:57:16 2005
+++ lib/libwrap/Makefile Sat May 28 01:45:00 2005
@@ -3,7 +3,7 @@
#
LIB= wrap
-SHLIB_MAJOR= 3
+SHLIB_MAJOR= 4
INCS= tcpd.h
MAN= hosts_access.3
MAN+= hosts_access.5 hosts_options.5
Index: secure/lib/libssh/Makefile
diff -u secure/lib/libssh/Makefile.orig secure/lib/libssh/Makefile
--- secure/lib/libssh/Makefile.orig Sat May 28 01:47:38 2005
+++ secure/lib/libssh/Makefile Sat May 28 01:47:52 2005
@@ -1,6 +1,8 @@
# $FreeBSD: src/secure/lib/libssh/Makefile,v 1.31 2004/12/21 09:33:45 ru Exp $
LIB= ssh
+SHLIB_MAJOR= 3
+
SRCS= acss.c authfd.c authfile.c bufaux.c buffer.c \
canohost.c channels.c cipher.c cipher-acss.c cipher-aes.c \
cipher-bf1.c cipher-ctr.c cipher-3des1.c cleanup.c \
--Multipart_Sat_May_28_03:30:02_2005-1
Content-Type: text/plain; charset=US-ASCII
--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
ume@mahoroba.org ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/
--Multipart_Sat_May_28_03:30:02_2005-1--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?yge3bs8ttcl.wl%ume>
