]> git.saurik.com Git - apt.git/blobdiff - methods/rfc2553emu.h
implement generic config fallback for methods
[apt.git] / methods / rfc2553emu.h
index e24e7a3c18602ab1242d0a6c7a33ddedfe1175ff..ad7ddf48a3fc9b82d2a107dc1296a05a88c3af06 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: rfc2553emu.h,v 1.1 1999/05/25 05:56:24 jgg Exp $
+// $Id: rfc2553emu.h,v 1.4 2000/06/18 06:04:45 jgg Exp $
 /* ######################################################################
 
    RFC 2553 Emulation - Provides emulation for RFC 2553 getaddrinfo,
 #define HAVE_GETADDRINFO
 #endif
 
+// Autosense getnameinfo
+#if defined(NI_NUMERICHOST)
+#define HAVE_GETNAMEINFO
+#endif
+
 // getaddrinfo support?
 #ifndef HAVE_GETADDRINFO
-  #error Boink
-
   // Renamed to advoid type clashing.. (for debugging)
   struct addrinfo_emu
   {   
@@ -45,9 +48,9 @@
      size_t  ai_addrlen;   /* length of ai_addr */
      char   *ai_canonname; /* canonical name for nodename */
      struct sockaddr  *ai_addr; /* binary address */
-     struct addrinfo  *ai_next; /* next structure in linked list */
+     struct addrinfo_emu  *ai_next; /* next structure in linked list */
   };
-  #define addinfo addrinfo_emu
+  #define addrinfo addrinfo_emu
 
   int getaddrinfo(const char *nodename, const char *servname,
                   const struct addrinfo *hints,
   #define EAI_SOCKTYPE   -6
   #define EAI_SERVICE    -7
   #define EAI_ADDRFAMILY -8
-  #define EAI_ADDRFAMILY -8
   #define EAI_SYSTEM     -10
+  #define EAI_MEMORY     -11
   #endif
 
+  /* If we don't have getaddrinfo then we probably don't have 
+     sockaddr_storage either (same RFC) so we definitely will not be
+     doing any IPv6 stuff. Do not use the members of this structure to
+     retain portability, cast to a sockaddr. */
+  #define sockaddr_storage sockaddr_in
 #endif
 
 // getnameinfo support (glibc2.0 has getaddrinfo only)
                  char *host, size_t hostlen,
                  char *serv, size_t servlen,
                  int flags);
+
+  #ifndef NI_MAXHOST
+  #define NI_MAXHOST 1025
+  #define NI_MAXSERV 32
+  #endif
+
+  #ifndef NI_NUMERICHOST
+  #define NI_NUMERICHOST (1<<0)
+  #define NI_NUMERICSERV (1<<1)
+//  #define NI_NOFQDN (1<<2)
+  #define NI_NAMEREQD (1<<3)
+  #define NI_DATAGRAM (1<<4)
+  #endif
+
+  #define sockaddr_storage sockaddr_in
+#endif
+
+// Glibc 2.0.7 misses this one
+#ifndef AI_NUMERICHOST
+#define AI_NUMERICHOST 0
 #endif
 
 #endif