]> git.proxmox.com Git - systemd.git/blame - src/basic/nss-util.h
bump version to 252.11-pve1
[systemd.git] / src / basic / nss-util.h
CommitLineData
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) \
17enum 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_; \
23enum 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_; \
31enum 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_; \
37enum 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) \
44enum 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_; \
51enum 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) \
59enum 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} \
74enum 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) \
103enum 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) \
119enum 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 124enum 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) \
131enum 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) \
138enum 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) \
145enum nss_status _nss_##module##_getgrnam_r( \
146 const char *name, \
147 struct group *gr, \
148 char *buffer, size_t buflen, \
149 int *errnop) _public_; \
150enum 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) \
157enum nss_status _nss_##module##_endpwent( \
158 void) _public_; \
159enum nss_status _nss_##module##_setpwent( \
160 int stayopen) _public_; \
161enum 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) \
168enum nss_status _nss_##module##_endspent( \
169 void) _public_; \
170enum nss_status _nss_##module##_setspent( \
171 int stayopen) _public_; \
172enum 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) \
179enum nss_status _nss_##module##_endgrent( \
180 void) _public_; \
181enum nss_status _nss_##module##_setgrent( \
182 int stayopen) _public_; \
183enum 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) \
190enum nss_status _nss_##module##_endsgent( \
191 void) _public_; \
192enum nss_status _nss_##module##_setsgent( \
193 int stayopen) _public_; \
194enum 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) \
201enum 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
210typedef 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
217typedef 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
226typedef 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
233typedef 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
239typedef 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);
246typedef 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
253typedef enum nss_status (*_nss_getpwnam_r_t)(
254 const char *name,
255 struct passwd *pwd,
256 char *buffer, size_t buflen,
257 int *errnop);
258typedef 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
264typedef enum nss_status (*_nss_getgrnam_r_t)(
265 const char *name,
266 struct group *gr,
267 char *buffer, size_t buflen,
268 int *errnop);
269typedef enum nss_status (*_nss_getgrgid_r_t)(
270 gid_t gid,
271 struct group *gr,
272 char *buffer, size_t buflen,
273 int *errnop);