--- configure.in.orig	Thu Jan 17 08:36:05 2002
+++ configure.in	Wed Jan  8 18:24:51 2003
@@ -30,8 +30,140 @@
 fi
 
 AC_PROG_CC
+AC_PROG_CPP
 AC_ISC_POSIX
 
+AC_MSG_CHECKING([whether to enable ipv6])
+AC_ARG_ENABLE(ipv6,
+[  --enable-ipv6		Enable ipv6 (with ipv4) support
+  --disable-ipv6		Disable ipv6 support],
+[ case "$enableval" in
+  no)
+       AC_MSG_RESULT(no)
+       ipv6=no
+       ;;
+  *)   AC_MSG_RESULT(yes)
+       AC_DEFINE(ENABLE_IPV6)
+       ipv6=yes
+       ;;
+  esac ],
+
+  AC_TRY_RUN([ /* AF_INET6 avalable check */
+#include <sys/types.h>
+#include <sys/socket.h>
+main()
+{
+ if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
+   exit(1);
+ else
+   exit(0);
+}
+],
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(ENABLE_IPV6)
+  ipv6=yes,
+  AC_MSG_RESULT(no)
+  ipv6=no,
+  AC_MSG_RESULT(no)
+  ipv6=no
+))
+
+ipv6type=unknown
+ipv6lib=none
+
+if test "$ipv6" = "yes"; then
+	AC_MSG_CHECKING([ipv6 stack type])
+	for i in inria kame linux toshiba v6d zeta; do
+		case $i in
+		inria)
+			dnl http://www.kame.net/
+			AC_EGREP_CPP(yes, [dnl
+#include <netinet/in.h>
+#ifdef IPV6_INRIA_VERSION
+yes
+#endif],
+				[ipv6type=$i;
+				CPPFLAGS="-DINET6 $CPPFLAGS"])
+			;;
+		kame)
+			dnl http://www.kame.net/
+			AC_EGREP_CPP(yes, [dnl
+#include <netinet/in.h>
+#ifdef __KAME__
+yes
+#endif],
+				[ipv6type=$i;
+				CPPFLAGS="-DINET6 $CPPFLAGS"])
+			;;
+		linux)
+			dnl http://www.v6.linux.or.jp/
+			if test -d /usr/inet6; then
+				ipv6type=$i
+				ipv6lib=inet6
+				ipv6libdir=/usr/inet6/lib
+				CPPFLAGS="-DINET6 -I/usr/inet6/include $CPPFLAGS"
+			fi
+			;;
+		toshiba)
+			AC_EGREP_CPP(yes, [dnl
+#include <sys/param.h>
+#ifdef _TOSHIBA_INET6
+yes
+#endif],
+				[ipv6type=$i;
+				ipv6lib=inet6;
+				ipv6libdir=/usr/local/v6/lib;
+				CPPFLAGS="-DINET6 $CPPFLAGS"])
+			;;
+		v6d)
+			AC_EGREP_CPP(yes, [dnl
+#include </usr/local/v6/include/sys/v6config.h>
+#ifdef __V6D__
+yes
+#endif],
+				[ipv6type=$i;
+				ipv6lib=v6;
+				ipv6libdir=/usr/local/v6/lib;
+				CPPFLAGS="-I/usr/local/v6/include $CPPFLAGS"])
+			;;
+		zeta)
+			AC_EGREP_CPP(yes, [dnl
+#include <sys/param.h>
+#ifdef _ZETA_MINAMI_INET6
+yes
+#endif],
+				[ipv6type=$i;
+				ipv6lib=inet6;
+				ipv6libdir=/usr/local/v6/lib;
+				CPPFLAGS="-DINET6 $CPPFLAGS"])
+			;;
+		esac
+		if test "$ipv6type" != "unknown"; then
+			break
+		fi
+	done
+	AC_MSG_RESULT($ipv6type)
+fi
+
+if test "$ipv6" = "yes" -a -f /usr/local/v6/lib/libinet6.a; then
+	ac_inet6_LDFLAGS="inet6"
+	ipv6libdir=/usr/local/v6/lib
+	LDFLAGS="$LDFLAGS -L/usr/local/v6/lib"
+	AC_CHECK_LIB(inet6, getaddrinfo, , ipv6lib="$ac_inet6_LDFLAGS")
+fi
+
+
+if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
+	if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
+		LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
+	else
+		echo 'Fatal: no $ipv6lib library found.  cannot continue.'
+		echo "You need to fetch lib$ipv6lib.a from appropriate"
+		echo 'ipv6 kit and compile beforehand.'
+		exit 1
+	fi
+fi
+
 AC_DEFINE_UNQUOTED(HOSTTYPE, "$host")
 
 case "$host" in
@@ -313,7 +445,7 @@
 
 # Socket pairs appear to be broken on several systems.  I don't know exactly
 # where, so I'll use pipes everywhere for now.
-AC_DEFINE(USE_PIPES)
+# AC_DEFINE(USE_PIPES)
 
 AC_MSG_CHECKING([that the compiler works])
 AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
@@ -369,7 +501,7 @@
 
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(unistd.h rusage.h sys/time.h lastlog.h utmp.h shadow.h)
+AC_CHECK_HEADERS(unistd.h rusage.h sys/time.h lastlog.h login_cap.h utmp.h shadow.h)
 AC_CHECK_HEADERS(sgtty.h sys/select.h sys/ioctl.h machine/endian.h)
 AC_CHECK_HEADERS(paths.h usersec.h utime.h netinet/in_systm.h)
 AC_CHECK_HEADERS(netinet/in_system.h netinet/ip.h netinet/tcp.h ulimit.h)
@@ -399,6 +531,16 @@
 [ AC_DEFINE(HAVE_INCOMPATIBLE_SIGINFO)
   AC_MSG_RESULT(yes)] , AC_MSG_RESULT(no))
 
+AC_MSG_CHECKING([whether sys/socket.h have struct sockaddr_storage])
+AC_EGREP_HEADER(sockaddr_storage, sys/socket.h,
+  [ AC_DEFINE(HAVE_SOCKADDR_STORAGE) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no))
+AC_MSG_CHECKING([whether sys/socket.h have __ss_family])
+AC_EGREP_HEADER(__ss_family, sys/socket.h,
+  [ AC_DEFINE(HAVE_NEW_SS_FAMILY) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no))
+AC_MSG_CHECKING([whether sys/socket.h have sa_len])
+AC_EGREP_HEADER(sa_len, sys/socket.h,
+  [ AC_DEFINE(HAVE_SOCKADDR_LEN) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no))
+
 AC_CHECK_LIB(c, crypt, [true], AC_CHECK_LIB(crypt, crypt))
 AC_CHECK_LIB(sec, getspnam)
 AC_CHECK_LIB(seq, get_process_stats)
@@ -438,6 +580,107 @@
 
 AC_REPLACE_FUNCS(strerror memmove remove random putenv crypt socketpair snprintf)
 
+AC_MSG_CHECKING(getaddrinfo bug)
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <netdb.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+main()
+{
+  int passive, gaierr, inet4 = 0, inet6 = 0;
+  struct addrinfo hints, *ai, *aitop;
+  char straddr[INET6_ADDRSTRLEN], strport[16];
+
+  for (passive = 0; passive <= 1; passive++) {
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_flags = passive ? AI_PASSIVE : 0;
+    hints.ai_socktype = SOCK_STREAM;
+    if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
+      (void)gai_strerror(gaierr);
+      goto bad;
+    }
+    for (ai = aitop; ai; ai = ai->ai_next) {
+      if (ai->ai_addr == NULL ||
+          ai->ai_addrlen == 0 ||
+          getnameinfo(ai->ai_addr, ai->ai_addrlen,
+                      straddr, sizeof(straddr), strport, sizeof(strport),
+                      NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
+        goto bad;
+      }
+      if (strcmp(strport, "54321") != 0) {
+        goto bad;
+      }
+      switch (ai->ai_family) {
+      case AF_INET:
+        if (passive) {
+          if (strcmp(straddr, "0.0.0.0") != 0) {
+            goto bad;
+          }
+        } else {
+          if (strcmp(straddr, "127.0.0.1") != 0) {
+            goto bad;
+          }
+        }
+        inet4++;
+        break;
+      case AF_INET6:
+        if (passive) {
+          if (strcmp(straddr, "::") != 0) {
+            goto bad;
+          }
+        } else {
+          if (strcmp(straddr, "::1") != 0) {
+            goto bad;
+          }
+        }
+        inet6++;
+        break;
+      case AF_UNSPEC:
+        goto bad;
+        break;
+      default:
+        /* another family support? */
+        break;
+      }
+    }
+  }
+
+  if (!(inet4 == 0 || inet4 == 2))
+    goto bad;
+  if (!(inet6 == 0 || inet6 == 2))
+    goto bad;
+
+  if (aitop)
+    freeaddrinfo(aitop);
+  exit(0);
+
+ bad:
+  if (aitop)
+    freeaddrinfo(aitop);
+  exit(1);
+}
+],
+AC_MSG_RESULT(good)
+buggygetaddrinfo=no,
+AC_MSG_RESULT(buggy)
+buggygetaddrinfo=yes,
+AC_MSG_RESULT(buggy)
+buggygetaddrinfo=yes)
+
+if test "$buggygetaddrinfo" = "yes"; then
+	if test "$ipv6" = "yes"; then
+		echo 'Fatal: You must get working getaddrinfo() function.'
+		echo '       or you can specify "--disable-ipv6"'.
+		exit 1
+	else
+		AC_REPLACE_FUNCS(getaddrinfo getnameinfo)
+	fi
+fi
+
 AC_PROG_LN_S
 AC_PROG_INSTALL
 AC_CHECK_PROG(AR, ar, ar, echo)
@@ -934,7 +1177,11 @@
   AC_DEFINE(KRB5)
   KERBEROS_ROOT="$with_kerberos5"
   KERBEROS_INCS="-I${KERBEROS_ROOT}/include"
-  KERBEROS_LIBS="-L${KERBEROS_ROOT}/lib -lgssapi_krb5 -lkrb5 -lcrypto -lcom_err"
+  if test -f ${KERBEROS_ROOT}/lib/libk5crypto.a ; then
+     KERBEROS_LIBS="-L${KERBEROS_ROOT}/lib -R${KERBEROS_ROOT}/lib -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err"
+  else
+     KERBEROS_LIBS="-L${KERBEROS_ROOT}/lib -R${KERBEROS_ROOT}/lib -lgssapi_krb5 -lkrb5 -lcrypto -lcom_err"
+  fi
   AC_CHECK_LIB(ndbm, dbm_open, KERBEROS_LIBS="$KERBEROS_LIBS -lndbm")
   KERBEROS_OBJS="auth-kerberos.o"
   ;;
@@ -1125,6 +1372,7 @@
     AC_DEFINE(Rdup2,SOCKSdup2)
     AC_DEFINE(Rfclose,SOCKSfclose)
     AC_DEFINE(Rgethostbyname,SOCKSgethostbyname)
+    AC_DEFINE(Rgetaddrinfo,SOCKSgetaddrinfo)
 fi
 
 AC_MSG_CHECKING(whether to use rsaref)
@@ -1254,6 +1502,38 @@
   AC_DEFINE(ENABLE_TCP_NODELAY)
 )
 
+AC_MSG_CHECKING(whether to enable another port try support)
+AC_ARG_ENABLE(another-port-try,
+[  --enable-another-port-try	Enable another port try support (default)
+  --disable-another-port-try	Disable another port try support],
+[ case "$enableval" in
+  no)
+       AC_MSG_RESULT(no)
+       ;;
+  *)   AC_MSG_RESULT(yes)
+       AC_DEFINE(ENABLE_ANOTHER_PORT_TRY)
+       ;;
+  esac ],
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(ENABLE_ANOTHER_PORT_TRY)
+)
+
+AC_MSG_CHECKING(whether to enable logging auth info support)
+AC_ARG_ENABLE(log-auth,
+[  --enable-log-auth	Enable logging auth info support (default)
+  --disable-log-auth	Disable logging auth info support],
+[ case "$enableval" in
+  no)
+       AC_MSG_RESULT(no)
+       ;;
+  *)   AC_MSG_RESULT(yes)
+       AC_DEFINE(ENABLE_LOG_AUTH)
+       ;;
+  esac ],
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(ENABLE_LOG_AUTH)
+)
+
 AC_MSG_CHECKING(whether to enable SO_LINGER)
 AC_ARG_ENABLE(so-linger,
 [  --enable-so-linger      Enable setting SO_LINGER socket option],
@@ -1313,6 +1593,8 @@
   AC_DEFINE(SCP_ALL_STATISTICS_ENABLED)
 )
 
+CFLAGS="$CPPFLAGS $CFLAGS"
+
 # We include this here only to make it visible in --help; this is only used
 # in the gmp subdirectory.
 AC_ARG_ENABLE(asm,
@@ -1326,7 +1608,7 @@
 fi
 AC_MSG_RESULT($PIDDIR)
 
-AC_CONFIG_SUBDIRS(gmp-2.0.2-ssh-2)
+#AC_CONFIG_SUBDIRS(gmp-2.0.2-ssh-2)
 
 AC_ARG_PROGRAM
 
@@ -1357,4 +1639,4 @@
 AC_SUBST(SSHDCONFOBJS)
 AC_SUBST(SSHINSTALLMODE)
 
-AC_OUTPUT(Makefile sshd.8 ssh.1 make-ssh-known-hosts.1 zlib-1.0.4/Makefile)
+AC_OUTPUT(Makefile sshd.8 ssh.1 make-ssh-known-hosts.1 make-ssh-known-hosts.pl)