summaryrefslogtreecommitdiffstats
path: root/server/db/sysdb_private.h
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2009-02-25 19:36:43 -0500
committerSimo Sorce <ssorce@redhat.com>2009-02-26 18:31:52 -0500
commit60bbc5034e546b7df7a6f782e3353b863f49618b (patch)
treecb8e8fc899c38ec78e71068c4b59ab8bb643117f /server/db/sysdb_private.h
parent89579fee5961b1dccfd59b431f0fbe160cacc2b7 (diff)
downloadsssd-60bbc5034e546b7df7a6f782e3353b863f49618b.tar.gz
sssd-60bbc5034e546b7df7a6f782e3353b863f49618b.tar.xz
sssd-60bbc5034e546b7df7a6f782e3353b863f49618b.zip
Serialize access to sysdb and also exposes ldb transactions.
This is necessary because in ldb only 1 transaction per context is possible and all operations (or new transactions) are nested within it. Will revisit this later when ldb will addresses the problem.
Diffstat (limited to 'server/db/sysdb_private.h')
-rw-r--r--server/db/sysdb_private.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/server/db/sysdb_private.h b/server/db/sysdb_private.h
new file mode 100644
index 000000000..c649af4aa
--- /dev/null
+++ b/server/db/sysdb_private.h
@@ -0,0 +1,95 @@
+
+/*
+ SSSD
+
+ Private System Database Header
+
+ Copyright (C) Simo Sorce <ssorce@redhat.com> 2008
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __INT_SYS_DB_H__
+#define __INT_SYS_DB_H__
+
+#define SYSDB_VERSION "0.1"
+
+#define SYSDB_BASE_LDIF \
+ "dn: @ATTRIBUTES\n" \
+ "userPrincipalName: CASE_INSENSITIVE\n" \
+ "cn: CASE_INSENSITIVE\n" \
+ "dc: CASE_INSENSITIVE\n" \
+ "dn: CASE_INSENSITIVE\n" \
+ "name: CASE_INSENSITIVE\n" \
+ "objectclass: CASE_INSENSITIVE\n" \
+ "\n" \
+ "dn: @INDEXLIST\n" \
+ "@IDXATTR: cn\n" \
+ "@IDXATTR: objectclass\n" \
+ "@IDXATTR: member\n" \
+ "@IDXATTR: memberof\n" \
+ "@IDXATTR: memberuid\n" \
+ "@IDXATTR: uid\n" \
+ "@IDXATTR: gid\n" \
+ "@IDXATTR: uidNumber\n" \
+ "@IDXATTR: gidNumber\n" \
+ "@IDXATTR: lastUpdate\n" \
+ "\n" \
+ "dn: @MODULES\n" \
+ "@LIST: asq,memberof\n" \
+ "\n" \
+ "dn: cn=sysdb\n" \
+ "cn: sysdb\n" \
+ "version: 0.1\n" \
+ "description: base object\n" \
+ "\n" \
+ "dn: cn=LOCAL,cn=sysdb\n" \
+ "cn: local\n" \
+ "description: Local system data\n" \
+ "\n" \
+ "dn: cn=Users,cn=LOCAL,cn=sysdb\n" \
+ "cn: users\n" \
+ "description: Local POSIX users\n" \
+ "\n" \
+ "dn: cn=Groups,cn=LOCAL,cn=sysdb\n" \
+ "cn: groups\n" \
+ "description: Local POSIX groups\n" \
+ "\n"
+
+#include "db/sysdb.h"
+
+struct sysdb_req;
+
+struct sysdb_ctx {
+ struct tevent_context *ev;
+ struct ldb_context *ldb;
+ char *ldb_file;
+ struct sysdb_req *queue;
+};
+
+typedef void (*sysdb_req_fn_t)(struct sysdb_req *, void *pvt);
+
+int sysdb_error_to_errno(int ldberr);
+
+int sysdb_transaction(TALLOC_CTX *mem_ctx,
+ struct sysdb_ctx *ctx,
+ sysdb_req_fn_t fn, void *pvt);
+void sysdb_transaction_done(struct sysdb_req *req, int status);
+
+int sysdb_operation(TALLOC_CTX *mem_ctx,
+ struct sysdb_ctx *ctx,
+ sysdb_req_fn_t fn, void *pvt);
+void sysdb_operation_done(struct sysdb_req *req);
+
+#endif /* __INT_SYS_DB_H__ */