/*
Unix SMB/CIFS implementation.
Database interface wrapper around tdb
Copyright (C) Volker Lendecke 2005-2007
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 .
*/
#ifndef __DBWRAP_H__
#define __DBWRAP_H__
struct db_record {
TDB_DATA key, value;
NTSTATUS (*store)(struct db_record *rec, TDB_DATA data, int flag);
NTSTATUS (*delete_rec)(struct db_record *rec);
void *private_data;
};
struct db_context {
struct db_record *(*fetch_locked)(struct db_context *db,
TALLOC_CTX *mem_ctx,
TDB_DATA key);
int (*fetch)(struct db_context *db, TALLOC_CTX *mem_ctx,
TDB_DATA key, TDB_DATA *data);
int (*traverse)(struct db_context *db,
int (*f)(struct db_record *rec,
void *private_data),
void *private_data);
int (*traverse_read)(struct db_context *db,
int (*f)(struct db_record *rec,
void *private_data),
void *private_data);
int (*get_seqnum)(struct db_context *db);
int (*get_flags)(struct db_context *db);
int (*transaction_start)(struct db_context *db);
int (*transaction_commit)(struct db_context *db);
int (*transaction_cancel)(struct db_context *db);
int (*parse_record)(struct db_context *db, TDB_DATA key,
int (*parser)(TDB_DATA key, TDB_DATA data,
void *private_data),
void *private_data);
void *private_data;
bool persistent;
};
bool db_is_local(const char *name);
struct db_context *db_open(TALLOC_CTX *mem_ctx,
const char *name,
int hash_size, int tdb_flags,
int open_flags, mode_t mode);
struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx);
struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
const char *name,
int hash_size, int tdb_flags,
int open_flags, mode_t mode);
struct db_context *db_open_tdb2(TALLOC_CTX *mem_ctx,
const char *name,
int hash_size, int tdb_flags,
int open_flags, mode_t mode);
struct messaging_context;
#ifdef CLUSTER_SUPPORT
struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
const char *name,
int hash_size, int tdb_flags,
int open_flags, mode_t mode);
#endif
struct db_context *db_open_file(TALLOC_CTX *mem_ctx,
struct messaging_context *msg_ctx,
const char *name,
int hash_size, int tdb_flags,
int open_flags, mode_t mode);
NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key);
NTSTATUS dbwrap_store(struct db_context *db, TDB_DATA key,
TDB_DATA data, int flags);
TDB_DATA dbwrap_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
TDB_DATA key);
NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key);
NTSTATUS dbwrap_store_bystring(struct db_context *db, const char *key,
TDB_DATA data, int flags);
TDB_DATA dbwrap_fetch_bystring(struct db_context *db, TALLOC_CTX *mem_ctx,
const char *key);
#endif /* __DBWRAP_H__ */
+p+zޅ>PdNg^@ӸIuTW..<6I0noeŊ{h5&U:`DDh[<"!;QlѴ\4B4l_ ƂtiiW>3ySl)g Ӓ(%ঊ5Hlbhpf
k chM"sY\wdu@2:Wffv18!vT
[Cn5G!6W#N},URiXzqVD6ٟs2P|\6z(HHXnaz߉^!8yY\eX+#ɕbq409o4?C,*f uXW10N'#6$9ťݟQ[T38j=fQe֘ئ'v~IAM+M(d9=˶0"KYͨt+eIO"|mdco8P;G$P4h9qG e0ck}x혷kR۬
67|M<z^d׆8p~*x!B D[=dי?0`)C=z$Hshe]hL "vBs?hyU<3kCmO˄NwrJ|VCg%
I;feOl^Lv YɢPW*T490Waw}04Y̰@ǒBt#&IRf^
yP5
J(XG\~&ow7X4_\'I%.)Y-<(Ɵۘ8YDcW4
'J7AIVH0·gn*@ћV.Sp^ݚ2t6*tH
D3LH/u(L;z*a[*oswV~H7TK+DyQj. Ef2Sc: 8SQsQٍHcU'=G; =vaD]h>ݫ"0`i:5|^gs`wQDwadD
xfuww ŊãY]kF%h˅=V?UPZ5mt!@ʵ}֩dR+Nw^hgɧaiDYJr6kU4` \
DG鼧צ'i._e60wf)ښ!kZ! Z1؞}{)VC3[u$4(:,Oy0Q$,Th,tg*<.|v+!hBX4!3V[Up섳lf0sdxypo5.Im˴#%bDInxnW8]*]10Gw>Ta&]W[qZ*#yH@v" "n b]uhʁ!L=6iTȊSG&+ޘLFYIEB'TE1tb?=7j"UwK. =0u7f/6ݾl(sgrOiy~j3 0?W4r.VO0t<ĩsξ3+ C8 G6>M3
*Pi꿺AaW>PE=T$RF`]o7tG(:VZӯ9X7ڌ=-L=t_#N8czxq簂%
=Sdg ֖kDCXWa96zpOyv|\,xlFYdqs)TG H`9~Ӭݓ MF]i,@4JjV#h)IM>IcmW]ހEFv-u3P\؍}rvֶEӌ6q@ȹ@
O"'ܬ!B9p5Hӝ+`^>fɣPzC ;"_:K@60;V`{|Hs#K*=r//[ͬλ..Nڢ{irz,KoHdcz5*=ZV.ba/SIfo@k߁pp2~W!
c}\]%dD\#OT6Pk} Nb͕)XԳ쫷TL &a[`06&=vrhtˠB /!xrHQ
/re\&
>UH1(pdP|-^5 AY*GKarv`tt/6ʎ]εR6E%
Wr㧠W
3{6\<<4WE|n9PE*kMXVj8O9qO
6⸸2<aax2z4d8
ZFdD^1x-ƢE݅ NϺC]зl]TD!p dם`XFvwN#|r-ԎqoK5@jP&{*>3֛TdRU(BZ\/ P!{Qz
+&s7Sˈx@xUcJ2|tHBy]~.[y8x]R0;gc+:TAVd(I+6M;A
N5;Ivj|2-l8l;f㈡o
8A;Ea4H;Ъ)TBJc2zKDm=65R̖lH{~R@Ux{Lc4&qJ.\1)#mh_鴖G. 䪭zNp0;b8͛T.o|vOD@/ YԤ=M+x"&7B@ @ Nh4Z?:qv#>ƺyPh,eg~еי,b&KbjY0b Ȭ{8;t]`2VOR7y~;-~in ;kJ'd
}m'5[{~m2)ӠXMx)iއbb~\ YhpiJ4Q4bB)AX\ AmHY(J@G٢ʍf2:lD-K]:MͦR;:P>8pmTr8\g xi̸5p]pnAqCg_^̰9wZ!Er*>4X J*_1c mFNT!rlVeBvD<:
p*辟^܌&uF!'HFJ645ݐ<q6vTKNk1tL7lE4zn+%(A)kKPK~atyjEo8.B#1_].U4w#e\FWwc?K]Zž+F{x1k7oq*-gJ