dns stub resolver: increase buffer size to handle chained CNAMEs
[musl] / include / netdb.h
index 33b7a0a..3af065e 100644 (file)
@@ -5,17 +5,15 @@
 extern "C" {
 #endif
 
-#ifdef _GNU_SOURCE
-#define __NEED_size_t
-#endif
-
-#define __NEED_socklen_t
-#define __NEED_uint32_t
+#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
-{
+struct addrinfo {
        int ai_flags;
        int ai_family;
        int ai_socktype;
@@ -26,8 +24,6 @@ struct addrinfo
        struct addrinfo *ai_next;
 };
 
-#define IPPORT_RESERVED 1024
-
 #define AI_PASSIVE      0x01
 #define AI_CANONNAME    0x02
 #define AI_NUMERICHOST  0x04
@@ -42,12 +38,13 @@ struct addrinfo
 #define NI_NOFQDN       0x04
 #define NI_NAMEREQD     0x08
 #define NI_DGRAM        0x10
-/*#define NI_NUMERICSCOPE */
+#define NI_NUMERICSCOPE 0x100
 
 #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
@@ -55,24 +52,22 @@ struct addrinfo
 #define EAI_SYSTEM     -11
 #define EAI_OVERFLOW   -12
 
-int getaddrinfo (const char *, const char *, const struct addrinfo *, struct addrinfo **);
+int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict);
 void freeaddrinfo (struct addrinfo *);
-int getnameinfo (const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int);
+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
-{
+struct netent {
        char *n_name;
        char **n_aliases;
        int n_addrtype;
        uint32_t n_net;
 };
 
-struct hostent
-{
+struct hostent {
        char *h_name;
        char **h_aliases;
        int h_addrtype;
@@ -81,16 +76,14 @@ struct hostent
 };
 #define h_addr h_addr_list[0]
 
-struct servent
-{
+struct servent {
        char *s_name;
        char **s_aliases;
        int s_port;
        char *s_proto;
 };
 
-struct protoent
-{
+struct protoent {
        char *p_name;
        char **p_aliases;
        int p_proto;
@@ -118,21 +111,32 @@ struct protoent *getprotoent (void);
 struct protoent *getprotobyname (const char *);
 struct protoent *getprotobynumber (int);
 
-#ifdef _GNU_SOURCE
-const char *hstrerror(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 *);
-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);
 struct hostent *gethostbyaddr (const void *, socklen_t, 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 **);
 #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
+#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
@@ -143,10 +147,6 @@ int *__h_errno_location(void);
 #define EAI_IDN_ENCODE -105
 #define NI_MAXHOST 255
 #define NI_MAXSERV 32
-#define HOST_NOT_FOUND 1
-#define TRY_AGAIN      2
-#define NO_RECOVERY    3
-#define NO_DATA        4
 #endif