#ifndef _NETDB_H #define _NETDB_H #ifdef __cplusplus extern "C" { #endif #ifdef _GNU_SOURCE #define __NEED_size_t #endif #define __NEED_socklen_t #define __NEED_uint32_t #include 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 */ #define NI_MAXHOST 255 #define NI_MAXSERV 32 #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 *, const char *, const struct addrinfo *, struct addrinfo **); void freeaddrinfo (struct addrinfo *); int getnameinfo (const struct sockaddr *, socklen_t, char *, socklen_t, char *, 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; }; extern int h_errno; #define HOST_NOT_FOUND 1 #define TRY_AGAIN 2 #define NO_RECOVERY 3 #define NO_DATA 4 void sethostent (int); void endhostent (void); struct hostent *gethostent (void); struct hostent *gethostbyaddr (const void *, socklen_t, int); struct hostent *gethostbyname (const char *); 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); #ifdef _GNU_SOURCE 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 **); #endif #ifdef __cplusplus } #endif #endif