- Merged OpenBSD IPv6 patch:
- [sshd.c sshd.8 sshconnect.c ssh.h ssh.c servconf.h servconf.c scp.1]
[scp.c packet.h packet.c login.c log.c canohost.c channels.c]
[hostfile.c sshd_config]
ipv6 support: mostly gethostbyname->getaddrinfo/getnameinfo, new
features: sshd allows multiple ListenAddress and Port options. note
that libwrap is not IPv6-ready. (based on patches from
fujiwara@rcac.tdi.co.jp)
- [ssh.c canohost.c]
more hints (hints.ai_socktype=SOCK_STREAM) for getaddrinfo,
from itojun@
- [channels.c]
listen on _all_ interfaces for X11-Fwd (hints.ai_flags = AI_PASSIVE)
- [packet.h]
allow auth-kerberos for IPv4 only
- [scp.1 sshd.8 servconf.h scp.c]
document -4, -6, and 'ssh -L 2022/::1/22'
- [ssh.c]
'ssh @host' is illegal (null user name), from
karsten@gedankenpolizei.de
- [sshconnect.c]
better error message
- [sshd.c]
allow auth-kerberos for IPv4 only
- Big IPv6 merge:
- Cleanup overrun in sockaddr copying on RHL 6.1
- Replacements for getaddrinfo, getnameinfo, etc based on versions
from patch from KIKUCHI Takahiro <kick@kyoto.wide.ad.jp>
- Replacement for missing structures on systems that lack IPv6
- record_login needed to know about AF_INET6 addresses
- Borrowed more code from OpenBSD: rresvport_af and requisites
diff --git a/configure.in b/configure.in
index a665402..ab175d4 100644
--- a/configure.in
+++ b/configure.in
@@ -128,7 +128,7 @@
AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/time.h sys/ttcompat.h util.h utmp.h utmpx.h)
dnl Checks for library functions.
-AC_CHECK_FUNCS(arc4random getpagesize _getpty innetgr md5_crypt mkdtemp openpty setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf)
+AC_CHECK_FUNCS(arc4random bindresvport_af freeaddrinfo gai_strerror getaddrinfo getpagesize getnameinfo _getpty innetgr md5_crypt mkdtemp openpty rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf)
AC_CHECK_FUNC(login,
[AC_DEFINE(HAVE_LOGIN)],
@@ -169,7 +169,7 @@
[AC_MSG_RESULT(no)]
)
-AC_MSG_CHECKING([For uintXX_t types])
+AC_MSG_CHECKING([for uintXX_t types])
AC_TRY_COMPILE(
[#include <sys/types.h>],
[uint16_t c; uint32_t d; c = 1235; d = 1235;],
@@ -180,7 +180,7 @@
[AC_MSG_RESULT(no)]
)
-AC_MSG_CHECKING([For socklen_t])
+AC_MSG_CHECKING([for socklen_t])
AC_TRY_COMPILE(
[
#include <sys/types.h>
@@ -194,7 +194,7 @@
[AC_MSG_RESULT(no)]
)
-AC_MSG_CHECKING([For size_t])
+AC_MSG_CHECKING([for size_t])
AC_TRY_COMPILE(
[#include <sys/types.h>],
[size_t foo; foo = 1235;],
@@ -205,6 +205,53 @@
[AC_MSG_RESULT(no)]
)
+AC_MSG_CHECKING([for struct sockaddr_storage])
+AC_TRY_COMPILE(
+ [#include <sys/socket.h>],
+ [struct sockaddr_storage s;],
+ [
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for struct sockaddr_in6])
+AC_TRY_COMPILE(
+ [#include <netinet/in.h>],
+ [struct sockaddr_in6 s; s.sin6_family = 0;],
+ [
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for struct in6_addr])
+AC_TRY_COMPILE(
+ [#include <netinet/in.h>],
+ [struct in6_addr s; s.s6_addr[0] = 0;],
+ [
+ AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for struct addrinfo])
+AC_TRY_COMPILE(
+ [
+ #include <sys/socket.h>
+ #include <netdb.h>
+ ],
+ [struct addrinfo s; s.ai_flags = AI_PASSIVE;],
+ [
+ AC_DEFINE(HAVE_STRUCT_ADDRINFO)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
AC_ARG_WITH(pam,
[ --without-pam Disable PAM support ],
[
@@ -330,7 +377,38 @@
)
AC_MSG_CHECKING([whether utmpx.h has ut_addr field])
AC_EGREP_HEADER(ut_addr, utmpx.h,
- [AC_DEFINE(HAVE_ADDR_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_DEFINE(HAVE_ADDR_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_addr_v6 field])
+AC_EGREP_HEADER(ut_addr_v6, utmp.h,
+ [AC_DEFINE(HAVE_ADDR_V6_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmpx.h has ut_addr_v6 field])
+AC_EGREP_HEADER(ut_addr_v6, utmpx.h,
+ [AC_DEFINE(HAVE_ADDR_V6_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([whether struct sockaddr_storage has ss_family field])
+AC_TRY_COMPILE(
+ [#include <sys/socket.h>],
+ [struct sockaddr_storage s; s.ss_family = 1;],
+ [
+ AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether struct sockaddr_storage has __ss_family field])
+AC_TRY_COMPILE(
+ [#include <sys/socket.h>],
+ [struct sockaddr_storage s; s.__ss_family = 1;],
+ [
+ AC_DEFINE(HAVE___SS_FAMILY_IN_SS)
+ AC_MSG_RESULT(yes)
+ ],
[AC_MSG_RESULT(no)]
)