summaryrefslogtreecommitdiff
path: root/source3/include/passdb.h
blob: eb9016aa084b4d559b8e14bddd88a4cd7acda887 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/* 
   Unix SMB/Netbios implementation.
   Version 1.9.
   passdb structures and parameters
   Copyright (C) Gerald Carter 2001
   Copyright (C) Luke Kenneth Casson Leighton 1998 - 2000
   
   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 2 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, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef _PASSDB_H
#define _PASSDB_H

/*
 * This next constant specifies the version number of the VFS interface
 * this smbd will load. Increment this if *ANY* changes are made to the
 * vfs_ops below. JRA.
 */

#define SMB_PASSDB_INTERFACE_VERSION 1

/* passdb operations structure */
struct passdb_ops {

	/* Iteration  Functions*/
	BOOL (*setsampwent) (BOOL update);
	void (*endsampwent) (void);
	SAM_ACCOUNT* (*getsampwent) (void);

	/* Lookup Functions */
	SAM_ACCOUNT* (*getsampwuid) (uid_t uid);
	SAM_ACCOUNT* (*getsampwrid) (uint32 rid);
	SAM_ACOCUNT* (*getsampwnam) (char* username);

	/* Modify the SAM database */
	BOOL (*update_sam_account) (SAM_ACCOUNT* sampass, BOOL override);
	BOOL (*delete_sam_account) (char* username);
	BOOL (*add_sam_account) (SAM_ACCOUNT* sampass);
};

/* uid mapping structure */
struct uidmap_ops {

	/* From NT to UNIX */
	uid_t (*user_rid_to_uid) (uint32 rid);
	gid_t (*group_rid_to_gid) (uint32 rid);

	/* From UNIX to NT */
	uint32 (*uid_to_user_rid) (uid_t uid);
	uint32 (*gid_to_group_rid) (gid_t gid);
};


#endif /* _PASSDB_H */