9ed2245afd6386f8ac117d0786dd3f9cf161a5ba
[kai/samba-autobuild/.git] / source3 / lib / dbwrap / dbwrap_open.h
1 /* 
2    Unix SMB/CIFS implementation.
3    Database interface wrapper around tdb
4
5    Copyright (C) Volker Lendecke 2005-2007
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #ifndef __DBWRAP_OPEN_H__
22 #define __DBWRAP_OPEN_H__
23
24 struct db_context;
25
26 /**
27  * Convenience function to check whether a tdb database
28  * is local or clustered (ctdb) in a clustered environment.
29  */
30 bool db_is_local(const char *name);
31
32 enum dbwrap_lock_order {
33         DBWRAP_LOCK_ORDER_1 = 1,
34         DBWRAP_LOCK_ORDER_2 = 2,
35         DBWRAP_LOCK_ORDER_3 = 3
36 };
37
38 /**
39  * Convenience function that will determine whether to
40  * open a tdb database via the tdb backend or via the ctdb
41  * backend, based on lp_clustering() and a db-specific
42  * settings.
43  */
44 struct db_context *db_open(TALLOC_CTX *mem_ctx,
45                            const char *name,
46                            int hash_size, int tdb_flags,
47                            int open_flags, mode_t mode,
48                            enum dbwrap_lock_order lock_order);
49
50 #endif /* __DBWRAP_OPEN_H__ */