sss_nss_idmap 2.14.0-beta2
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
36enum 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
43struct sss_nss_kv {
44 char *key;
45 char *value;
46};
47
65int sss_nss_getsidbyname(const char *fq_name, char **sid,
66 enum sss_id_type *type);
67
79int sss_nss_getsidbyusername(const char *fq_name,
80 char **sid,
81 enum sss_id_type *type);
82
94int sss_nss_getsidbygroupname(const char *fq_name,
95 char **sid,
96 enum sss_id_type *type);
97
109int sss_nss_getsidbyid(uint32_t id, char **sid, enum sss_id_type *type);
110
122int sss_nss_getsidbyuid(uint32_t uid, char **sid, enum sss_id_type *type);
123
135int sss_nss_getsidbygid(uint32_t id, char **sid, enum sss_id_type *type);
136
148int sss_nss_getnamebysid(const char *sid, char **fq_name,
149 enum sss_id_type *type);
150
161int sss_nss_getidbysid(const char *sid, uint32_t *id,
162 enum sss_id_type *id_type);
163
182int sss_nss_getorigbyname(const char *fq_name, struct sss_nss_kv **kv_list,
183 enum sss_id_type *type);
184
203int sss_nss_getorigbyusername(const char *fq_name, struct sss_nss_kv **kv_list,
204 enum sss_id_type *type);
205
223int sss_nss_getorigbyusername_with_groups(const char *fq_name,
224 struct sss_nss_kv **kv_list,
225 enum sss_id_type *type);
226
245int sss_nss_getorigbygroupname(const char *fq_name, struct sss_nss_kv **kv_list,
246 enum sss_id_type *type);
247
260int sss_nss_getnamebycert(const char *cert, char **fq_name,
261 enum sss_id_type *type);
262
275int sss_nss_getlistbycert(const char *cert, char ***fq_name,
276 enum sss_id_type **type);
277
284void sss_nss_free_kv(struct sss_nss_kv *kv_list);
285
289
290#define SSS_NSS_EX_FLAG_NO_FLAGS 0
291
296#define SSS_NSS_EX_FLAG_NO_CACHE (1 << 0)
297
302#define SSS_NSS_EX_FLAG_INVALIDATE_CACHE (1 << 1)
303
311#define SSS_NSS_ATTR_NAME_GROUP_MEMBERSHIP ":groupMembership"
312
313#ifdef IPA_389DS_PLUGIN_HELPER_CALLS
332int sss_nss_getpwnam_timeout(const char *name, struct passwd *pwd,
333 char *buffer, size_t buflen,
334 struct passwd **result,
335 uint32_t flags, unsigned int timeout);
336
355int sss_nss_getpwuid_timeout(uid_t uid, struct passwd *pwd,
356 char *buffer, size_t buflen,
357 struct passwd **result,
358 uint32_t flags, unsigned int timeout);
359
378int sss_nss_getgrnam_timeout(const char *name, struct group *grp,
379 char *buffer, size_t buflen, struct group **result,
380 uint32_t flags, unsigned int timeout);
381
400int sss_nss_getgrgid_timeout(gid_t gid, struct group *grp,
401 char *buffer, size_t buflen, struct group **result,
402 uint32_t flags, unsigned int timeout);
403
428int sss_nss_getgrouplist_timeout(const char *name, gid_t group,
429 gid_t *groups, int *ngroups,
430 uint32_t flags, unsigned int timeout);
450int sss_nss_getsidbyname_timeout(const char *fq_name, unsigned int timeout,
451 char **sid, enum sss_id_type *type);
452
465int sss_nss_getsidbyusername_timeout(const char *fq_name,
466 unsigned int timeout,
467 char **sid,
468 enum sss_id_type *type);
469
482int sss_nss_getsidbygroupname_timeout(const char *fq_name,
483 unsigned int timeout,
484 char **sid,
485 enum sss_id_type *type);
486
499int sss_nss_getsidbyid_timeout(uint32_t id, unsigned int timeout,
500 char **sid, enum sss_id_type *type);
513int sss_nss_getsidbyuid_timeout(uint32_t uid, unsigned int timeout,
514 char **sid, enum sss_id_type *type);
515
528int sss_nss_getsidbygid_timeout(uint32_t gid, unsigned int timeout,
529 char **sid, enum sss_id_type *type);
530
531
544int sss_nss_getnamebysid_timeout(const char *sid, unsigned int timeout,
545 char **fq_name, enum sss_id_type *type);
546
558int sss_nss_getidbysid_timeout(const char *sid, unsigned int timeout,
559 uint32_t *id, enum sss_id_type *id_type);
560
581int sss_nss_getorigbyname_timeout(const char *fq_name, unsigned int timeout,
582 struct sss_nss_kv **kv_list,
583 enum sss_id_type *type);
584
605int sss_nss_getorigbyusername_timeout(const char *fq_name, unsigned int timeout,
606 struct sss_nss_kv **kv_list,
607 enum sss_id_type *type);
608
628int sss_nss_getorigbyusername_with_groups_timeout(const char *fq_name,
629 unsigned int timeout,
630 struct sss_nss_kv **kv_list,
631 enum sss_id_type *type);
632
653int sss_nss_getorigbygroupname_timeout(const char *fq_name, unsigned int timeout,
654 struct sss_nss_kv **kv_list,
655 enum sss_id_type *type);
656
670int sss_nss_getnamebycert_timeout(const char *cert, unsigned int timeout,
671 char **fq_name, enum sss_id_type *type);
672
686int sss_nss_getlistbycert_timeout(const char *cert, unsigned int timeout,
687 char ***fq_name, enum sss_id_type **type);
688
689#endif /* IPA_389DS_PLUGIN_HELPER_CALLS */
690#endif /* SSS_NSS_IDMAP_H_ */