mirror of https://github.com/getdnsapi/getdns.git
529 lines
13 KiB
C
529 lines
13 KiB
C
#ifndef CONFIG_H
|
|
#define CONFIG_H
|
|
|
|
#cmakedefine PACKAGE "@PACKAGE@"
|
|
#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
|
|
#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
|
|
#cmakedefine PACKAGE_URL "@PACKAGE_URL@"
|
|
#cmakedefine PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
|
|
|
|
#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
|
|
#cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@"
|
|
|
|
#cmakedefine HAVE_ASSERT_H 1
|
|
#cmakedefine HAVE_INTTYPES_H 1
|
|
#cmakedefine HAVE_LIMITS_H 1
|
|
#cmakedefine HAVE_SYS_LIMITS_H 1
|
|
#cmakedefine HAVE_STDARG_H 1
|
|
#cmakedefine HAVE_STDINT_H 1
|
|
#cmakedefine HAVE_STDIO_H 1
|
|
#cmakedefine HAVE_STDLIB_H 1
|
|
#cmakedefine HAVE_STRING_H 1
|
|
#cmakedefine HAVE_TIME_H 1
|
|
#cmakedefine HAVE_UNISTD_H 1
|
|
|
|
#cmakedefine HAVE_FCNTL_H 1
|
|
|
|
#cmakedefine HAVE_SIGNAL_H 1
|
|
#cmakedefine HAVE_SYS_POLL_H 1
|
|
#cmakedefine HAVE_POLL_H 1
|
|
#cmakedefine HAVE_RESOURCE_H 1
|
|
#cmakedefine HAVE_SYS_TYPES_H 1
|
|
#cmakedefine HAVE_SYS_STAT_H 1
|
|
|
|
#cmakedefine HAVE_ENDIAN_H 1
|
|
#cmakedefine HAVE_NETDB_H 1
|
|
#cmakedefine HAVE_ARPA_INET_H 1
|
|
#cmakedefine HAVE_NETINET_IN_H 1
|
|
#cmakedefine HAVE_NETINET_TCP_H 1
|
|
#cmakedefine HAVE_SYS_SELECT_H 1
|
|
#cmakedefine HAVE_SYS_SOCKET_H 1
|
|
#cmakedefine HAVE_SYS_SYSCTL_H 1
|
|
#cmakedefine HAVE_SYS_TIME_H 1
|
|
#cmakedefine HAVE_SYS_WAIT_H 1
|
|
|
|
#cmakedefine HAVE_WINDOWS_H 1
|
|
#cmakedefine HAVE_WINSOCK_H 1
|
|
#cmakedefine HAVE_WINSOCK2_H 1
|
|
#cmakedefine HAVE_WS2TCPIP_H 1
|
|
#cmakedefine GETDNS_ON_WINDOWS 1
|
|
#cmakedefine USE_WINSOCK 1
|
|
|
|
#cmakedefine HAVE_SSL 1
|
|
#cmakedefine USE_DANESSL 1
|
|
|
|
#cmakedefine HAVE_OPENSSL_SSL_H 1
|
|
#cmakedefine HAVE_OPENSSL_EVP_H 1
|
|
#cmakedefine HAVE_OPENSSL_ERR_H 1
|
|
#cmakedefine HAVE_OPENSSL_RAND_H 1
|
|
#cmakedefine HAVE_OPENSSL_CONF_H 1
|
|
#cmakedefine HAVE_OPENSSL_ENGINE_H 1
|
|
|
|
#cmakedefine HAVE_DSA_SIG_SET0 1
|
|
#cmakedefine HAVE_DSA_SET0_PQG 1
|
|
#cmakedefine HAVE_DSA_SET0_KEY 1
|
|
|
|
#cmakedefine HAVE_RSA_SET0_KEY 1
|
|
|
|
#cmakedefine HAVE_EVP_MD5 1
|
|
#cmakedefine HAVE_EVP_SHA1 1
|
|
#cmakedefine HAVE_EVP_SHA224 1
|
|
#cmakedefine HAVE_EVP_SHA256 1
|
|
#cmakedefine HAVE_EVP_SHA384 1
|
|
#cmakedefine HAVE_EVP_SHA512 1
|
|
|
|
#cmakedefine HAVE_EVP_DSS1 1
|
|
#cmakedefine HAVE_EVP_DIGESTVERIFY 1
|
|
|
|
#cmakedefine HAVE_EVP_MD_CTX_NEW 1
|
|
|
|
#cmakedefine HAVE_HMAC_CTX_NEW 1
|
|
|
|
#cmakedefine HAVE_NETTLE_GET_SECP_256R1 1
|
|
#cmakedefine HAVE_NETTLE_GET_SECP_384R1 1
|
|
|
|
#cmakedefine HAVE_TLS_CLIENT_METHOD 1
|
|
|
|
#cmakedefine HAVE_OPENSSL_VERSION_NUM 1
|
|
#cmakedefine HAVE_OPENSSL_VERSION 1
|
|
|
|
#cmakedefine HAVE_SSL_CTX_DANE_ENABLE 1
|
|
#cmakedefine HAVE_SSL_CTX_SET_CIPHERSUITS 1
|
|
#cmakedefine HAVE_SSL_SET_CIPHERSUITS 1
|
|
|
|
#cmakedefine HAVE_OPENSSL_INIT_CRYPTO 1
|
|
|
|
#cmakedefine HAVE_SSL_DANE_ENABLE 1
|
|
#cmakedefine HAVE_DECL_SSL_CTX_SET1_CURVES_LIST 1
|
|
#cmakedefine HAVE_DECL_SSL_SET1_CURVES_LIST 1
|
|
#cmakedefine HAVE_DECL_SSL_SET_MIN_PROTO_VERSION 1
|
|
#cmakedefine HAVE_X509_GET_NOTAFTER 1
|
|
#cmakedefine HAVE_X509_GET0_NOTAFTER 1
|
|
|
|
#cmakedefine HAVE_PTHREAD 1
|
|
#cmakedefine HAVE_WINDOWS_THREADS 1
|
|
|
|
#cmakedefine RUNSTATEDIR "@RUNSTATEDIR@"
|
|
#cmakedefine TRUST_ANCHOR_FILE "@PATH_TRUST_ANCHOR_FILE@"
|
|
#cmakedefine GETDNS_FN_RESOLVCONF "@PATH_RESOLVCONF@"
|
|
#cmakedefine GETDNS_FN_HOSTS "@PATH_HOSTS@"
|
|
|
|
#cmakedefine DNSSEC_ROADBLOCK_AVOIDANCE 1
|
|
#cmakedefine HAVE_MDNS_SUPPORT 1
|
|
#cmakedefine STUB_NATIVE_DNSSEC 1
|
|
#cmakedefine MAXIMUM_UPSTREAM_OPTION_SPACE @MAXIMUM_UPSTREAM_OPTION_SPACE@
|
|
#cmakedefine EDNS_PADDING_OPCODE @EDNS_PADDING_OPCODE@
|
|
#cmakedefine MAX_CNAME_REFERRALS @MAX_CNAME_REFERRALS@
|
|
#cmakedefine DRAFT_RRTYPES @DRAFT_RRTYPES@
|
|
#cmakedefine EDNS_COOKIES 1
|
|
#cmakedefine EDNS_COOKIE_OPCODE @EDNS_COOKIE_OPCODE@
|
|
#cmakedefine EDNS_COOKIE_ROLLOVER_TIME @EDNS_COOKIE_ROLLOVER_TIME@
|
|
#cmakedefine UDP_MAX_BACKOFF @MAX_UDP_BACKOFF@
|
|
|
|
#cmakedefine HAVE_DECL_GETENTROPY 1
|
|
#cmakedefine HAVE_DECL_INET_PTON 1
|
|
#cmakedefine HAVE_DECL_INET_NTOP 1
|
|
#cmakedefine HAVE_WIN_DECL_INET_PTON 1
|
|
#cmakedefine HAVE_WIN_DECL_INET_NTOP 1
|
|
#cmakedefine HAVE_DECL_MKSTEMP 1
|
|
#cmakedefine HAVE_DECL_SIGEMPTYSET 1
|
|
#cmakedefine HAVE_DECL_SIGFILLSET 1
|
|
#cmakedefine HAVE_DECL_SIGADDSET 1
|
|
#cmakedefine HAVE_DECL_STRPTIME 1
|
|
|
|
#cmakedefine HAVE_DECL_TCP_FASTOPEN 1
|
|
#cmakedefine HAVE_DECL_TCP_FASTOPEN_CONNECT 1
|
|
#cmakedefine HAVE_DECL_MSG_FASTOPEN 1
|
|
|
|
#if defined(HAVE_DECL_INET_PTON) || defined(HAVE_WIN_DECL_INET_PTON)
|
|
#undef HAVE_DECL_INET_PTON
|
|
#define HAVE_DECL_INET_PTON 1
|
|
#endif
|
|
#if defined(HAVE_DECL_INET_NTOP) || defined(HAVE_WIN_DECL_INET_NTOP)
|
|
#undef HAVE_DECL_INET_NTOP
|
|
#define HAVE_DECL_INET_NTOP 1
|
|
#endif
|
|
|
|
#cmakedefine HAVE_FCNTL 1
|
|
#cmakedefine HAVE_GETTIMEOFDAY 1
|
|
#cmakedefine HAVE_IOCTLSOCKET 1
|
|
#cmakedefine HAVE_SIGEMPTYSET 1
|
|
#cmakedefine HAVE_SIGFILLSET 1
|
|
#cmakedefine HAVE_SIGADDSET 1
|
|
#cmakedefine HAVE_STRPTIME 1
|
|
|
|
#cmakedefine HAVE_SIGSET_T 1
|
|
#cmakedefine HAVE__SIGSET_T 1
|
|
|
|
#cmakedefine HAVE_BSD_STDLIB_H 1
|
|
#cmakedefine HAVE_BSD_STRING_H 1
|
|
|
|
#cmakedefine HAVE_DECL_STRLCPY 1
|
|
#cmakedefine HAVE_DECL_ARC4RANDOM 1
|
|
#cmakedefine HAVE_DECL_ARC4RANDOM_UNIFORM 1
|
|
#cmakedefine HAVE_BSD_DECL_STRLCPY 1
|
|
#cmakedefine HAVE_BSD_DECL_ARC4RANDOM 1
|
|
#cmakedefine HAVE_BSD_DECL_ARC4RANDOM_UNIFORM 1
|
|
|
|
#cmakedefine HAVE_STRLCPY 1
|
|
#cmakedefine HAVE_ARC4RANDOM 1
|
|
#cmakedefine HAVE_ARC4RANDOM_UNIFORM 1
|
|
|
|
#cmakedefine HAVE_LIBUNBOUND 1
|
|
#cmakedefine HAVE_UNBOUND_EVENT_H 1
|
|
#cmakedefine HAVE_UNBOUND_EVENT_API 1
|
|
#cmakedefine HAVE_UB_CTX_SET_STUB 1
|
|
|
|
#cmakedefine HAVE_LIBIDN 1
|
|
#cmakedefine HAVE_LIBIDN2 1
|
|
|
|
#cmakedefine HAVE_NETTLE 1
|
|
#cmakedefine HAVE_NETTLE_DSA_COMPAT_H 1
|
|
#cmakedefine HAVE_NETTLE_EDDSA_H 1
|
|
|
|
#cmakedefine HAVE_EVENT2_EVENT_H 1
|
|
#cmakedefine HAVE_EVENT_BASE_NEW 1
|
|
#cmakedefine HAVE_EVENT_BASE_FREE 1
|
|
|
|
#cmakedefine DEFAULT_EVENTLOOP "@DEFAULT_EVENTLOOP@"
|
|
#cmakedefine USE_POLL_DEFAULT_EVENTLOOP 1
|
|
|
|
#cmakedefine STRPTIME_WORKS 1
|
|
|
|
#cmakedefine FD_SETSIZE @FD_SETSIZE@
|
|
|
|
#cmakedefine REQ_DEBUG 1
|
|
#cmakedefine SCHED_DEBUG 1
|
|
#cmakedefine STUB_DEBUG 1
|
|
#cmakedefine DAEMON_DEBUG 1
|
|
#cmakedefine SEC_DEBUG 1
|
|
#cmakedefine SERVER_DEBUG 1
|
|
#cmakedefine ANCHOR_DEBUG 1
|
|
#cmakedefine KEEP_CONNECTIONS_OPEN_DEBUG 1
|
|
|
|
#cmakedefine USE_SHA1 1
|
|
#cmakedefine USE_SHA2 1
|
|
#cmakedefine USE_GOST 1
|
|
#cmakedefine USE_ECDSA 1
|
|
#cmakedefine USE_DSA 1
|
|
#cmakedefine USE_ED25519 1
|
|
#cmakedefine USE_ED448 1
|
|
|
|
#cmakedefine USE_OSX_TCP_FASTOPEN 1
|
|
|
|
#cmakedefine HAVE_NEW_UV_TIMER_CB 1
|
|
|
|
#cmakedefine HAVE_TARGET_ENDIANNESS
|
|
#cmakedefine TARGET_IS_BIG_ENDIAN
|
|
|
|
#cmakedefine HAVE___FUNC__ 1
|
|
|
|
#ifdef HAVE___FUNC__
|
|
#define __FUNC__ __func__
|
|
#else
|
|
#define __FUNC__ __FUNCTION__
|
|
#endif
|
|
|
|
#ifdef GETDNS_ON_WINDOWS
|
|
/* On windows it is allowed to increase the FD_SETSIZE
|
|
* (and nescessary to make our custom eventloop work)
|
|
* See: https://support.microsoft.com/en-us/kb/111855
|
|
*/
|
|
# ifndef FD_SETSIZE
|
|
# define FD_SETSIZE 1024
|
|
# endif
|
|
|
|
/* the version of the windows API enabled */
|
|
# ifndef WINVER
|
|
# define WINVER 0x0600 // 0x0502
|
|
# endif
|
|
# ifndef _WIN32_WINNT
|
|
# define _WIN32_WINNT 0x0600 // 0x0502
|
|
# endif
|
|
# ifdef HAVE_WS2TCPIP_H
|
|
# include <ws2tcpip.h>
|
|
# endif
|
|
|
|
# ifdef _MSC_VER
|
|
# if _MSC_VER >= 1800
|
|
# define PRIsz "zu"
|
|
# else
|
|
# define PRIsz "Iu"
|
|
# endif
|
|
# include <BaseTsd.h>
|
|
typedef SSIZE_T ssize_t;
|
|
# else
|
|
# define PRIsz "Iu"
|
|
# endif
|
|
|
|
# ifdef HAVE_WINSOCK2_H
|
|
# include <winsock2.h>
|
|
# endif
|
|
|
|
/* detect if we need to cast to unsigned int for FD_SET to avoid warnings */
|
|
# ifdef HAVE_WINSOCK2_H
|
|
# define FD_SET_T (u_int)
|
|
# else
|
|
# define FD_SET_T
|
|
# endif
|
|
|
|
/* Windows wants us to use _strdup instead of strdup */
|
|
# ifndef strdup
|
|
# define strdup _strdup
|
|
# endif
|
|
|
|
/* Windows doesn't have strcasecmp and strncasecmp. */
|
|
# define strcasecmp _stricmp
|
|
# define strncasecmp _strnicmp
|
|
#else
|
|
# define PRIsz "zu"
|
|
#endif
|
|
|
|
#ifdef HAVE_STDINT_H
|
|
#include <stdint.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_STDIO_H
|
|
#include <stdio.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_ASSERT_H
|
|
#include <assert.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_STRING_H
|
|
#include <string.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if STDC_HEADERS
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_BSD_STDLIB_H
|
|
#include <bsd/stdlib.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_BSD_STRING_H
|
|
#include <bsd/string.h>
|
|
#endif
|
|
|
|
#if !defined(HAVE_STRLCPY) || !HAVE_DECL_STRLCPY || !defined(strlcpy)
|
|
size_t strlcpy(char *dst, const char *src, size_t siz);
|
|
#else
|
|
#ifndef __BSD_VISIBLE
|
|
#define __BSD_VISIBLE 1
|
|
#endif
|
|
#endif
|
|
#if !defined(HAVE_ARC4RANDOM) || !HAVE_DECL_ARC4RANDOM
|
|
uint32_t arc4random(void);
|
|
#endif
|
|
#if !defined(HAVE_ARC4RANDOM_UNIFORM) || !HAVE_DECL_ARC4RANDOM_UNIFORM
|
|
uint32_t arc4random_uniform(uint32_t upper_bound);
|
|
#endif
|
|
#ifndef HAVE_ARC4RANDOM
|
|
void explicit_bzero(void* buf, size_t len);
|
|
int getentropy(void* buf, size_t len);
|
|
void arc4random_buf(void* buf, size_t n);
|
|
void _ARC4_LOCK(void);
|
|
void _ARC4_UNLOCK(void);
|
|
#endif
|
|
#ifdef COMPAT_SHA512
|
|
#ifndef SHA512_DIGEST_LENGTH
|
|
#define SHA512_BLOCK_LENGTH 128
|
|
#define SHA512_DIGEST_LENGTH 64
|
|
#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1)
|
|
typedef struct _SHA512_CTX {
|
|
uint64_t state[8];
|
|
uint64_t bitcount[2];
|
|
uint8_t buffer[SHA512_BLOCK_LENGTH];
|
|
} SHA512_CTX;
|
|
#endif /* SHA512_DIGEST_LENGTH */
|
|
void SHA512_Init(SHA512_CTX*);
|
|
void SHA512_Update(SHA512_CTX*, void*, size_t);
|
|
void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*);
|
|
unsigned char *SHA512(void* data, unsigned int data_len, unsigned char *digest);
|
|
#endif /* COMPAT_SHA512 */
|
|
|
|
#ifdef USE_WINSOCK
|
|
# ifndef _CUSTOM_VSNPRINTF
|
|
# define _CUSTOM_VSNPRINTF
|
|
static inline int _gldns_custom_vsnprintf(char *str, size_t size, const char *format, va_list ap)
|
|
{ int r = vsnprintf(str, size, format, ap); return r == -1 ? _vscprintf(format, ap) : r; }
|
|
# define vsnprintf _gldns_custom_vsnprintf
|
|
# endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/** Use on-board gldns */
|
|
#define USE_GLDNS 1
|
|
#ifdef HAVE_SSL
|
|
# define GLDNS_BUILD_CONFIG_HAVE_SSL 1
|
|
#endif
|
|
|
|
#ifdef HAVE_STDARG_H
|
|
#include <stdarg.h>
|
|
#endif
|
|
|
|
#include <errno.h>
|
|
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_SELECT_H
|
|
#include <sys/select.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_STAT_H
|
|
#include <sys/stat.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_NETINET_TCP_H
|
|
#include <netinet/tcp.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_ARPA_INET_H
|
|
#include <arpa/inet.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SIGNAL_H
|
|
#include <signal.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_INTTYPES_H
|
|
#include <inttypes.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_LIMITS_H
|
|
#include <limits.h>
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_LIMITS_H
|
|
#include <sys/limits.h>
|
|
#endif
|
|
|
|
#ifdef PATH_MAX
|
|
#define _GETDNS_PATH_MAX PATH_MAX
|
|
#else
|
|
#define _GETDNS_PATH_MAX 2048
|
|
#endif
|
|
|
|
#ifndef PRIu64
|
|
#define PRIu64 "llu"
|
|
#endif
|
|
|
|
#ifdef HAVE_ATTR_FORMAT
|
|
# define ATTR_FORMAT(archetype, string_index, first_to_check) \
|
|
__attribute__ ((format (archetype, string_index, first_to_check)))
|
|
#else /* !HAVE_ATTR_FORMAT */
|
|
# define ATTR_FORMAT(archetype, string_index, first_to_check) /* empty */
|
|
#endif /* !HAVE_ATTR_FORMAT */
|
|
|
|
#if defined(DOXYGEN)
|
|
# define ATTR_UNUSED(x) x
|
|
#elif defined(__cplusplus)
|
|
# define ATTR_UNUSED(x)
|
|
#elif defined(HAVE_ATTR_UNUSED)
|
|
# define ATTR_UNUSED(x) x __attribute__((unused))
|
|
#else /* !HAVE_ATTR_UNUSED */
|
|
# define ATTR_UNUSED(x) x
|
|
#endif /* !HAVE_ATTR_UNUSED */
|
|
|
|
#ifdef TIME_WITH_SYS_TIME
|
|
# include <sys/time.h>
|
|
# include <time.h>
|
|
#else
|
|
# ifdef HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
# else
|
|
# include <time.h>
|
|
# endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS)
|
|
#define strptime unbound_strptime
|
|
struct tm;
|
|
char *strptime(const char *s, const char *format, struct tm *tm);
|
|
#endif
|
|
|
|
#if !defined(HAVE_SIGSET_T) && defined(HAVE__SIGSET_T)
|
|
typedef _sigset_t sigset_t;
|
|
#endif
|
|
#if !defined(HAVE_SIGEMPTYSET)
|
|
# define sigemptyset(pset) (*(pset) = 0)
|
|
#endif
|
|
#if !defined(HAVE_SIGFILLSET)
|
|
# define sigfillset(pset) (*(pset) = (sigset_t)-1)
|
|
#endif
|
|
#if !defined(HAVE_SIGADDSET)
|
|
# define sigaddset(pset, num) (*(pset) |= (1L<<(num)))
|
|
#endif
|
|
|
|
#ifdef HAVE_LIBUNBOUND
|
|
# include <unbound.h>
|
|
# ifdef HAVE_UNBOUND_EVENT_H
|
|
# include <unbound-event.h>
|
|
# else
|
|
# ifdef HAVE_UNBOUND_EVENT_API
|
|
# ifndef _UB_EVENT_PRIMITIVES
|
|
# define _UB_EVENT_PRIMITIVES
|
|
struct ub_event_base;
|
|
struct ub_ctx* ub_ctx_create_ub_event(struct ub_event_base* base);
|
|
typedef void (*ub_event_callback_t)(void*, int, void*, int, int, char*);
|
|
int ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype,
|
|
int rrclass, void* mydata, ub_event_callback_t callback, int* async_id);
|
|
# endif
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef HAVE_DECL_INET_PTON
|
|
int inet_pton(int af, const char* src, void* dst);
|
|
#endif
|
|
|
|
#ifndef HAVE_DECL_INET_NTOP
|
|
const char *inet_ntop(int af, const void *src, char *dst, size_t size);
|
|
#endif
|
|
|
|
#ifndef HAVE_DECL_MKSTEMP
|
|
int mkstemp(char *template);
|
|
#endif
|
|
|
|
#ifndef HAVE_GETTIMEOFDAY
|
|
int gettimeofday(struct timeval* tv, void* tz);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* CONFIG_H */
|