Blame gl/netdb.in.h

Packit 549fdc
/* Provide a netdb.h header file for systems lacking it (read: MinGW).
Packit 549fdc
   Copyright (C) 2008-2016 Free Software Foundation, Inc.
Packit 549fdc
   Written by Simon Josefsson.
Packit 549fdc
Packit 549fdc
   This program is free software; you can redistribute it and/or modify
Packit 549fdc
   it under the terms of the GNU Lesser General Public License as published by
Packit 549fdc
   the Free Software Foundation; either version 2.1, or (at your option)
Packit 549fdc
   any later version.
Packit 549fdc
Packit 549fdc
   This program is distributed in the hope that it will be useful,
Packit 549fdc
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 549fdc
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 549fdc
   GNU Lesser General Public License for more details.
Packit 549fdc
Packit 549fdc
   You should have received a copy of the GNU Lesser General Public License
Packit 549fdc
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit 549fdc
Packit 549fdc
/* This file is supposed to be used on platforms that lack <netdb.h>.
Packit 549fdc
   It is intended to provide definitions and prototypes needed by an
Packit 549fdc
   application.  */
Packit 549fdc
Packit 549fdc
#ifndef _@GUARD_PREFIX@_NETDB_H
Packit 549fdc
Packit 549fdc
#if __GNUC__ >= 3
Packit 549fdc
@PRAGMA_SYSTEM_HEADER@
Packit 549fdc
#endif
Packit 549fdc
@PRAGMA_COLUMNS@
Packit 549fdc
Packit 549fdc
#if @HAVE_NETDB_H@
Packit 549fdc
Packit 549fdc
/* The include_next requires a split double-inclusion guard.  */
Packit 549fdc
# @INCLUDE_NEXT@ @NEXT_NETDB_H@
Packit 549fdc
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#ifndef _@GUARD_PREFIX@_NETDB_H
Packit 549fdc
#define _@GUARD_PREFIX@_NETDB_H
Packit 549fdc
Packit 549fdc
/* Get <netdb.h> definitions such as 'socklen_t' on IRIX 6.5 and OSF/1 4.0 and
Packit 549fdc
   'struct hostent' on MinGW.  */
Packit 549fdc
#include <sys/socket.h>
Packit 549fdc
Packit 549fdc
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit 549fdc
Packit 549fdc
/* The definition of _GL_ARG_NONNULL is copied here.  */
Packit 549fdc
Packit 549fdc
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit 549fdc
Packit 549fdc
/* Declarations for a platform that lacks <netdb.h>, or where it is
Packit 549fdc
   incomplete.  */
Packit 549fdc
Packit 549fdc
#if @GNULIB_GETADDRINFO@
Packit 549fdc
Packit 549fdc
# if !@HAVE_STRUCT_ADDRINFO@
Packit 549fdc
Packit 549fdc
#  ifdef __cplusplus
Packit 549fdc
extern "C" {
Packit 549fdc
#  endif
Packit 549fdc
Packit 549fdc
#  if !GNULIB_defined_struct_addrinfo
Packit 549fdc
/* Structure to contain information about address of a service provider.  */
Packit 549fdc
struct addrinfo
Packit 549fdc
{
Packit 549fdc
  int ai_flags;                 /* Input flags.  */
Packit 549fdc
  int ai_family;                /* Protocol family for socket.  */
Packit 549fdc
  int ai_socktype;              /* Socket type.  */
Packit 549fdc
  int ai_protocol;              /* Protocol for socket.  */
Packit 549fdc
  socklen_t ai_addrlen;         /* Length of socket address.  */
Packit 549fdc
  struct sockaddr *ai_addr;     /* Socket address for socket.  */
Packit 549fdc
  char *ai_canonname;           /* Canonical name for service location.  */
Packit 549fdc
  struct addrinfo *ai_next;     /* Pointer to next in list.  */
Packit 549fdc
};
Packit 549fdc
#   define GNULIB_defined_struct_addrinfo 1
Packit 549fdc
#  endif
Packit 549fdc
Packit 549fdc
#  ifdef __cplusplus
Packit 549fdc
}
Packit 549fdc
#  endif
Packit 549fdc
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
/* Possible values for 'ai_flags' field in 'addrinfo' structure.  */
Packit 549fdc
# ifndef AI_PASSIVE
Packit 549fdc
#  define AI_PASSIVE    0x0001  /* Socket address is intended for 'bind'.  */
Packit 549fdc
# endif
Packit 549fdc
# ifndef AI_CANONNAME
Packit 549fdc
#  define AI_CANONNAME  0x0002  /* Request for canonical name.  */
Packit 549fdc
# endif
Packit 549fdc
# ifndef AI_NUMERICSERV
Packit 549fdc
#  define AI_NUMERICSERV        0x0400  /* Don't use name resolution.  */
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# if 0
Packit 549fdc
#  define AI_NUMERICHOST        0x0004  /* Don't use name resolution.  */
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
/* These symbolic constants are required to be present by POSIX, but
Packit 549fdc
   our getaddrinfo replacement doesn't use them (yet).  Setting them
Packit 549fdc
   to 0 on systems that doesn't have them avoids causing problems for
Packit 549fdc
   system getaddrinfo implementations that would be confused by
Packit 549fdc
   unknown values.  */
Packit 549fdc
# ifndef AI_V4MAPPED
Packit 549fdc
#  define AI_V4MAPPED    0 /* 0x0008: IPv4 mapped addresses are acceptable.  */
Packit 549fdc
# endif
Packit 549fdc
# ifndef AI_ALL
Packit 549fdc
#  define AI_ALL         0 /* 0x0010: Return IPv4 mapped and IPv6 addresses. */
Packit 549fdc
# endif
Packit 549fdc
# ifndef AI_ADDRCONFIG
Packit 549fdc
#  define AI_ADDRCONFIG  0 /* 0x0020: Use configuration of this host to choose
Packit 549fdc
                                      returned address type.  */
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
/* Error values for 'getaddrinfo' function.  */
Packit 549fdc
# ifndef EAI_BADFLAGS
Packit 549fdc
#  define EAI_BADFLAGS    -1    /* Invalid value for 'ai_flags' field.  */
Packit 549fdc
#  define EAI_NONAME      -2    /* NAME or SERVICE is unknown.  */
Packit 549fdc
#  define EAI_AGAIN       -3    /* Temporary failure in name resolution.  */
Packit 549fdc
#  define EAI_FAIL        -4    /* Non-recoverable failure in name res.  */
Packit 549fdc
#  define EAI_NODATA      -5    /* No address associated with NAME.  */
Packit 549fdc
#  define EAI_FAMILY      -6    /* 'ai_family' not supported.  */
Packit 549fdc
#  define EAI_SOCKTYPE    -7    /* 'ai_socktype' not supported.  */
Packit 549fdc
#  define EAI_SERVICE     -8    /* SERVICE not supported for 'ai_socktype'.  */
Packit 549fdc
#  define EAI_MEMORY      -10   /* Memory allocation failure.  */
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
/* Since EAI_NODATA is deprecated by RFC3493, some systems (at least
Packit 549fdc
   FreeBSD, which does define EAI_BADFLAGS) have removed the definition
Packit 549fdc
   in favor of EAI_NONAME.  */
Packit 549fdc
# if !defined EAI_NODATA && defined EAI_NONAME
Packit 549fdc
#  define EAI_NODATA EAI_NONAME
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# ifndef EAI_OVERFLOW
Packit 549fdc
/* Not defined on mingw32 and Haiku. */
Packit 549fdc
#  define EAI_OVERFLOW    -12   /* Argument buffer overflow.  */
Packit 549fdc
# endif
Packit 549fdc
# ifndef EAI_ADDRFAMILY
Packit 549fdc
/* Not defined on mingw32. */
Packit 549fdc
#  define EAI_ADDRFAMILY  -9    /* Address family for NAME not supported.  */
Packit 549fdc
# endif
Packit 549fdc
# ifndef EAI_SYSTEM
Packit 549fdc
/* Not defined on mingw32. */
Packit 549fdc
#  define EAI_SYSTEM      -11   /* System error returned in 'errno'.  */
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# if 0
Packit 549fdc
/* The commented out definitions below are not yet implemented in the
Packit 549fdc
   GNULIB getaddrinfo() replacement, so are not yet needed.
Packit 549fdc
Packit 549fdc
   If they are restored, be sure to protect the definitions with #ifndef.  */
Packit 549fdc
#  ifndef EAI_INPROGRESS
Packit 549fdc
#   define EAI_INPROGRESS       -100    /* Processing request in progress.  */
Packit 549fdc
#   define EAI_CANCELED         -101    /* Request canceled.  */
Packit 549fdc
#   define EAI_NOTCANCELED      -102    /* Request not canceled.  */
Packit 549fdc
#   define EAI_ALLDONE          -103    /* All requests done.  */
Packit 549fdc
#   define EAI_INTR             -104    /* Interrupted by a signal.  */
Packit 549fdc
#   define EAI_IDN_ENCODE       -105    /* IDN encoding failed.  */
Packit 549fdc
#  endif
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# if !@HAVE_DECL_GETADDRINFO@
Packit 549fdc
/* Translate name of a service location and/or a service name to set of
Packit 549fdc
   socket addresses.
Packit 549fdc
   For more details, see the POSIX:2001 specification
Packit 549fdc
   <http://www.opengroup.org/susv3xsh/getaddrinfo.html>.  */
Packit 549fdc
_GL_FUNCDECL_SYS (getaddrinfo, int,
Packit 549fdc
                  (const char *restrict nodename,
Packit 549fdc
                   const char *restrict servname,
Packit 549fdc
                   const struct addrinfo *restrict hints,
Packit 549fdc
                   struct addrinfo **restrict res)
Packit 549fdc
                  _GL_ARG_NONNULL ((4)));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIAS_SYS (getaddrinfo, int,
Packit 549fdc
                  (const char *restrict nodename,
Packit 549fdc
                   const char *restrict servname,
Packit 549fdc
                   const struct addrinfo *restrict hints,
Packit 549fdc
                   struct addrinfo **restrict res));
Packit 549fdc
_GL_CXXALIASWARN (getaddrinfo);
Packit 549fdc
Packit 549fdc
# if !@HAVE_DECL_FREEADDRINFO@
Packit 549fdc
/* Free 'addrinfo' structure AI including associated storage.
Packit 549fdc
   For more details, see the POSIX:2001 specification
Packit 549fdc
   <http://www.opengroup.org/susv3xsh/getaddrinfo.html>.  */
Packit 549fdc
_GL_FUNCDECL_SYS (freeaddrinfo, void, (struct addrinfo *ai)
Packit 549fdc
                                      _GL_ARG_NONNULL ((1)));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIAS_SYS (freeaddrinfo, void, (struct addrinfo *ai));
Packit 549fdc
_GL_CXXALIASWARN (freeaddrinfo);
Packit 549fdc
Packit 549fdc
# if @REPLACE_GAI_STRERROR@
Packit 549fdc
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 549fdc
#   undef gai_strerror
Packit 549fdc
#   define gai_strerror rpl_gai_strerror
Packit 549fdc
#  endif
Packit 549fdc
_GL_FUNCDECL_RPL (gai_strerror, const char *, (int ecode));
Packit 549fdc
_GL_CXXALIAS_RPL (gai_strerror, const char *, (int ecode));
Packit 549fdc
# else
Packit 549fdc
#  if !@HAVE_DECL_GAI_STRERROR@
Packit 549fdc
/* Convert error return from getaddrinfo() to a string.
Packit 549fdc
   For more details, see the POSIX:2001 specification
Packit 549fdc
   <http://www.opengroup.org/susv3xsh/gai_strerror.html>.  */
Packit 549fdc
_GL_FUNCDECL_SYS (gai_strerror, const char *, (int ecode));
Packit 549fdc
#  endif
Packit 549fdc
_GL_CXXALIAS_SYS (gai_strerror, const char *, (int ecode));
Packit 549fdc
# endif
Packit 549fdc
_GL_CXXALIASWARN (gai_strerror);
Packit 549fdc
Packit 549fdc
# if !@HAVE_DECL_GETNAMEINFO@
Packit 549fdc
/* Convert socket address to printable node and service names.
Packit 549fdc
   For more details, see the POSIX:2001 specification
Packit 549fdc
   <http://www.opengroup.org/susv3xsh/getnameinfo.html>.  */
Packit 549fdc
_GL_FUNCDECL_SYS (getnameinfo, int,
Packit 549fdc
                  (const struct sockaddr *restrict sa, socklen_t salen,
Packit 549fdc
                   char *restrict node, socklen_t nodelen,
Packit 549fdc
                   char *restrict service, socklen_t servicelen,
Packit 549fdc
                   int flags)
Packit 549fdc
                  _GL_ARG_NONNULL ((1)));
Packit 549fdc
# endif
Packit 549fdc
/* Need to cast, because on glibc systems, the seventh parameter is
Packit 549fdc
                        unsigned int flags.  */
Packit 549fdc
_GL_CXXALIAS_SYS_CAST (getnameinfo, int,
Packit 549fdc
                       (const struct sockaddr *restrict sa, socklen_t salen,
Packit 549fdc
                        char *restrict node, socklen_t nodelen,
Packit 549fdc
                        char *restrict service, socklen_t servicelen,
Packit 549fdc
                        int flags));
Packit 549fdc
_GL_CXXALIASWARN (getnameinfo);
Packit 549fdc
Packit 549fdc
/* Possible flags for getnameinfo.  */
Packit 549fdc
# ifndef NI_NUMERICHOST
Packit 549fdc
#  define NI_NUMERICHOST 1
Packit 549fdc
# endif
Packit 549fdc
# ifndef NI_NUMERICSERV
Packit 549fdc
#  define NI_NUMERICSERV 2
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
#elif defined GNULIB_POSIXCHECK
Packit 549fdc
Packit 549fdc
# undef getaddrinfo
Packit 549fdc
# if HAVE_RAW_DECL_GETADDRINFO
Packit 549fdc
_GL_WARN_ON_USE (getaddrinfo, "getaddrinfo is unportable - "
Packit 549fdc
                 "use gnulib module getaddrinfo for portability");
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# undef freeaddrinfo
Packit 549fdc
# if HAVE_RAW_DECL_FREEADDRINFO
Packit 549fdc
_GL_WARN_ON_USE (freeaddrinfo, "freeaddrinfo is unportable - "
Packit 549fdc
                 "use gnulib module getaddrinfo for portability");
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# undef gai_strerror
Packit 549fdc
# if HAVE_RAW_DECL_GAI_STRERROR
Packit 549fdc
_GL_WARN_ON_USE (gai_strerror, "gai_strerror is unportable - "
Packit 549fdc
                 "use gnulib module getaddrinfo for portability");
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
# undef getnameinfo
Packit 549fdc
# if HAVE_RAW_DECL_GETNAMEINFO
Packit 549fdc
_GL_WARN_ON_USE (getnameinfo, "getnameinfo is unportable - "
Packit 549fdc
                 "use gnulib module getaddrinfo for portability");
Packit 549fdc
# endif
Packit 549fdc
Packit 549fdc
#endif
Packit 549fdc
Packit 549fdc
#endif /* _@GUARD_PREFIX@_NETDB_H */
Packit 549fdc
#endif /* _@GUARD_PREFIX@_NETDB_H */