Skip to content

Commit 9df2c44

Browse files
committed
Fix IPv6 detection and IPv6 to 4 conversion to use only standard
interfaces.
1 parent 2e98da5 commit 9df2c44

File tree

3 files changed

+27
-27
lines changed

3 files changed

+27
-27
lines changed

configure

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10027,16 +10027,16 @@ fi
1002710027
echo "$as_me:$LINENO: result: $ac_cv_func_getaddrinfo" >&5
1002810028
echo "${ECHO_T}$ac_cv_func_getaddrinfo" >&6
1002910029
if test $ac_cv_func_getaddrinfo = yes; then
10030-
echo "$as_me:$LINENO: checking for struct sockaddr_in6.sin6_len" >&5
10031-
echo $ECHO_N "checking for struct sockaddr_in6.sin6_len... $ECHO_C" >&6
10032-
if test "${ac_cv_member_struct_sockaddr_in6_sin6_len+set}" = set; then
10030+
echo "$as_me:$LINENO: checking for struct sockaddr_in6" >&5
10031+
echo $ECHO_N "checking for struct sockaddr_in6... $ECHO_C" >&6
10032+
if test "${ac_cv_type_struct_sockaddr_in6+set}" = set; then
1003310033
echo $ECHO_N "(cached) $ECHO_C" >&6
1003410034
else
1003510035
cat >conftest.$ac_ext <<_ACEOF
1003610036
#line $LINENO "configure"
1003710037
#include "confdefs.h"
10038-
#include <sys/socket.h>
10039-
#include <netdb.h>
10038+
$ac_includes_default
10039+
#include <netinet/in.h>
1004010040
1004110041
#ifdef F77_DUMMY_MAIN
1004210042
# ifdef __cplusplus
@@ -10047,9 +10047,10 @@ else
1004710047
int
1004810048
main ()
1004910049
{
10050-
static struct sockaddr_in6 ac_aggr;
10051-
if (ac_aggr.sin6_len)
10052-
return 0;
10050+
if ((struct sockaddr_in6 *) 0)
10051+
return 0;
10052+
if (sizeof (struct sockaddr_in6))
10053+
return 0;
1005310054
;
1005410055
return 0;
1005510056
}
@@ -10066,23 +10067,18 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
1006610067
ac_status=$?
1006710068
echo "$as_me:$LINENO: \$? = $ac_status" >&5
1006810069
(exit $ac_status); }; }; then
10069-
ac_cv_member_struct_sockaddr_in6_sin6_len=yes
10070+
ac_cv_type_struct_sockaddr_in6=yes
1007010071
else
1007110072
echo "$as_me: failed program was:" >&5
1007210073
cat conftest.$ac_ext >&5
10073-
ac_cv_member_struct_sockaddr_in6_sin6_len=no
10074+
ac_cv_type_struct_sockaddr_in6=no
1007410075
fi
1007510076
rm -f conftest.$ac_objext conftest.$ac_ext
1007610077
fi
10077-
echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_in6_sin6_len" >&5
10078-
echo "${ECHO_T}$ac_cv_member_struct_sockaddr_in6_sin6_len" >&6
10079-
if test $ac_cv_member_struct_sockaddr_in6_sin6_len = yes; then
10080-
10081-
cat >>confdefs.h <<_ACEOF
10082-
#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 1
10083-
_ACEOF
10084-
10085-
HAVE_IPV6="yes"; cat >>confdefs.h <<\_ACEOF
10078+
echo "$as_me:$LINENO: result: $ac_cv_type_struct_sockaddr_in6" >&5
10079+
echo "${ECHO_T}$ac_cv_type_struct_sockaddr_in6" >&6
10080+
if test $ac_cv_type_struct_sockaddr_in6 = yes; then
10081+
HAVE_IPV6="yes"; cat >>confdefs.h <<\_ACEOF
1008610082
#define HAVE_IPV6 1
1008710083
_ACEOF
1008810084

configure.in

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
dnl Process this file with autoconf to produce a configure script.
2-
dnl $Header: /cvsroot/pgsql/configure.in,v 1.230 2003/01/07 06:43:20 momjian Exp $
2+
dnl $Header: /cvsroot/pgsql/configure.in,v 1.231 2003/01/09 14:34:53 petere Exp $
33
dnl
44
dnl Developers, please strive to achieve this order:
55
dnl
@@ -788,11 +788,11 @@ AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
788788

789789
# This exports HAVE_IPV6 to both C files and Makefiles
790790
AC_CHECK_FUNC(getaddrinfo,
791-
[AC_CHECK_MEMBERS(struct sockaddr_in6.sin6_len,
792-
[HAVE_IPV6="yes"; AC_DEFINE(HAVE_IPV6, 1, [])], [],
793-
[#include <sys/socket.h>
794-
#include <netdb.h>])],
795-
[])
791+
[AC_CHECK_TYPE(struct sockaddr_in6,
792+
[HAVE_IPV6="yes"; AC_DEFINE(HAVE_IPV6, 1)],
793+
[],
794+
[$ac_includes_default
795+
#include <netinet/in.h>])])
796796
AC_SUBST(HAVE_IPV6)
797797

798798
AC_CACHE_CHECK([for PS_STRINGS], [pgac_cv_var_PS_STRINGS],

src/backend/libpq/ip.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/libpq/ip.c,v 1.1 2003/01/06 03:18:26 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/libpq/ip.c,v 1.2 2003/01/09 14:35:03 petere Exp $
1212
*
1313
* This file and the IPV6 implementation were initially provided by
1414
* Nigel Kukard <nkukard@lbsd.net>, Linux Based Systems Design
@@ -365,7 +365,11 @@ convSockAddr6to4(const SockAddr *src, SockAddr *dst)
365365
dst->in.sin_family = AF_INET;
366366
dst->in.sin_port = src->in6.sin6_port;
367367

368-
dst->in.sin_addr.s_addr = src->in6.sin6_addr.s6_addr32[3];
368+
dst->in.sin_addr.s_addr =
369+
(src->in6.sin6_addr.s6_addr[15])
370+
+ (src->in6.sin6_addr.s6_addr[14] << 8)
371+
+ (src->in6.sin6_addr.s6_addr[13] << 16)
372+
+ (src->in6.sin6_addr.s6_addr[12] << 24);
369373
SockAddr_ntop(src, addr_str, INET6_ADDRSTRLEN, 0);
370374
}
371375
#endif

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy