blob: d5bb5ef11af1c98616a629d3d8269ad3fcefa7bb [file] [log] [blame]
#ifndef SYSROOT_NETDB_H_
#define SYSROOT_NETDB_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <features.h>
#include <netinet/in.h>
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define __NEED_size_t
#include <bits/alltypes.h>
#endif
struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
socklen_t ai_addrlen;
struct sockaddr* ai_addr;
char* ai_canonname;
struct addrinfo* ai_next;
};
#define IPPORT_RESERVED 1024
#define AI_PASSIVE 0x01
#define AI_CANONNAME 0x02
#define AI_NUMERICHOST 0x04
#define AI_V4MAPPED 0x08
#define AI_ALL 0x10
#define AI_ADDRCONFIG 0x20
#define AI_NUMERICSERV 0x400
#define NI_NUMERICHOST 0x01
#define NI_NUMERICSERV 0x02
#define NI_NOFQDN 0x04
#define NI_NAMEREQD 0x08
#define NI_DGRAM 0x10
#define NI_NUMERICSCOPE 0x100
#define EAI_BADFLAGS -1
#define EAI_NONAME -2
#define EAI_AGAIN -3
#define EAI_FAIL -4
#define EAI_FAMILY -6
#define EAI_SOCKTYPE -7
#define EAI_SERVICE -8
#define EAI_MEMORY -10
#define EAI_SYSTEM -11
#define EAI_OVERFLOW -12
int getaddrinfo(const char* __restrict, const char* __restrict, const struct addrinfo* __restrict,
struct addrinfo** __restrict);
void freeaddrinfo(struct addrinfo*);
int getnameinfo(const struct sockaddr* __restrict, socklen_t, char* __restrict, socklen_t,
char* __restrict, socklen_t, int);
const char* gai_strerror(int);
/* Legacy functions follow (marked OBsolete in SUS) */
struct netent {
char* n_name;
char** n_aliases;
int n_addrtype;
uint32_t n_net;
};
struct hostent {
char* h_name;
char** h_aliases;
int h_addrtype;
int h_length;
char** h_addr_list;
};
#define h_addr h_addr_list[0]
struct servent {
char* s_name;
char** s_aliases;
int s_port;
char* s_proto;
};
struct protoent {
char* p_name;
char** p_aliases;
int p_proto;
};
void sethostent(int);
void endhostent(void);
struct hostent* gethostent(void);
void setnetent(int);
void endnetent(void);
struct netent* getnetent(void);
struct netent* getnetbyaddr(uint32_t, int);
struct netent* getnetbyname(const char*);
void setservent(int);
void endservent(void);
struct servent* getservent(void);
struct servent* getservbyname(const char*, const char*);
struct servent* getservbyport(int, const char*);
void setprotoent(int);
void endprotoent(void);
struct protoent* getprotoent(void);
struct protoent* getprotobyname(const char*);
struct protoent* getprotobynumber(int);
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) || \
(defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE + 0 < 200809L) || \
(defined(_XOPEN_SOURCE) && _XOPEN_SOURCE + 0 < 700)
struct hostent* gethostbyname(const char*);
struct hostent* gethostbyaddr(const void*, socklen_t, int);
int* __h_errno_location(void);
#define h_errno (*__h_errno_location())
#define HOST_NOT_FOUND 1
#define TRY_AGAIN 2
#define NO_RECOVERY 3
#define NO_DATA 4
#define NO_ADDRESS NO_DATA
#endif
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
void herror(const char*);
const char* hstrerror(int);
int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);
int gethostbyname2_r(const char*, int, struct hostent*, char*, size_t, struct hostent**, int*);
struct hostent* gethostbyname2(const char*, int);
int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**,
int*);
int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);
int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);
#define EAI_NODATA -5
#define EAI_ADDRFAMILY -9
#define EAI_INPROGRESS -100
#define EAI_CANCELED -101
#define EAI_NOTCANCELED -102
#define EAI_ALLDONE -103
#define EAI_INTR -104
#define EAI_IDN_ENCODE -105
#define NI_MAXHOST 255
#define NI_MAXSERV 32
#endif
#ifdef __cplusplus
}
#endif
#endif // SYSROOT_NETDB_H_