180a5e23fd6d2d7a5d45117523057cd744a6ee08
[kai/samba.git] / source3 / lib / conn_tdb.h
1 /*
2    Unix SMB/CIFS implementation.
3    Low-level connections.tdb access functions
4    Copyright (C) Volker Lendecke 2007
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 /* key and data in the connections database - used in smbstatus and smbd */
21 struct connections_key {
22         struct server_id pid;
23         int cnum;
24         fstring name;
25 };
26
27 struct connections_data {
28         int magic;
29         struct server_id pid;
30         int cnum;
31         uid_t uid;
32         gid_t gid;
33         char servicename[FSTRING_LEN];
34         char addr[24];
35         char machine[FSTRING_LEN];
36         time_t start;
37
38         /*
39          * This field used to hold the msg_flags. For compatibility reasons,
40          * keep the data structure in the tdb file the same.
41          */
42         uint32 unused_compatitibility_field;
43 };
44
45 /* The following definitions come from lib/conn_tdb.c  */
46
47 struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
48                                           connection_struct *conn,
49                                           const char *name);
50 struct db_record *connections_fetch_entry_ext(TALLOC_CTX *mem_ctx,
51                                               struct server_id id,
52                                               int cnum,
53                                               const char *name);
54 int connections_forall_read(int (*fn)(const struct connections_key *key,
55                                       const struct connections_data *data,
56                                       void *private_data),
57                             void *private_data);
58 bool connections_init(bool rw);