summaryrefslogtreecommitdiff
path: root/source3/include/tdbsam2.h
blob: b99e16586ba2514e4c64450ede48b56327016cce (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/*
 * Unix SMB/CIFS implementation. 
 * tdbsam2 genstruct enabled header file
 * Copyright (C) Simo Sorce 2002
 * 
 * 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.
 */

/* ALL strings assumes UTF8 as encoding */

#ifndef TDBSAM2_H
#define TDBSAM2_H

/* IMPORTANT: these structures must follow closely the GUMS_OBJECTs
 * structures as they will be casted over !!
 * the GUMS_OBJECT union is unrolled here into four tdbsam2
 * objects cause genstruct is not able to follow arbitrary unions */

GENSTRUCT struct domain_sub_structure
{
	uint32 next_rid;		/* The Next free RID */
};

GENSTRUCT struct tdbsam2_domain_data
{
	TALLOC_CTX *mem_ctx;

	uint32 type;
	uint32 version;
	uint32 xcounter;		/* counter to be updated at any change */

	SEC_DESC *sec_desc;		/* Security Descriptor */
	
	DOM_SID *dom_sid;		/* The Domain SID */
	char *name; _NULLTERM		/* NT Domain Name */
	char *description; _NULLTERM	/* Descritpion (Gecos) */

	struct domain_sub_structure *dss;
};

GENSTRUCT struct user_sub_structure
{
	DOM_SID *group_sid;		/* The Primary Group SID */

	NTTIME logon_time;
	NTTIME logoff_time;
	NTTIME kickoff_time;
	NTTIME pass_last_set_time;
	NTTIME pass_can_change_time;
	NTTIME pass_must_change_time;
	
	char *full_name; _NULLTERM	/* The Full Name */
	char *home_dir; _NULLTERM	/* Home Directory */
	char *dir_drive; _NULLTERM	/* Drive Letter the home should be mapped to */
	char *logon_script; _NULLTERM	/* Logon script path */
	char *profile_path; _NULLTERM	/* Profile is stored here */
	char *workstations; _NULLTERM	/* List of Workstation names the user is allowed to LogIn */
	char *unknown_str; _NULLTERM	/* Guess ... Unknown */
	char *munged_dial; _NULLTERM	/* Callback Number */

	DATA_BLOB lm_pw;		/* .data is Null if no password */
	DATA_BLOB nt_pw;		/* .data is Null if no password */

	uint16 acct_ctrl;		/* account flags */
	uint16 logon_divs;		/* 168 - num of hours in a week */
	uint32 hours_len;		/* normally 21 */
	uint8 *hours; _LEN(hours_len)	/* normally 21 bytes (depends on hours_len) */

	uint16 bad_password_count;	/* 0 */
	uint16 logon_count;		/* 0 */
	uint32 unknown_3;		/* 0x00ff ffff */
	uint32 unknown_6;		/* 0x0000 04ec */
};

GENSTRUCT struct tdbsam2_user_data
{
	TALLOC_CTX *mem_ctx;

	uint32 type;
	uint32 version;
	uint32 xcounter;		/* counter to be updated at any change */

	SEC_DESC *sec_desc;		/* Security Descriptor */

	DOM_SID *user_sid;		/* The User SID */
	char *name; _NULLTERM		/* NT User Name */
	char *description; _NULLTERM	/* Descritpion (Gecos) */

	struct user_sub_structure *uss;
};

GENSTRUCT struct group_sub_structure
{
	uint32 count;			/* number of sids */
	DOM_SID *members; _LEN(count)	/* SID array */
};

GENSTRUCT struct tdbsam2_group_data
{
	TALLOC_CTX *mem_ctx;

	uint32 type;
	uint32 version;
	uint32 xcounter;		/* counter to be updated at any change */

	SEC_DESC *sec_desc;		/* Security Descriptor */

	DOM_SID *group_sid;		/* The Group SID */
	char *name; _NULLTERM		/* NT Group Name */
	char *description; _NULLTERM	/* Descritpion (Gecos) */

	struct group_sub_structure *gss;
};

GENSTRUCT struct priv_sub_structure
{
	LUID_ATTR *privilege;		/* Privilege */

	uint32 count;			/* number of sids */
	DOM_SID *members; _LEN(count)	/* SID array */
};

GENSTRUCT struct tdbsam2_priv_data
{
	TALLOC_CTX *mem_ctx;

	uint32 type;
	uint32 version;
	uint32 xcounter;		/* counter to be updated at any change */

	DOM_SID *null_sid;
	char *name; _NULLTERM		/* Privilege Name */
	char *description; _NULLTERM	/* Descritpion (Gecos) */

	struct priv_sub_structure *pss;
};

#endif /* TDBSAM2_H */