From 0f4d2c02f275ad9f80ccd7435ffb407a8be61e9a Mon Sep 17 00:00:00 2001 From: Tim Rice Date: Tue, 18 Nov 2008 21:26:41 -0800 Subject: [PATCH] - (tim) [addrmatch.c configure.ac] Some platforms do not have sin6_scope_id member of sockaddr_in6. Also reported in Bug 1491 by David Leonard. OK and feedback by djm@ --- ChangeLog | 7 ++++++- addrmatch.c | 2 ++ configure.ac | 13 +++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 235c0f2ef..80e9b439d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +20081118 + - (tim) [addrmatch.c configure.ac] Some platforms do not have sin6_scope_id + member of sockaddr_in6. Also reported in Bug 1491 by David Leonard. OK and + feedback by djm@ + 20081111 - (dtucker) OpenBSD CVS Sync - jmc@cvs.openbsd.org 2008/11/05 11:22:54 @@ -4921,5 +4926,5 @@ OpenServer 6 and add osr5bigcrypt support so when someone migrates passwords between UnixWare and OpenServer they will still work. OK dtucker@ -$Id: ChangeLog,v 1.5141 2008/11/19 00:54:24 djm Exp $ +$Id: ChangeLog,v 1.5142 2008/11/19 05:26:41 tim Exp $ diff --git a/addrmatch.c b/addrmatch.c index 2086afe84..f3c861a1f 100644 --- a/addrmatch.c +++ b/addrmatch.c @@ -97,7 +97,9 @@ addr_sa_to_xaddr(struct sockaddr *sa, socklen_t slen, struct xaddr *xa) return -1; xa->af = AF_INET6; memcpy(&xa->v6, &in6->sin6_addr, sizeof(xa->v6)); +#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID xa->scope_id = in6->sin6_scope_id; +#endif break; default: return -1; diff --git a/configure.ac b/configure.ac index fcf7e416b..3e0821bae 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -# $Id: configure.ac,v 1.409 2008/07/09 11:07:19 djm Exp $ +# $Id: configure.ac,v 1.410 2008/11/19 05:26:42 tim Exp $ # # Copyright (c) 1999-2004 Damien Miller # @@ -15,7 +15,7 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org) -AC_REVISION($Revision: 1.409 $) +AC_REVISION($Revision: 1.410 $) AC_CONFIG_SRCDIR([ssh.c]) AC_CONFIG_HEADER(config.h) @@ -2824,6 +2824,15 @@ AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [ if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [define if you have struct in6_addr data type]) + +dnl Now check for sin6_scope_id + AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,, + [ +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#include + ]) fi AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [