Remove support for Windows 2000 and anything that doesn't support getaddrinfo().
authorGuus Sliepen <guus@tinc-vpn.org>
Thu, 14 Apr 2016 21:24:22 +0000 (23:24 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 14 Apr 2016 21:32:50 +0000 (23:32 +0200)
configure.ac
src/Makefile.am
src/dropin.h
src/fake-gai-errnos.h [deleted file]
src/fake-getaddrinfo.c [deleted file]
src/fake-getaddrinfo.h [deleted file]
src/fake-getnameinfo.c [deleted file]
src/fake-getnameinfo.h [deleted file]
src/have.h
src/ipv6.h
src/system.h

index 20c40d7..8af2dd7 100644 (file)
@@ -111,13 +111,6 @@ AC_ARG_ENABLE(tunemu,
   [tunemu=false]
 )
 
-AC_ARG_WITH(windows2000,
-  AS_HELP_STRING([--with-windows2000], [compile with support for Windows 2000. This disables support for tunneling over existing IPv6 networks.]),
-  [ AS_IF([test "x$with_windows2000" = "xyes"],
-      [AC_DEFINE(WITH_WINDOWS2000, 1, [Compile with support for Windows 2000])])
-  ]
-)
-
 AC_ARG_WITH(systemd,
   AS_HELP_STRING([--with-systemd@<:@=DIR@:>@], [install systemd service files @<:@to DIR if specified@:>@]),
   [ systemd=true; systemd_path="$with_systemd" ],
@@ -185,7 +178,7 @@ dnl Checks for typedefs, structures, and compiler characteristics.
 tinc_ATTRIBUTE(__malloc__)
 tinc_ATTRIBUTE(__warn_unused_result__)
 
-AC_CHECK_TYPES([socklen_t, struct ether_header, struct arphdr, struct ether_arp, struct in_addr, struct addrinfo, struct ip, struct icmp, struct in6_addr, struct sockaddr_in6, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , ,
+AC_CHECK_TYPES([struct ether_header, struct arphdr, struct ether_arp, struct ip, struct icmp, struct ip6_hdr, struct icmp6_hdr, struct nd_neighbor_solicit, struct nd_opt_hdr], , ,
   [#include "$srcdir/src/have.h"]
 )
 
@@ -203,13 +196,6 @@ dnl Support for SunOS
 AC_CHECK_FUNC(socket, [], [
   AC_CHECK_LIB(socket, connect)
 ])
-AC_CHECK_FUNC(gethostbyname, [], [
-  AC_CHECK_LIB(nsl, gethostbyname)
-])
-
-AC_CHECK_DECLS([freeaddrinfo, gai_strerror, getaddrinfo, getnameinfo],
-  [], [], [#include "$srcdir/src/have.h"]
-)
 
 AC_CHECK_DECLS([res_init], [AC_CHECK_LIB(resolv, res_init)], [], [
   #include <netinet/in.h>
index 0e95418..96431a3 100644 (file)
@@ -51,9 +51,6 @@ tincd_SOURCES = \
        edge.c edge.h \
        ethernet.h \
        event.c event.h \
-       fake-gai-errnos.h \
-       fake-getaddrinfo.c fake-getaddrinfo.h \
-       fake-getnameinfo.c fake-getnameinfo.h \
        graph.c graph.h \
        hash.c hash.h \
        have.h \
index fff2d41..938f30d 100644 (file)
@@ -1,7 +1,7 @@
 /*
     dropin.h -- header file for dropin.c
     Copyright (C) 2000-2005 Ivo Timmermans,
-                  2000-2013 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2016 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #ifndef __DROPIN_H__
 #define __DROPIN_H__
 
-#include "fake-getaddrinfo.h"
-#include "fake-getnameinfo.h"
-
 #ifndef HAVE_DAEMON
 extern int daemon(int, int);
 #endif
 
-#ifndef HAVE_GET_CURRENT_DIR_NAME
-extern char *get_current_dir_name(void);
-#endif
-
 #ifndef HAVE_ASPRINTF
 extern int asprintf(char **, const char *, ...);
 extern int vasprintf(char **, const char *, va_list ap);
@@ -70,4 +63,8 @@ extern int nanosleep(const struct timespec *req, struct timespec *rem);
 #endif
 #endif
 
+#ifndef EAI_SYSTEM
+#define EAI_SYSTEM 0
+#endif
+
 #endif /* __DROPIN_H__ */
diff --git a/src/fake-gai-errnos.h b/src/fake-gai-errnos.h
deleted file mode 100644 (file)
index 2f41d8f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * fake library for ssh
- *
- * This file is included in getaddrinfo.c and getnameinfo.c.
- * See getaddrinfo.c and getnameinfo.c.
- */
-
-/* for old netdb.h */
-#ifndef EAI_NODATA
-#define EAI_NODATA 1
-#endif
-
-#ifndef EAI_MEMORY
-#define EAI_MEMORY 2
-#endif
-
-#ifndef EAI_FAMILY
-#define EAI_FAMILY 3
-#endif
-
-#ifndef EAI_SYSTEM
-#define EAI_SYSTEM 4
-#endif
diff --git a/src/fake-getaddrinfo.c b/src/fake-getaddrinfo.c
deleted file mode 100644 (file)
index cb821b5..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * fake library for ssh
- *
- * This file includes getaddrinfo(), freeaddrinfo() and gai_strerror().
- * 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 "system.h"
-
-#include "ipv4.h"
-#include "ipv6.h"
-#include "fake-getaddrinfo.h"
-#include "xalloc.h"
-
-
-#if !HAVE_DECL_GAI_STRERROR
-char *gai_strerror(int ecode) {
-       switch (ecode) {
-               case EAI_NODATA:
-                       return "No address associated with hostname";
-               case EAI_MEMORY:
-                       return "Memory allocation failure";
-               case EAI_FAMILY:
-                       return "Address family not supported";
-               default:
-                       return "Unknown error";
-       }
-}
-#endif /* !HAVE_GAI_STRERROR */
-
-#if !HAVE_DECL_FREEADDRINFO
-void freeaddrinfo(struct addrinfo *ai) {
-       struct addrinfo *next;
-
-       while(ai) {
-               next = ai->ai_next;
-               free(ai);
-               ai = next;
-       }
-}
-#endif /* !HAVE_FREEADDRINFO */
-
-#if !HAVE_DECL_GETADDRINFO
-static struct addrinfo *malloc_ai(uint16_t port, uint32_t addr) {
-       struct addrinfo *ai;
-
-       ai = xzalloc(sizeof(struct addrinfo) + sizeof(struct sockaddr_in));
-
-       ai->ai_addr = (struct sockaddr *)(ai + 1);
-       ai->ai_addrlen = sizeof(struct sockaddr_in);
-       ai->ai_addr->sa_family = ai->ai_family = AF_INET;
-
-       ((struct sockaddr_in *)(ai)->ai_addr)->sin_port = port;
-       ((struct sockaddr_in *)(ai)->ai_addr)->sin_addr.s_addr = addr;
-
-       return ai;
-}
-
-int getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res) {
-       struct addrinfo *prev = NULL;
-       struct hostent *hp;
-       struct in_addr in = {0};
-       int i;
-       uint16_t port = 0;
-
-       if(hints && hints->ai_family != AF_INET && hints->ai_family != AF_UNSPEC)
-               return EAI_FAMILY;
-
-       if (servname)
-               port = htons(atoi(servname));
-
-       if (hints && hints->ai_flags & AI_PASSIVE) {
-               *res = malloc_ai(port, htonl(0x00000000));
-               return 0;
-       }
-
-       if (!hostname) {
-               *res = malloc_ai(port, htonl(0x7f000001));
-               return 0;
-       }
-
-       hp = gethostbyname(hostname);
-
-       if(!hp || !hp->h_addr_list || !hp->h_addr_list[0])
-               return EAI_NODATA;
-
-       for (i = 0; hp->h_addr_list[i]; i++) {
-               *res = malloc_ai(port, ((struct in_addr *)hp->h_addr_list[i])->s_addr);
-
-               if(prev)
-                       prev->ai_next = *res;
-
-               prev = *res;
-       }
-
-       return 0;
-}
-#endif /* !HAVE_GETADDRINFO */
diff --git a/src/fake-getaddrinfo.h b/src/fake-getaddrinfo.h
deleted file mode 100644 (file)
index 5809985..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _FAKE_GETADDRINFO_H
-#define _FAKE_GETADDRINFO_H
-
-#include "fake-gai-errnos.h"
-
-#ifndef AI_PASSIVE
-# define AI_PASSIVE        1
-# define AI_CANONNAME      2
-#endif
-
-#ifndef NI_NUMERICHOST
-# define NI_NUMERICHOST    2
-# define NI_NAMEREQD       4
-# define NI_NUMERICSERV    8
-#endif
-
-#ifndef AI_NUMERICHOST
-#define AI_NUMERICHOST     4
-#endif
-
-#ifndef HAVE_STRUCT_ADDRINFO
-struct addrinfo {
-       int     ai_flags;               /* AI_PASSIVE, AI_CANONNAME */
-       int     ai_family;              /* PF_xxx */
-       int     ai_socktype;            /* SOCK_xxx */
-       int     ai_protocol;            /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-       size_t  ai_addrlen;             /* length of ai_addr */
-       char    *ai_canonname;          /* canonical name for hostname */
-       struct sockaddr *ai_addr;       /* binary address */
-       struct addrinfo *ai_next;       /* next structure in linked list */
-};
-#endif /* !HAVE_STRUCT_ADDRINFO */
-
-#if !HAVE_DECL_GETADDRINFO
-int getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res);
-#endif /* !HAVE_GETADDRINFO */
-
-#if !HAVE_DECL_GAI_STRERROR
-char *gai_strerror(int ecode);
-#endif /* !HAVE_GAI_STRERROR */
-
-#if !HAVE_DECL_FREEADDRINFO
-void freeaddrinfo(struct addrinfo *ai);
-#endif /* !HAVE_FREEADDRINFO */
-
-#endif /* _FAKE_GETADDRINFO_H */
diff --git a/src/fake-getnameinfo.c b/src/fake-getnameinfo.c
deleted file mode 100644 (file)
index 4a4d132..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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 "system.h"
-
-#include "fake-getnameinfo.h"
-#include "fake-getaddrinfo.h"
-
-#if !HAVE_DECL_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;
-       int len;
-
-       if(sa->sa_family != AF_INET)
-               return EAI_FAMILY;
-
-       if(serv && servlen) {
-               len = snprintf(serv, servlen, "%d", ntohs(sin->sin_port));
-               if(len < 0 || len >= servlen)
-                       return EAI_MEMORY;
-       }
-
-       if(!host || !hostlen)
-               return 0;
-
-       if(flags & NI_NUMERICHOST) {
-               len = snprintf(host, hostlen, "%s", inet_ntoa(sin->sin_addr));
-               if(len < 0 || len >= hostlen)
-                       return EAI_MEMORY;
-               return 0;
-       }
-
-       hp = gethostbyaddr((char *)&sin->sin_addr, sizeof(struct in_addr), AF_INET);
-
-       if(!hp || !hp->h_name || !hp->h_name[0])
-               return EAI_NODATA;
-
-       len = snprintf(host, hostlen, "%s", hp->h_name);
-       if(len < 0 || len >= hostlen)
-               return EAI_MEMORY;
-
-       return 0;
-}
-#endif /* !HAVE_GETNAMEINFO */
diff --git a/src/fake-getnameinfo.h b/src/fake-getnameinfo.h
deleted file mode 100644 (file)
index 043ed97..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef _FAKE_GETNAMEINFO_H
-#define _FAKE_GETNAMEINFO_H
-
-#if !HAVE_DECL_GETNAMEINFO
-int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
-#endif /* !HAVE_GETNAMEINFO */
-
-#ifndef NI_MAXSERV
-# define NI_MAXSERV 32
-#endif /* !NI_MAXSERV */
-#ifndef NI_MAXHOST
-# define NI_MAXHOST 1025
-#endif /* !NI_MAXHOST */
-
-#endif /* _FAKE_GETNAMEINFO_H */
index 97d8d43..faa4c9e 100644 (file)
@@ -1,7 +1,7 @@
 /*
     have.h -- include headers which are known to exist
     Copyright (C) 1998-2005 Ivo Timmermans
-                  2003-2013 Guus Sliepen <guus@tinc-vpn.org>
+                  2003-2016 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #define __TINC_HAVE_H__
 
 #ifdef HAVE_MINGW
-#ifdef WITH_WINDOWS2000
-#define WINVER Windows2000
-#else
 #define WINVER WindowsXP
-#endif
 #define WIN32_LEAN_AND_MEAN
 #endif
 
index 46cf62d..cc2c5b6 100644 (file)
@@ -1,7 +1,7 @@
 /*
     ipv6.h -- missing IPv6 related definitions
     Copyright (C) 2005 Ivo Timmermans
-                  2006-2012 Guus Sliepen <guus@tinc-vpn.org>
+                  2006-2016 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #define IPPROTO_ICMPV6 58
 #endif
 
-#ifndef HAVE_STRUCT_IN6_ADDR
-struct in6_addr {
-       union {
-               uint8_t u6_addr8[16];
-               uint16_t u6_addr16[8];
-               uint32_t u6_addr32[4];
-       } in6_u;
-} __attribute__ ((__gcc_struct__, __packed__));
-#define s6_addr in6_u.u6_addr8
-#define s6_addr16 in6_u.u6_addr16
-#define s6_addr32 in6_u.u6_addr32
-#endif
-
-#ifndef HAVE_STRUCT_SOCKADDR_IN6
-struct sockaddr_in6 {
-       uint16_t sin6_family;
-       uint16_t sin6_port;
-       uint32_t sin6_flowinfo;
-       struct in6_addr sin6_addr;
-       uint32_t sin6_scope_id;
-} __attribute__ ((__gcc_struct__, __packed__));
-#endif
-
 #ifndef IN6_IS_ADDR_V4MAPPED
 #define IN6_IS_ADDR_V4MAPPED(a) \
        ((((__const uint32_t *) (a))[0] == 0) \
index 4b428b1..2201ff3 100644 (file)
@@ -1,7 +1,7 @@
 /*
     system.h -- system headers
     Copyright (C) 1998-2005 Ivo Timmermans
-                  2003-2013 Guus Sliepen <guus@tinc-vpn.org>
+                  2003-2016 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -33,8 +33,4 @@
 
 #include "dropin.h"
 
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-
 #endif /* __TINC_SYSTEM_H__ */