2020-06-15 14:18:57 +00:00
|
|
|
#ifndef COSMOPOLITAN_LIBC_DNS_DNS_H_
|
|
|
|
#define COSMOPOLITAN_LIBC_DNS_DNS_H_
|
2021-06-10 02:35:44 +00:00
|
|
|
#include "libc/calls/weirdtypes.h"
|
2021-02-19 03:20:41 +00:00
|
|
|
#include "libc/dns/resolvconf.h"
|
|
|
|
#include "libc/sock/sock.h"
|
2020-06-15 14:18:57 +00:00
|
|
|
|
2021-02-19 03:20:41 +00:00
|
|
|
#define DNS_PORT 53
|
|
|
|
#define DNS_NAME_MAX 253
|
2020-06-15 14:18:57 +00:00
|
|
|
#define DNS_LABEL_MAX 63
|
|
|
|
|
2021-02-19 03:20:41 +00:00
|
|
|
#define EAI_SUCCESS 0
|
|
|
|
#define EAI_BADFLAGS -1
|
|
|
|
#define EAI_NONAME -2
|
|
|
|
#define EAI_AGAIN -3
|
|
|
|
#define EAI_FAIL -4
|
|
|
|
#define EAI_NODATA -5
|
|
|
|
#define EAI_FAMILY -6
|
|
|
|
#define EAI_SOCKTYPE -7
|
|
|
|
#define EAI_SERVICE -8
|
|
|
|
#define EAI_ADDRFAMILY -9
|
|
|
|
#define EAI_MEMORY -10
|
|
|
|
#define EAI_OVERFLOW -12
|
|
|
|
#define EAI_SYSTEM -11
|
|
|
|
#define EAI_ALLDONE -103
|
|
|
|
#define EAI_CANCELED -101
|
|
|
|
#define EAI_IDN_ENCODE -105
|
|
|
|
#define EAI_INPROGRESS -100
|
|
|
|
#define EAI_INTR -104
|
|
|
|
#define EAI_NOTCANCELED -102
|
|
|
|
|
2021-05-14 12:36:58 +00:00
|
|
|
/* AI_* conforms to NT ABI */
|
|
|
|
#define AI_PASSIVE 1
|
|
|
|
#define AI_CANONNAME 2
|
|
|
|
#define AI_NUMERICHOST 4
|
|
|
|
#define AI_NUMERICSERV 8
|
|
|
|
#define AI_ALL 0x0100
|
|
|
|
#define AI_ADDRCONFIG 0x0400
|
|
|
|
#define AI_V4MAPPED 0x0800
|
|
|
|
|
2021-02-19 03:20:41 +00:00
|
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
|
|
COSMOPOLITAN_C_START_
|
2020-06-15 14:18:57 +00:00
|
|
|
|
|
|
|
struct addrinfo {
|
|
|
|
int32_t ai_flags; /* AI_XXX */
|
|
|
|
int32_t ai_family; /* AF_INET */
|
|
|
|
int32_t ai_socktype; /* SOCK_XXX */
|
|
|
|
int32_t ai_protocol; /* IPPROTO_XXX */
|
|
|
|
uint32_t ai_addrlen;
|
|
|
|
union {
|
|
|
|
struct sockaddr *ai_addr;
|
|
|
|
struct sockaddr_in *ai_addr4;
|
|
|
|
};
|
|
|
|
char *ai_canonname /*[DNS_NAME_MAX + 1]*/;
|
|
|
|
struct addrinfo *ai_next;
|
|
|
|
};
|
|
|
|
|
|
|
|
int getaddrinfo(const char *, const char *, const struct addrinfo *,
|
|
|
|
struct addrinfo **) paramsnonnull((4));
|
|
|
|
int freeaddrinfo(struct addrinfo *);
|
2021-06-10 02:35:44 +00:00
|
|
|
int getnameinfo(const struct sockaddr *, socklen_t, char *, socklen_t, char *,
|
|
|
|
socklen_t, int);
|
2021-03-21 03:48:40 +00:00
|
|
|
const char *gai_strerror(int);
|
2021-05-16 04:53:26 +00:00
|
|
|
int CompareDnsNames(const char *, const char *) paramsnonnull();
|
|
|
|
int PascalifyDnsName(uint8_t *, size_t, const char *) paramsnonnull();
|
|
|
|
int ResolveDns(const struct ResolvConf *, int, const char *, struct sockaddr *,
|
2020-06-15 14:18:57 +00:00
|
|
|
uint32_t) paramsnonnull();
|
2021-06-10 02:35:44 +00:00
|
|
|
int ResolveDnsReverse(const struct ResolvConf *resolvconf, int, const char *,
|
|
|
|
char *, size_t) paramsnonnull();
|
2020-06-15 14:18:57 +00:00
|
|
|
struct addrinfo *newaddrinfo(uint16_t);
|
|
|
|
|
|
|
|
COSMOPOLITAN_C_END_
|
|
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
|
|
#endif /* COSMOPOLITAN_LIBC_DNS_DNS_H_ */
|