sss_nss_idmap  1.16.1
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_getnamebysid(const char *sid, char **fq_name,
93  enum sss_id_type *type);
94 
105 int sss_nss_getidbysid(const char *sid, uint32_t *id,
106  enum sss_id_type *id_type);
107 
126 int sss_nss_getorigbyname(const char *fq_name, struct sss_nss_kv **kv_list,
127  enum sss_id_type *type);
128 
141 int sss_nss_getnamebycert(const char *cert, char **fq_name,
142  enum sss_id_type *type);
143 
156 int sss_nss_getlistbycert(const char *cert, char ***fq_name,
157  enum sss_id_type **type);
158 
164 void sss_nss_free_kv(struct sss_nss_kv *kv_list);
165 
170 #define SSS_NSS_EX_FLAG_NO_FLAGS 0
171 
175 #define SSS_NSS_EX_FLAG_NO_CACHE (1 << 0)
176 
180 #define SSS_NSS_EX_FLAG_INVALIDATE_CACHE (1 << 1)
181 
182 #ifdef IPA_389DS_PLUGIN_HELPER_CALLS
183 
203 int sss_nss_getpwnam_timeout(const char *name, struct passwd *pwd,
204  char *buffer, size_t buflen,
205  struct passwd **result,
206  uint32_t flags, unsigned int timeout);
207 
227 int sss_nss_getpwuid_timeout(uid_t uid, struct passwd *pwd,
228  char *buffer, size_t buflen,
229  struct passwd **result,
230  uint32_t flags, unsigned int timeout);
231 
251 int sss_nss_getgrnam_timeout(const char *name, struct group *grp,
252  char *buffer, size_t buflen, struct group **result,
253  uint32_t flags, unsigned int timeout);
254 
274 int sss_nss_getgrgid_timeout(gid_t gid, struct group *grp,
275  char *buffer, size_t buflen, struct group **result,
276  uint32_t flags, unsigned int timeout);
277 
303 int sss_nss_getgrouplist_timeout(const char *name, gid_t group,
304  gid_t *groups, int *ngroups,
305  uint32_t flags, unsigned int timeout);
326 int sss_nss_getsidbyname_timeout(const char *fq_name, unsigned int timeout,
327  char **sid, enum sss_id_type *type);
328 
341 int sss_nss_getsidbyid_timeout(uint32_t id, unsigned int timeout,
342  char **sid, enum sss_id_type *type);
343 
356 int sss_nss_getnamebysid_timeout(const char *sid, unsigned int timeout,
357  char **fq_name, enum sss_id_type *type);
358 
370 int sss_nss_getidbysid_timeout(const char *sid, unsigned int timeout,
371  uint32_t *id, enum sss_id_type *id_type);
372 
394 int sss_nss_getorigbyname_timeout(const char *fq_name, unsigned int timeout,
395  struct sss_nss_kv **kv_list,
396  enum sss_id_type *type);
397 
411 int sss_nss_getnamebycert_timeout(const char *cert, unsigned int timeout,
412  char **fq_name, enum sss_id_type *type);
413 
427 int sss_nss_getlistbycert_timeout(const char *cert, unsigned int timeout,
428  char ***fq_name, enum sss_id_type **type);
429 
430 #endif /* IPA_389DS_PLUGIN_HELPER_CALLS */
431 #endif /* SSS_NSS_IDMAP_H_ */