sss_nss_idmap  1.16.3
sss_nss_idmap.h
1 /*
2  SSSD
3 
4  NSS Responder ID-mapping interface
5 
6  Authors:
7  Sumit Bose <sbose@redhat.com>
8 
9  Copyright (C) 2013 Red Hat
10 
11  This program is free software; you can redistribute it and/or modify
12  it under the terms of the GNU General Public License as published by
13  the Free Software Foundation; either version 3 of the License, or
14  (at your option) any later version.
15 
16  This program is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  GNU General Public License for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with this program. If not, see <http://www.gnu.org/licenses/>.
23 */
24 
25 #ifndef SSS_NSS_IDMAP_H_
26 #define SSS_NSS_IDMAP_H_
27 
28 #include <stdint.h>
29 #include <sys/types.h>
30 #include <pwd.h>
31 #include <grp.h>
32 
36 enum sss_id_type {
37  SSS_ID_TYPE_NOT_SPECIFIED = 0,
38  SSS_ID_TYPE_UID,
39  SSS_ID_TYPE_GID,
40  SSS_ID_TYPE_BOTH /* used for user or magic private groups */
41 };
42 
43 struct sss_nss_kv {
44  char *key;
45  char *value;
46 };
47 
65 int sss_nss_getsidbyname(const char *fq_name, char **sid,
66  enum sss_id_type *type);
67 
79 int sss_nss_getsidbyid(uint32_t id, char **sid, enum sss_id_type *type);
80 
92 int sss_nss_getsidbyuid(uint32_t uid, char **sid, enum sss_id_type *type);
93 
105 int sss_nss_getsidbygid(uint32_t id, char **sid, enum sss_id_type *type);
106 
118 int sss_nss_getnamebysid(const char *sid, char **fq_name,
119  enum sss_id_type *type);
120 
131 int sss_nss_getidbysid(const char *sid, uint32_t *id,
132  enum sss_id_type *id_type);
133 
152 int sss_nss_getorigbyname(const char *fq_name, struct sss_nss_kv **kv_list,
153  enum sss_id_type *type);
154 
167 int sss_nss_getnamebycert(const char *cert, char **fq_name,
168  enum sss_id_type *type);
169 
182 int sss_nss_getlistbycert(const char *cert, char ***fq_name,
183  enum sss_id_type **type);
184 
190 void sss_nss_free_kv(struct sss_nss_kv *kv_list);
191 
196 #define SSS_NSS_EX_FLAG_NO_FLAGS 0
197 
201 #define SSS_NSS_EX_FLAG_NO_CACHE (1 << 0)
202 
206 #define SSS_NSS_EX_FLAG_INVALIDATE_CACHE (1 << 1)
207 
208 #ifdef IPA_389DS_PLUGIN_HELPER_CALLS
209 
229 int sss_nss_getpwnam_timeout(const char *name, struct passwd *pwd,
230  char *buffer, size_t buflen,
231  struct passwd **result,
232  uint32_t flags, unsigned int timeout);
233 
253 int sss_nss_getpwuid_timeout(uid_t uid, struct passwd *pwd,
254  char *buffer, size_t buflen,
255  struct passwd **result,
256  uint32_t flags, unsigned int timeout);
257 
277 int sss_nss_getgrnam_timeout(const char *name, struct group *grp,
278  char *buffer, size_t buflen, struct group **result,
279  uint32_t flags, unsigned int timeout);
280 
300 int sss_nss_getgrgid_timeout(gid_t gid, struct group *grp,
301  char *buffer, size_t buflen, struct group **result,
302  uint32_t flags, unsigned int timeout);
303 
329 int sss_nss_getgrouplist_timeout(const char *name, gid_t group,
330  gid_t *groups, int *ngroups,
331  uint32_t flags, unsigned int timeout);
352 int sss_nss_getsidbyname_timeout(const char *fq_name, unsigned int timeout,
353  char **sid, enum sss_id_type *type);
354 
367 int sss_nss_getsidbyid_timeout(uint32_t id, unsigned int timeout,
368  char **sid, enum sss_id_type *type);
381 int sss_nss_getsidbyuid_timeout(uint32_t uid, unsigned int timeout,
382  char **sid, enum sss_id_type *type);
383 
396 int sss_nss_getsidbygid_timeout(uint32_t gid, unsigned int timeout,
397  char **sid, enum sss_id_type *type);
398 
399 
412 int sss_nss_getnamebysid_timeout(const char *sid, unsigned int timeout,
413  char **fq_name, enum sss_id_type *type);
414 
426 int sss_nss_getidbysid_timeout(const char *sid, unsigned int timeout,
427  uint32_t *id, enum sss_id_type *id_type);
428 
450 int sss_nss_getorigbyname_timeout(const char *fq_name, unsigned int timeout,
451  struct sss_nss_kv **kv_list,
452  enum sss_id_type *type);
453 
467 int sss_nss_getnamebycert_timeout(const char *cert, unsigned int timeout,
468  char **fq_name, enum sss_id_type *type);
469 
483 int sss_nss_getlistbycert_timeout(const char *cert, unsigned int timeout,
484  char ***fq_name, enum sss_id_type **type);
485 
486 #endif /* IPA_389DS_PLUGIN_HELPER_CALLS */
487 #endif /* SSS_NSS_IDMAP_H_ */