]>
Commit | Line | Data |
---|---|---|
a032b68d | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
5eef597e MP |
2 | #pragma once |
3 | ||
4c89c718 | 4 | #include <grp.h> |
5eef597e | 5 | #include <netdb.h> |
4c89c718 | 6 | #include <nss.h> |
7035cd9e | 7 | #include <pwd.h> |
4c89c718 | 8 | #include <resolv.h> |
7035cd9e | 9 | |
4c89c718 | 10 | #define NSS_SIGNALS_BLOCK SIGALRM,SIGVTALRM,SIGPIPE,SIGCHLD,SIGTSTP,SIGIO,SIGHUP,SIGUSR1,SIGUSR2,SIGPROF,SIGURG,SIGWINCH |
5eef597e | 11 | |
2897b343 MP |
12 | #ifndef DEPRECATED_RES_USE_INET6 |
13 | # define DEPRECATED_RES_USE_INET6 0x00002000 | |
14 | #endif | |
15 | ||
5eef597e MP |
16 | #define NSS_GETHOSTBYNAME_PROTOTYPES(module) \ |
17 | enum nss_status _nss_##module##_gethostbyname4_r( \ | |
18 | const char *name, \ | |
19 | struct gaih_addrtuple **pat, \ | |
20 | char *buffer, size_t buflen, \ | |
21 | int *errnop, int *h_errnop, \ | |
22 | int32_t *ttlp) _public_; \ | |
23 | enum nss_status _nss_##module##_gethostbyname3_r( \ | |
24 | const char *name, \ | |
25 | int af, \ | |
26 | struct hostent *host, \ | |
27 | char *buffer, size_t buflen, \ | |
28 | int *errnop, int *h_errnop, \ | |
29 | int32_t *ttlp, \ | |
30 | char **canonp) _public_; \ | |
31 | enum nss_status _nss_##module##_gethostbyname2_r( \ | |
32 | const char *name, \ | |
33 | int af, \ | |
34 | struct hostent *host, \ | |
35 | char *buffer, size_t buflen, \ | |
36 | int *errnop, int *h_errnop) _public_; \ | |
37 | enum nss_status _nss_##module##_gethostbyname_r( \ | |
38 | const char *name, \ | |
39 | struct hostent *host, \ | |
40 | char *buffer, size_t buflen, \ | |
41 | int *errnop, int *h_errnop) _public_ | |
42 | ||
43 | #define NSS_GETHOSTBYADDR_PROTOTYPES(module) \ | |
44 | enum nss_status _nss_##module##_gethostbyaddr2_r( \ | |
45 | const void* addr, socklen_t len, \ | |
46 | int af, \ | |
47 | struct hostent *host, \ | |
48 | char *buffer, size_t buflen, \ | |
49 | int *errnop, int *h_errnop, \ | |
50 | int32_t *ttlp) _public_; \ | |
51 | enum nss_status _nss_##module##_gethostbyaddr_r( \ | |
52 | const void* addr, socklen_t len, \ | |
53 | int af, \ | |
54 | struct hostent *host, \ | |
55 | char *buffer, size_t buflen, \ | |
56 | int *errnop, int *h_errnop) _public_ | |
57 | ||
58 | #define NSS_GETHOSTBYNAME_FALLBACKS(module) \ | |
59 | enum nss_status _nss_##module##_gethostbyname2_r( \ | |
60 | const char *name, \ | |
61 | int af, \ | |
62 | struct hostent *host, \ | |
63 | char *buffer, size_t buflen, \ | |
64 | int *errnop, int *h_errnop) { \ | |
65 | return _nss_##module##_gethostbyname3_r( \ | |
66 | name, \ | |
67 | af, \ | |
68 | host, \ | |
69 | buffer, buflen, \ | |
70 | errnop, h_errnop, \ | |
71 | NULL, \ | |
72 | NULL); \ | |
73 | } \ | |
74 | enum nss_status _nss_##module##_gethostbyname_r( \ | |
75 | const char *name, \ | |
76 | struct hostent *host, \ | |
77 | char *buffer, size_t buflen, \ | |
78 | int *errnop, int *h_errnop) { \ | |
79 | enum nss_status ret = NSS_STATUS_NOTFOUND; \ | |
80 | \ | |
2897b343 | 81 | if (_res.options & DEPRECATED_RES_USE_INET6) \ |
5eef597e MP |
82 | ret = _nss_##module##_gethostbyname3_r( \ |
83 | name, \ | |
84 | AF_INET6, \ | |
85 | host, \ | |
86 | buffer, buflen, \ | |
87 | errnop, h_errnop, \ | |
88 | NULL, \ | |
89 | NULL); \ | |
90 | if (ret == NSS_STATUS_NOTFOUND) \ | |
91 | ret = _nss_##module##_gethostbyname3_r( \ | |
92 | name, \ | |
93 | AF_INET, \ | |
94 | host, \ | |
95 | buffer, buflen, \ | |
96 | errnop, h_errnop, \ | |
97 | NULL, \ | |
98 | NULL); \ | |
99 | return ret; \ | |
b012e921 | 100 | } |
5eef597e MP |
101 | |
102 | #define NSS_GETHOSTBYADDR_FALLBACKS(module) \ | |
103 | enum nss_status _nss_##module##_gethostbyaddr_r( \ | |
104 | const void* addr, socklen_t len, \ | |
105 | int af, \ | |
106 | struct hostent *host, \ | |
107 | char *buffer, size_t buflen, \ | |
108 | int *errnop, int *h_errnop) { \ | |
109 | return _nss_##module##_gethostbyaddr2_r( \ | |
110 | addr, len, \ | |
111 | af, \ | |
112 | host, \ | |
113 | buffer, buflen, \ | |
114 | errnop, h_errnop, \ | |
115 | NULL); \ | |
b012e921 | 116 | } |
7035cd9e MP |
117 | |
118 | #define NSS_GETPW_PROTOTYPES(module) \ | |
119 | enum nss_status _nss_##module##_getpwnam_r( \ | |
120 | const char *name, \ | |
121 | struct passwd *pwd, \ | |
122 | char *buffer, size_t buflen, \ | |
123 | int *errnop) _public_; \ | |
5a920b42 | 124 | enum nss_status _nss_##module##_getpwuid_r( \ |
7035cd9e MP |
125 | uid_t uid, \ |
126 | struct passwd *pwd, \ | |
127 | char *buffer, size_t buflen, \ | |
128 | int *errnop) _public_ | |
129 | ||
8b3d4ff0 MB |
130 | #define NSS_GETSP_PROTOTYPES(module) \ |
131 | enum nss_status _nss_##module##_getspnam_r( \ | |
132 | const char *name, \ | |
133 | struct spwd *spwd, \ | |
134 | char *buffer, size_t buflen, \ | |
135 | int *errnop) _public_ | |
136 | ||
137 | #define NSS_GETSG_PROTOTYPES(module) \ | |
138 | enum nss_status _nss_##module##_getsgnam_r( \ | |
139 | const char *name, \ | |
140 | struct sgrp *sgrp, \ | |
141 | char *buffer, size_t buflen, \ | |
142 | int *errnop) _public_ | |
143 | ||
7035cd9e MP |
144 | #define NSS_GETGR_PROTOTYPES(module) \ |
145 | enum nss_status _nss_##module##_getgrnam_r( \ | |
146 | const char *name, \ | |
147 | struct group *gr, \ | |
148 | char *buffer, size_t buflen, \ | |
149 | int *errnop) _public_; \ | |
150 | enum nss_status _nss_##module##_getgrgid_r( \ | |
151 | gid_t gid, \ | |
152 | struct group *gr, \ | |
153 | char *buffer, size_t buflen, \ | |
154 | int *errnop) _public_ | |
aa27b158 | 155 | |
46cdbd49 BR |
156 | #define NSS_PWENT_PROTOTYPES(module) \ |
157 | enum nss_status _nss_##module##_endpwent( \ | |
158 | void) _public_; \ | |
159 | enum nss_status _nss_##module##_setpwent( \ | |
160 | int stayopen) _public_; \ | |
161 | enum nss_status _nss_##module##_getpwent_r( \ | |
162 | struct passwd *result, \ | |
163 | char *buffer, \ | |
164 | size_t buflen, \ | |
165 | int *errnop) _public_; | |
166 | ||
8b3d4ff0 MB |
167 | #define NSS_SPENT_PROTOTYPES(module) \ |
168 | enum nss_status _nss_##module##_endspent( \ | |
169 | void) _public_; \ | |
170 | enum nss_status _nss_##module##_setspent( \ | |
171 | int stayopen) _public_; \ | |
172 | enum nss_status _nss_##module##_getspent_r( \ | |
173 | struct spwd *spwd, \ | |
174 | char *buffer, \ | |
175 | size_t buflen, \ | |
176 | int *errnop) _public_; | |
177 | ||
46cdbd49 BR |
178 | #define NSS_GRENT_PROTOTYPES(module) \ |
179 | enum nss_status _nss_##module##_endgrent( \ | |
180 | void) _public_; \ | |
181 | enum nss_status _nss_##module##_setgrent( \ | |
182 | int stayopen) _public_; \ | |
183 | enum nss_status _nss_##module##_getgrent_r( \ | |
184 | struct group *result, \ | |
185 | char *buffer, \ | |
186 | size_t buflen, \ | |
187 | int *errnop) _public_; | |
188 | ||
8b3d4ff0 MB |
189 | #define NSS_SGENT_PROTOTYPES(module) \ |
190 | enum nss_status _nss_##module##_endsgent( \ | |
191 | void) _public_; \ | |
192 | enum nss_status _nss_##module##_setsgent( \ | |
193 | int stayopen) _public_; \ | |
194 | enum nss_status _nss_##module##_getsgent_r( \ | |
195 | struct sgrp *sgrp, \ | |
196 | char *buffer, \ | |
197 | size_t buflen, \ | |
198 | int *errnop) _public_; | |
199 | ||
46cdbd49 BR |
200 | #define NSS_INITGROUPS_PROTOTYPE(module) \ |
201 | enum nss_status _nss_##module##_initgroups_dyn( \ | |
202 | const char *user, \ | |
203 | gid_t group, \ | |
204 | long int *start, \ | |
205 | long int *size, \ | |
206 | gid_t **groupsp, \ | |
207 | long int limit, \ | |
208 | int *errnop) _public_; | |
209 | ||
aa27b158 MP |
210 | typedef enum nss_status (*_nss_gethostbyname4_r_t)( |
211 | const char *name, | |
212 | struct gaih_addrtuple **pat, | |
213 | char *buffer, size_t buflen, | |
214 | int *errnop, int *h_errnop, | |
215 | int32_t *ttlp); | |
216 | ||
217 | typedef enum nss_status (*_nss_gethostbyname3_r_t)( | |
218 | const char *name, | |
219 | int af, | |
220 | struct hostent *result, | |
221 | char *buffer, size_t buflen, | |
222 | int *errnop, int *h_errnop, | |
223 | int32_t *ttlp, | |
224 | char **canonp); | |
225 | ||
226 | typedef enum nss_status (*_nss_gethostbyname2_r_t)( | |
227 | const char *name, | |
228 | int af, | |
229 | struct hostent *result, | |
230 | char *buffer, size_t buflen, | |
231 | int *errnop, int *h_errnop); | |
232 | ||
233 | typedef enum nss_status (*_nss_gethostbyname_r_t)( | |
234 | const char *name, | |
235 | struct hostent *result, | |
236 | char *buffer, size_t buflen, | |
237 | int *errnop, int *h_errnop); | |
238 | ||
239 | typedef enum nss_status (*_nss_gethostbyaddr2_r_t)( | |
240 | const void* addr, socklen_t len, | |
241 | int af, | |
242 | struct hostent *result, | |
243 | char *buffer, size_t buflen, | |
244 | int *errnop, int *h_errnop, | |
245 | int32_t *ttlp); | |
246 | typedef enum nss_status (*_nss_gethostbyaddr_r_t)( | |
247 | const void* addr, socklen_t len, | |
248 | int af, | |
249 | struct hostent *host, | |
250 | char *buffer, size_t buflen, | |
251 | int *errnop, int *h_errnop); | |
8b3d4ff0 MB |
252 | |
253 | typedef enum nss_status (*_nss_getpwnam_r_t)( | |
254 | const char *name, | |
255 | struct passwd *pwd, | |
256 | char *buffer, size_t buflen, | |
257 | int *errnop); | |
258 | typedef enum nss_status (*_nss_getpwuid_r_t)( | |
259 | uid_t uid, | |
260 | struct passwd *pwd, | |
261 | char *buffer, size_t buflen, | |
262 | int *errnop); | |
263 | ||
264 | typedef enum nss_status (*_nss_getgrnam_r_t)( | |
265 | const char *name, | |
266 | struct group *gr, | |
267 | char *buffer, size_t buflen, | |
268 | int *errnop); | |
269 | typedef enum nss_status (*_nss_getgrgid_r_t)( | |
270 | gid_t gid, | |
271 | struct group *gr, | |
272 | char *buffer, size_t buflen, | |
273 | int *errnop); |