From 9d769e0bf2ce266e8533e5e7c16bf07e44a9be34 Mon Sep 17 00:00:00 2001 From: Ivo Timmermans Date: Sun, 9 Jun 2002 15:26:10 +0000 Subject: [PATCH] OSX support --- configure.in | 7 +++--- lib/dropin.c | 4 ++- lib/fake-getnameinfo.c | 56 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 lib/fake-getnameinfo.c diff --git a/configure.in b/configure.in index f04d0652..390b3d08 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in,v 1.13.2.47 2002/06/08 14:08:56 guus Exp $ +dnl $Id: configure.in,v 1.13.2.48 2002/06/09 15:26:10 zarq Exp $ AC_INIT(src/tincd.c) AM_INIT_AUTOMAKE(tinc, 1.0-cvs) @@ -83,7 +83,8 @@ AC_STRUCT_TM AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, [ AC_TRY_COMPILE( - [#include ], + [#include + #include ], [socklen_t len = 42; return len;], ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no) @@ -97,7 +98,7 @@ AC_FUNC_MEMCMP AC_FUNC_ALLOCA AC_TYPE_SIGNAL AC_CHECK_FUNCS([asprintf daemon fcloseall flock ftime get_current_dir_name \ -putenv select strdup strerror strsignal strtol unsetenv]) +putenv select strdup strerror strsignal strtol unsetenv getnameinfo]) jm_FUNC_MALLOC jm_FUNC_REALLOC diff --git a/lib/dropin.c b/lib/dropin.c index 66aaa316..a500a034 100644 --- a/lib/dropin.c +++ b/lib/dropin.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: dropin.c,v 1.1.2.8 2002/02/10 21:57:51 guus Exp $ + $Id: dropin.c,v 1.1.2.9 2002/06/09 15:26:10 zarq Exp $ */ #include "config.h" @@ -35,6 +35,8 @@ #include #include +#include "fake-getnameinfo.c" + #ifndef HAVE_DAEMON /* Replacement for the daemon() function. diff --git a/lib/fake-getnameinfo.c b/lib/fake-getnameinfo.c new file mode 100644 index 00000000..c3ff57f0 --- /dev/null +++ b/lib/fake-getnameinfo.c @@ -0,0 +1,56 @@ +/* + * fake library for ssh + * + * This file includes getnameinfo(). + * These funtions are defined in rfc2133. + * + * But these functions are not implemented correctly. The minimum subset + * is implemented for ssh use only. For exapmle, this routine assumes + * that ai_family is AF_INET. Don't use it for another purpose. + */ + +#include "config.h" +#include + +RCSID("$Id: fake-getnameinfo.c,v 1.1.2.1 2002/06/09 15:26:10 zarq Exp $"); + +#ifndef HAVE_GETNAMEINFO + +int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) +{ + struct sockaddr_in *sin = (struct sockaddr_in *)sa; + struct hostent *hp; + char tmpserv[16]; + + if (serv) { + snprintf(tmpserv, sizeof(tmpserv), "%d", ntohs(sin->sin_port)); + if (strlen(tmpserv) >= servlen) + return EAI_MEMORY; + else + strcpy(serv, tmpserv); + } + + if (host) { + if (flags & NI_NUMERICHOST) { + if (strlen(inet_ntoa(sin->sin_addr)) >= hostlen) + return EAI_MEMORY; + + strcpy(host, inet_ntoa(sin->sin_addr)); + return 0; + } else { + hp = gethostbyaddr((char *)&sin->sin_addr, + sizeof(struct in_addr), AF_INET); + if (hp == NULL) + return EAI_NODATA; + + if (strlen(hp->h_name) >= hostlen) + return EAI_MEMORY; + + strcpy(host, hp->h_name); + return 0; + } + } + return 0; +} +#endif /* !HAVE_GETNAMEINFO */ -- 2.20.1