summaryrefslogtreecommitdiff
path: root/src/nss-systemd/userdb-glue.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-07-04 18:31:11 +0200
committerLennart Poettering <lennart@poettering.net>2020-01-15 15:29:07 +0100
commit1684c56f40f020e685e70b3d1785d596ff16f892 (patch)
tree536cc71bb4b71c6c256d66351e7025f8417ed6f6 /src/nss-systemd/userdb-glue.h
parent19d22d433d3a0d93c81be079ed23dfca004a905a (diff)
downloadsystemd-1684c56f40f020e685e70b3d1785d596ff16f892.tar.gz
nss: hook up nss-systemd with userdb varlink bits
This changes nss-systemd to use the new varlink user/group APIs for looking up everything. (This also changes the factory /etc/nsswitch.conf line to use for hooking up nss-system to use glibc's [SUCCESS=merge] feature so that we can properly merge group membership lists). Fixes: #12492
Diffstat (limited to 'src/nss-systemd/userdb-glue.h')
-rw-r--r--src/nss-systemd/userdb-glue.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/nss-systemd/userdb-glue.h b/src/nss-systemd/userdb-glue.h
new file mode 100644
index 0000000000..02add24b6b
--- /dev/null
+++ b/src/nss-systemd/userdb-glue.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+#pragma once
+
+#include <nss.h>
+#include <pwd.h>
+#include <grp.h>
+#include <sys/types.h>
+
+#include "userdb.h"
+
+UserDBFlags nss_glue_userdb_flags(void);
+
+int nss_pack_user_record(UserRecord *hr, struct passwd *pwd, char *buffer, size_t buflen);
+int nss_pack_group_record(GroupRecord *g, char **extra_members, struct group *gr, char *buffer, size_t buflen);
+
+enum nss_status userdb_getpwnam(const char *name, struct passwd *pwd, char *buffer, size_t buflen, int *errnop);
+enum nss_status userdb_getpwuid(uid_t uid, struct passwd *pwd, char *buffer, size_t buflen, int *errnop);
+
+enum nss_status userdb_getgrnam(const char *name, struct group *gr, char *buffer, size_t buflen, int *errnop);
+enum nss_status userdb_getgrgid(gid_t gid, struct group *gr, char *buffer, size_t buflen, int *errnop);