Revert "Fix bug 8196 - Many (newer) header files don't have copyright / GPL header...
[ddiss/samba.git] / source3 / passdb / proto.h
1
2 /* The following definitions come from passdb/account_pol.c  */
3
4 void account_policy_names_list(const char ***names, int *num_names);
5 const char *decode_account_policy_name(enum pdb_policy_type type);
6 const char *get_account_policy_attr(enum pdb_policy_type type);
7 const char *account_policy_get_desc(enum pdb_policy_type type);
8 enum pdb_policy_type account_policy_name_to_typenum(const char *name);
9 bool account_policy_get_default(enum pdb_policy_type type, uint32_t *val);
10 bool init_account_policy(void);
11 bool account_policy_get(enum pdb_policy_type type, uint32_t *value);
12 bool account_policy_set(enum pdb_policy_type type, uint32_t value);
13 bool cache_account_policy_set(enum pdb_policy_type type, uint32_t value);
14 bool cache_account_policy_get(enum pdb_policy_type type, uint32_t *value);
15 struct db_context *get_account_pol_db( void );
16
17 /* The following definitions come from passdb/login_cache.c  */
18
19 bool login_cache_init(void);
20 bool login_cache_shutdown(void);
21 bool login_cache_read(struct samu *sampass, struct login_cache *entry);
22 bool login_cache_write(const struct samu *sampass,
23                        const struct login_cache *entry);
24 bool login_cache_delentry(const struct samu *sampass);
25
26 /* The following definitions come from passdb/passdb.c  */
27
28 const char *my_sam_name(void);
29 struct samu *samu_new( TALLOC_CTX *ctx );
30 NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd);
31 NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd);
32 char *pdb_encode_acct_ctrl(uint32_t acct_ctrl, size_t length);
33 uint32_t pdb_decode_acct_ctrl(const char *p);
34 void pdb_sethexpwd(char p[33], const unsigned char *pwd, uint32_t acct_ctrl);
35 bool pdb_gethexpwd(const char *p, unsigned char *pwd);
36 void pdb_sethexhours(char *p, const unsigned char *hours);
37 bool pdb_gethexhours(const char *p, unsigned char *hours);
38 int algorithmic_rid_base(void);
39 uid_t algorithmic_pdb_user_rid_to_uid(uint32_t user_rid);
40 uid_t max_algorithmic_uid(void);
41 uint32_t algorithmic_pdb_uid_to_user_rid(uid_t uid);
42 gid_t pdb_group_rid_to_gid(uint32_t group_rid);
43 gid_t max_algorithmic_gid(void);
44 uint32_t algorithmic_pdb_gid_to_group_rid(gid_t gid);
45 bool algorithmic_pdb_rid_is_user(uint32_t rid);
46 bool lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
47                             enum lsa_SidType *type);
48 NTSTATUS local_password_change(const char *user_name,
49                                 int local_flags,
50                                 const char *new_passwd,
51                                 char **pp_err_str,
52                                 char **pp_msg_str);
53 bool init_samu_from_buffer(struct samu *sampass, uint32_t level,
54                            uint8_t *buf, uint32_t buflen);
55 uint32_t init_buffer_from_samu (uint8_t **buf, struct samu *sampass, bool size_only);
56 bool pdb_copy_sam_account(struct samu *dst, struct samu *src );
57 bool pdb_update_bad_password_count(struct samu *sampass, bool *updated);
58 bool pdb_update_autolock_flag(struct samu *sampass, bool *updated);
59 bool pdb_increment_bad_password_count(struct samu *sampass);
60 bool is_dc_trusted_domain_situation(const char *domain_name);
61 bool get_trust_pw_clear(const char *domain, char **ret_pwd,
62                         const char **account_name,
63                         enum netr_SchannelType *channel);
64 bool get_trust_pw_hash(const char *domain, uint8_t ret_pwd[16],
65                        const char **account_name,
66                        enum netr_SchannelType *channel);
67
68 /* The following definitions come from passdb/pdb_compat.c  */
69
70 uint32_t pdb_get_user_rid (const struct samu *sampass);
71 uint32_t pdb_get_group_rid (struct samu *sampass);
72 bool pdb_set_user_sid_from_rid (struct samu *sampass, uint32_t rid, enum pdb_value_state flag);
73 bool pdb_set_group_sid_from_rid (struct samu *sampass, uint32_t grid, enum pdb_value_state flag);
74
75 /* The following definitions come from passdb/pdb_get_set.c  */
76
77 uint32_t pdb_get_acct_ctrl(const struct samu *sampass);
78 time_t pdb_get_logon_time(const struct samu *sampass);
79 time_t pdb_get_logoff_time(const struct samu *sampass);
80 time_t pdb_get_kickoff_time(const struct samu *sampass);
81 time_t pdb_get_bad_password_time(const struct samu *sampass);
82 time_t pdb_get_pass_last_set_time(const struct samu *sampass);
83 time_t pdb_get_pass_can_change_time(const struct samu *sampass);
84 time_t pdb_get_pass_can_change_time_noncalc(const struct samu *sampass);
85 time_t pdb_get_pass_must_change_time(const struct samu *sampass);
86 bool pdb_get_pass_can_change(const struct samu *sampass);
87 uint16_t pdb_get_logon_divs(const struct samu *sampass);
88 uint32_t pdb_get_hours_len(const struct samu *sampass);
89 const uint8_t *pdb_get_hours(const struct samu *sampass);
90 const uint8_t *pdb_get_nt_passwd(const struct samu *sampass);
91 const uint8_t *pdb_get_lanman_passwd(const struct samu *sampass);
92 const uint8_t *pdb_get_pw_history(const struct samu *sampass, uint32_t *current_hist_len);
93 const char *pdb_get_plaintext_passwd(const struct samu *sampass);
94 const struct dom_sid *pdb_get_user_sid(const struct samu *sampass);
95 const struct dom_sid *pdb_get_group_sid(struct samu *sampass);
96 enum pdb_value_state pdb_get_init_flags(const struct samu *sampass, enum pdb_elements element);
97 const char *pdb_get_username(const struct samu *sampass);
98 const char *pdb_get_domain(const struct samu *sampass);
99 const char *pdb_get_nt_username(const struct samu *sampass);
100 const char *pdb_get_fullname(const struct samu *sampass);
101 const char *pdb_get_homedir(const struct samu *sampass);
102 const char *pdb_get_dir_drive(const struct samu *sampass);
103 const char *pdb_get_logon_script(const struct samu *sampass);
104 const char *pdb_get_profile_path(const struct samu *sampass);
105 const char *pdb_get_acct_desc(const struct samu *sampass);
106 const char *pdb_get_workstations(const struct samu *sampass);
107 const char *pdb_get_comment(const struct samu *sampass);
108 const char *pdb_get_munged_dial(const struct samu *sampass);
109 uint16_t pdb_get_bad_password_count(const struct samu *sampass);
110 uint16_t pdb_get_logon_count(const struct samu *sampass);
111 uint16_t pdb_get_country_code(const struct samu *sampass);
112 uint16_t pdb_get_code_page(const struct samu *sampass);
113 uint32_t pdb_get_unknown_6(const struct samu *sampass);
114 void *pdb_get_backend_private_data(const struct samu *sampass, const struct pdb_methods *my_methods);
115 bool pdb_set_acct_ctrl(struct samu *sampass, uint32_t acct_ctrl, enum pdb_value_state flag);
116 bool pdb_set_logon_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
117 bool pdb_set_logoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
118 bool pdb_set_kickoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
119 bool pdb_set_bad_password_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
120 bool pdb_set_pass_can_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
121 bool pdb_set_pass_must_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
122 bool pdb_set_pass_last_set_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag);
123 bool pdb_set_hours_len(struct samu *sampass, uint32_t len, enum pdb_value_state flag);
124 bool pdb_set_logon_divs(struct samu *sampass, uint16_t hours, enum pdb_value_state flag);
125 bool pdb_set_init_flags(struct samu *sampass, enum pdb_elements element, enum pdb_value_state value_flag);
126 bool pdb_set_user_sid(struct samu *sampass, const struct dom_sid *u_sid, enum pdb_value_state flag);
127 bool pdb_set_user_sid_from_string(struct samu *sampass, fstring u_sid, enum pdb_value_state flag);
128 bool pdb_set_group_sid(struct samu *sampass, const struct dom_sid *g_sid, enum pdb_value_state flag);
129 bool pdb_set_username(struct samu *sampass, const char *username, enum pdb_value_state flag);
130 bool pdb_set_domain(struct samu *sampass, const char *domain, enum pdb_value_state flag);
131 bool pdb_set_nt_username(struct samu *sampass, const char *nt_username, enum pdb_value_state flag);
132 bool pdb_set_fullname(struct samu *sampass, const char *full_name, enum pdb_value_state flag);
133 bool pdb_set_logon_script(struct samu *sampass, const char *logon_script, enum pdb_value_state flag);
134 bool pdb_set_profile_path(struct samu *sampass, const char *profile_path, enum pdb_value_state flag);
135 bool pdb_set_dir_drive(struct samu *sampass, const char *dir_drive, enum pdb_value_state flag);
136 bool pdb_set_homedir(struct samu *sampass, const char *home_dir, enum pdb_value_state flag);
137 bool pdb_set_acct_desc(struct samu *sampass, const char *acct_desc, enum pdb_value_state flag);
138 bool pdb_set_workstations(struct samu *sampass, const char *workstations, enum pdb_value_state flag);
139 bool pdb_set_comment(struct samu *sampass, const char *comment, enum pdb_value_state flag);
140 bool pdb_set_munged_dial(struct samu *sampass, const char *munged_dial, enum pdb_value_state flag);
141 bool pdb_set_nt_passwd(struct samu *sampass, const uint8_t pwd[NT_HASH_LEN], enum pdb_value_state flag);
142 bool pdb_set_lanman_passwd(struct samu *sampass, const uint8_t pwd[LM_HASH_LEN], enum pdb_value_state flag);
143 bool pdb_set_pw_history(struct samu *sampass, const uint8_t *pwd, uint32_t historyLen, enum pdb_value_state flag);
144 bool pdb_set_plaintext_pw_only(struct samu *sampass, const char *password, enum pdb_value_state flag);
145 bool pdb_set_bad_password_count(struct samu *sampass, uint16_t bad_password_count, enum pdb_value_state flag);
146 bool pdb_set_logon_count(struct samu *sampass, uint16_t logon_count, enum pdb_value_state flag);
147 bool pdb_set_country_code(struct samu *sampass, uint16_t country_code,
148                           enum pdb_value_state flag);
149 bool pdb_set_code_page(struct samu *sampass, uint16_t code_page,
150                        enum pdb_value_state flag);
151 bool pdb_set_unknown_6(struct samu *sampass, uint32_t unkn, enum pdb_value_state flag);
152 bool pdb_set_hours(struct samu *sampass, const uint8 *hours, int hours_len,
153                    enum pdb_value_state flag);
154 bool pdb_set_backend_private_data(struct samu *sampass, void *private_data,
155                                    void (*free_fn)(void **),
156                                    const struct pdb_methods *my_methods,
157                                    enum pdb_value_state flag);
158 bool pdb_set_pass_can_change(struct samu *sampass, bool canchange);
159 bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext);
160 uint32_t pdb_build_fields_present(struct samu *sampass);
161
162 /* The following definitions come from passdb/pdb_interface.c  */
163
164 NTSTATUS smb_register_passdb(int version, const char *name, pdb_init_function init) ;
165 struct pdb_init_function_entry *pdb_find_backend_entry(const char *name);
166 struct event_context *pdb_get_event_context(void);
167 NTSTATUS make_pdb_method_name(struct pdb_methods **methods, const char *selected);
168 struct pdb_domain_info *pdb_get_domain_info(TALLOC_CTX *mem_ctx);
169 bool pdb_getsampwnam(struct samu *sam_acct, const char *username) ;
170 bool pdb_getsampwsid(struct samu *sam_acct, const struct dom_sid *sid) ;
171 NTSTATUS pdb_create_user(TALLOC_CTX *mem_ctx, const char *name, uint32_t flags,
172                          uint32_t *rid);
173 NTSTATUS pdb_delete_user(TALLOC_CTX *mem_ctx, struct samu *sam_acct);
174 NTSTATUS pdb_add_sam_account(struct samu *sam_acct) ;
175 NTSTATUS pdb_update_sam_account(struct samu *sam_acct) ;
176 NTSTATUS pdb_delete_sam_account(struct samu *sam_acct) ;
177 NTSTATUS pdb_rename_sam_account(struct samu *oldname, const char *newname);
178 NTSTATUS pdb_update_login_attempts(struct samu *sam_acct, bool success);
179 bool pdb_getgrsid(GROUP_MAP *map, struct dom_sid sid);
180 bool pdb_getgrgid(GROUP_MAP *map, gid_t gid);
181 bool pdb_getgrnam(GROUP_MAP *map, const char *name);
182 NTSTATUS pdb_create_dom_group(TALLOC_CTX *mem_ctx, const char *name,
183                               uint32_t *rid);
184 NTSTATUS pdb_delete_dom_group(TALLOC_CTX *mem_ctx, uint32_t rid);
185 NTSTATUS pdb_add_group_mapping_entry(GROUP_MAP *map);
186 NTSTATUS pdb_update_group_mapping_entry(GROUP_MAP *map);
187 NTSTATUS pdb_delete_group_mapping_entry(struct dom_sid sid);
188 bool pdb_enum_group_mapping(const struct dom_sid *sid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap,
189                             size_t *p_num_entries, bool unix_only);
190 NTSTATUS pdb_enum_group_members(TALLOC_CTX *mem_ctx,
191                                 const struct dom_sid *sid,
192                                 uint32_t **pp_member_rids,
193                                 size_t *p_num_members);
194 NTSTATUS pdb_enum_group_memberships(TALLOC_CTX *mem_ctx, struct samu *user,
195                                     struct dom_sid **pp_sids, gid_t **pp_gids,
196                                     uint32_t *p_num_groups);
197 NTSTATUS pdb_set_unix_primary_group(TALLOC_CTX *mem_ctx, struct samu *user);
198 NTSTATUS pdb_add_groupmem(TALLOC_CTX *mem_ctx, uint32_t group_rid,
199                           uint32_t member_rid);
200 NTSTATUS pdb_del_groupmem(TALLOC_CTX *mem_ctx, uint32_t group_rid,
201                           uint32_t member_rid);
202 NTSTATUS pdb_create_alias(const char *name, uint32_t *rid);
203 NTSTATUS pdb_delete_alias(const struct dom_sid *sid);
204 NTSTATUS pdb_get_aliasinfo(const struct dom_sid *sid, struct acct_info *info);
205 NTSTATUS pdb_set_aliasinfo(const struct dom_sid *sid, struct acct_info *info);
206 NTSTATUS pdb_add_aliasmem(const struct dom_sid *alias, const struct dom_sid *member);
207 NTSTATUS pdb_del_aliasmem(const struct dom_sid *alias, const struct dom_sid *member);
208 NTSTATUS pdb_enum_aliasmem(const struct dom_sid *alias, TALLOC_CTX *mem_ctx,
209                            struct dom_sid **pp_members, size_t *p_num_members);
210 NTSTATUS pdb_enum_alias_memberships(TALLOC_CTX *mem_ctx,
211                                     const struct dom_sid *domain_sid,
212                                     const struct dom_sid *members, size_t num_members,
213                                     uint32_t **pp_alias_rids,
214                                     size_t *p_num_alias_rids);
215 NTSTATUS pdb_lookup_rids(const struct dom_sid *domain_sid,
216                          int num_rids,
217                          uint32_t *rids,
218                          const char **names,
219                          enum lsa_SidType *attrs);
220 NTSTATUS pdb_lookup_names(const struct dom_sid *domain_sid,
221                           int num_names,
222                           const char **names,
223                           uint32_t *rids,
224                           enum lsa_SidType *attrs);
225 bool pdb_get_account_policy(enum pdb_policy_type type, uint32_t *value);
226 bool pdb_set_account_policy(enum pdb_policy_type type, uint32_t value);
227 bool pdb_get_seq_num(time_t *seq_num);
228 bool pdb_uid_to_sid(uid_t uid, struct dom_sid *sid);
229 bool pdb_gid_to_sid(gid_t gid, struct dom_sid *sid);
230 bool pdb_sid_to_id(const struct dom_sid *sid, union unid_t *id,
231                    enum lsa_SidType *type);
232 uint32_t pdb_capabilities(void);
233 bool pdb_new_rid(uint32_t *rid);
234 bool initialize_password_db(bool reload, struct event_context *event_ctx);
235 struct pdb_search *pdb_search_init(TALLOC_CTX *mem_ctx,
236                                    enum pdb_search_type type);
237 struct pdb_search *pdb_search_users(TALLOC_CTX *mem_ctx, uint32_t acct_flags);
238 struct pdb_search *pdb_search_groups(TALLOC_CTX *mem_ctx);
239 struct pdb_search *pdb_search_aliases(TALLOC_CTX *mem_ctx, const struct dom_sid *sid);
240 uint32_t pdb_search_entries(struct pdb_search *search,
241                           uint32_t start_idx, uint32_t max_entries,
242                           struct samr_displayentry **result);
243 bool pdb_get_trusteddom_pw(const char *domain, char** pwd, struct dom_sid *sid,
244                            time_t *pass_last_set_time);
245 bool pdb_set_trusteddom_pw(const char* domain, const char* pwd,
246                            const struct dom_sid *sid);
247 bool pdb_del_trusteddom_pw(const char *domain);
248 NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
249                               struct trustdom_info ***domains);
250 NTSTATUS pdb_get_trusted_domain(TALLOC_CTX *mem_ctx, const char *domain,
251                                 struct pdb_trusted_domain **td);
252 NTSTATUS pdb_get_trusted_domain_by_sid(TALLOC_CTX *mem_ctx, struct dom_sid *sid,
253                                 struct pdb_trusted_domain **td);
254 NTSTATUS pdb_set_trusted_domain(const char* domain,
255                                 const struct pdb_trusted_domain *td);
256 NTSTATUS pdb_del_trusted_domain(const char *domain);
257 NTSTATUS pdb_enum_trusted_domains(TALLOC_CTX *mem_ctx, uint32_t *num_domains,
258                                   struct pdb_trusted_domain ***domains);
259 NTSTATUS make_pdb_method( struct pdb_methods **methods ) ;
260
261 /* The following definitions come from passdb/pdb_ldap.c  */
262
263 const char** get_userattr_list( TALLOC_CTX *mem_ctx, int schema_ver );
264 NTSTATUS pdb_init_ldapsam_compat(struct pdb_methods **pdb_method, const char *location);
265 NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location);
266 NTSTATUS pdb_ldap_init(void);
267
268 /* The following definitions come from passdb/pdb_nds.c  */
269
270 struct smbldap_state;
271
272 int pdb_nds_get_password(
273         struct smbldap_state *ldap_state,
274         char *object_dn,
275         size_t *pwd_len,
276         char *pwd );
277 int pdb_nds_set_password(
278         struct smbldap_state *ldap_state,
279         char *object_dn,
280         const char *pwd );
281 NTSTATUS pdb_nds_init(void);
282
283 /* The following definitions come from passdb/pdb_nds.c  */
284
285 NTSTATUS pdb_ipa_init(void);
286
287 /* The following definitions come from passdb/pdb_smbpasswd.c  */
288
289 NTSTATUS pdb_smbpasswd_init(void) ;
290
291 /* The following definitions come from passdb/pdb_wbc_sam.c  */
292
293 NTSTATUS pdb_wbc_sam_init(void);
294
295 /* The following definitions come from passdb/pdb_tdb.c  */
296
297 NTSTATUS pdb_tdbsam_init(void);
298
299 /* The following definitions come from passdb/pdb_util.c  */
300
301 NTSTATUS create_builtin_users(const struct dom_sid *sid);
302 NTSTATUS create_builtin_administrators(const struct dom_sid *sid);