add netpacket/packet.h
[musl] / include / netdb.h
1 #ifndef _NETDB_H
2 #define _NETDB_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #ifdef _GNU_SOURCE
9 #define __NEED_size_t
10 #endif
11
12 #define __NEED_socklen_t
13 #define __NEED_uint32_t
14
15 #include <bits/alltypes.h>
16
17 struct addrinfo
18 {
19         int ai_flags;
20         int ai_family;
21         int ai_socktype;
22         int ai_protocol;
23         socklen_t ai_addrlen;
24         struct sockaddr *ai_addr;
25         char *ai_canonname;
26         struct addrinfo *ai_next;
27 };
28
29 #define IPPORT_RESERVED 1024
30
31 #define AI_PASSIVE      0x01
32 #define AI_CANONNAME    0x02
33 #define AI_NUMERICHOST  0x04
34 #define AI_V4MAPPED     0x08
35 #define AI_ALL          0x10
36 #define AI_ADDRCONFIG   0x20
37 #define AI_NUMERICSERV  0x400
38
39
40 #define NI_NUMERICHOST  0x01
41 #define NI_NUMERICSERV  0x02
42 #define NI_NOFQDN       0x04
43 #define NI_NAMEREQD     0x08
44 #define NI_DGRAM        0x10
45 /*#define NI_NUMERICSCOPE */
46
47 #define NI_MAXHOST 255
48 #define NI_MAXSERV 32
49
50 #define EAI_BADFLAGS   -1
51 #define EAI_NONAME     -2
52 #define EAI_AGAIN      -3
53 #define EAI_FAIL       -4
54 #define EAI_FAMILY     -6
55 #define EAI_SOCKTYPE   -7
56 #define EAI_SERVICE    -8
57 #define EAI_MEMORY     -10
58 #define EAI_SYSTEM     -11
59 #define EAI_OVERFLOW   -12
60
61 int getaddrinfo (const char *, const char *, const struct addrinfo *, struct addrinfo **);
62 void freeaddrinfo (struct addrinfo *);
63 int getnameinfo (const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, int);
64 const char *gai_strerror(int);
65
66
67 /* Legacy functions follow (marked OBsolete in SUS) */
68
69 struct netent
70 {
71         char *n_name;
72         char **n_aliases;
73         int n_addrtype;
74         uint32_t n_net;
75 };
76
77 struct hostent
78 {
79         char *h_name;
80         char **h_aliases;
81         int h_addrtype;
82         int h_length;
83         char **h_addr_list;
84 };
85 #define h_addr h_addr_list[0]
86
87 struct servent
88 {
89         char *s_name;
90         char **s_aliases;
91         int s_port;
92         char *s_proto;
93 };
94
95 struct protoent
96 {
97         char *p_name;
98         char **p_aliases;
99         int p_proto;
100 };
101
102 extern int h_errno;
103
104 #define HOST_NOT_FOUND 1
105 #define TRY_AGAIN      2
106 #define NO_RECOVERY    3
107 #define NO_DATA        4
108
109 void sethostent (int);
110 void endhostent (void);
111 struct hostent *gethostent (void);
112 struct hostent *gethostbyaddr (const void *, socklen_t, int);
113 struct hostent *gethostbyname (const char *);
114
115 void setnetent (int);
116 void endnetent (void);
117 struct netent *getnetent (void);
118 struct netent *getnetbyaddr (uint32_t, int);
119 struct netent *getnetbyname (const char *);
120
121 void setservent (int);
122 void endservent (void);
123 struct servent *getservent (void);
124 struct servent *getservbyname (const char *, const char *);
125 struct servent *getservbyport (int, const char *);
126
127 void setprotoent (int);
128 void endprotoent (void);
129 struct protoent *getprotoent (void);
130 struct protoent *getprotobyname (const char *);
131 struct protoent *getprotobynumber (int);
132
133 #ifdef _GNU_SOURCE
134 const char *hstrerror(int);
135 int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
136 int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
137 struct hostent *gethostbyname2(const char *, int);
138 int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
139 int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
140 int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
141 #endif
142
143
144 #ifdef __cplusplus
145 }
146 #endif
147
148 #endif