1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #include <sys/socket.h>
7 #include "group-record.h"
8 #include "user-record.h"
10 /* Inquire local services for user/group records */
12 typedef struct UserDBIterator UserDBIterator
;
14 UserDBIterator
*userdb_iterator_free(UserDBIterator
*iterator
);
15 DEFINE_TRIVIAL_CLEANUP_FUNC(UserDBIterator
*, userdb_iterator_free
);
17 typedef enum UserDBFlags
{
18 USERDB_AVOID_NSS
= 1 << 0, /* don't do client-side nor server-side NSS */
19 USERDB_AVOID_SHADOW
= 1 << 1, /* don't do client-side shadow calls (server side might happen though) */
20 USERDB_AVOID_DYNAMIC_USER
= 1 << 2, /* exclude looking up in io.systemd.DynamicUser */
21 USERDB_AVOID_MULTIPLEXER
= 1 << 3, /* exclude looking up via io.systemd.Multiplexer */
22 USERDB_DONT_SYNTHESIZE
= 1 << 4, /* don't synthesize root/nobody */
25 int userdb_by_name(const char *name
, UserDBFlags flags
, UserRecord
**ret
);
26 int userdb_by_uid(uid_t uid
, UserDBFlags flags
, UserRecord
**ret
);
27 int userdb_all(UserDBFlags flags
, UserDBIterator
**ret
);
28 int userdb_iterator_get(UserDBIterator
*iterator
, UserRecord
**ret
);
30 int groupdb_by_name(const char *name
, UserDBFlags flags
, GroupRecord
**ret
);
31 int groupdb_by_gid(gid_t gid
, UserDBFlags flags
, GroupRecord
**ret
);
32 int groupdb_all(UserDBFlags flags
, UserDBIterator
**ret
);
33 int groupdb_iterator_get(UserDBIterator
*iterator
, GroupRecord
**ret
);
35 int membershipdb_by_user(const char *name
, UserDBFlags flags
, UserDBIterator
**ret
);
36 int membershipdb_by_group(const char *name
, UserDBFlags flags
, UserDBIterator
**ret
);
37 int membershipdb_all(UserDBFlags flags
, UserDBIterator
**ret
);
38 int membershipdb_iterator_get(UserDBIterator
*iterator
, char **user
, char **group
);
39 int membershipdb_by_group_strv(const char *name
, UserDBFlags flags
, char ***ret
);
41 int userdb_block_nss_systemd(int b
);