mirror of
git://git.musl-libc.org/musl
synced 2024-12-24 07:32:49 +00:00
3f80afc505
with this patch, setting _POSIX_SOURCE, or setting _POSIX_C_SOURCE or _XOPEN_SOURCE to an old version, will bring back the interfaces that were removed in POSIX 2008 - at least the ones i've covered so far, which are gethostby*, usleep, and ualarm. if there are other functions still in widespread use that were removed for which similar changes would be beneficial, they can be added just like this.
163 lines
3.8 KiB
C
163 lines
3.8 KiB
C
#ifndef _NETDB_H
|
|
#define _NETDB_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
#define __NEED_size_t
|
|
#endif
|
|
|
|
#define __NEED_socklen_t
|
|
#define __NEED_uint32_t
|
|
|
|
#include <bits/alltypes.h>
|
|
|
|
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 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;
|
|
};
|
|
|
|
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 < 200809L) \
|
|
|| (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 700)
|
|
struct hostent *gethostbyname (const char *);
|
|
struct hostent *gethostbyaddr (const void *, socklen_t, int);
|
|
#ifdef __GNUC__
|
|
__attribute__((const))
|
|
#endif
|
|
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
|
|
#endif
|
|
|
|
#if defined(_GNU_SOURCE) || defined(_BSD_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 **);
|
|
#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
|