attributes and a user SID.
*********************************************************************/
-static NTSTATUS samu_set_unix_internal(struct samu *user, const struct passwd *pwd, bool create)
+static NTSTATUS samu_set_unix_internal(struct pdb_methods *methods,
+ struct samu *user, const struct passwd *pwd, bool create)
{
const char *guest_account = lp_guestaccount();
const char *domain = lp_netbios_name();
initialized and will fill in these fields later (such as from a
netr_SamInfo3 structure) */
- if ( create && (pdb_capabilities() & PDB_CAP_STORE_RIDS)) {
+ if ( create && (methods->capabilities(methods) & PDB_CAP_STORE_RIDS)) {
uint32_t user_rid;
struct dom_sid user_sid;
- if ( !pdb_new_rid( &user_rid ) ) {
+ if ( !methods->new_rid(methods, &user_rid) ) {
DEBUG(3, ("Could not allocate a new RID\n"));
return NT_STATUS_ACCESS_DENIED;
}
NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd)
{
- return samu_set_unix_internal( user, pwd, False );
+ return samu_set_unix_internal( NULL, user, pwd, False );
}
-NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd)
+NTSTATUS samu_alloc_rid_unix(struct pdb_methods *methods,
+ struct samu *user, const struct passwd *pwd)
{
- return samu_set_unix_internal( user, pwd, True );
+ return samu_set_unix_internal( methods, user, pwd, True );
}
/**********************************************************
/* we have a valid SID coming out of this call */
- status = samu_alloc_rid_unix( sam_pass, pwd );
+ status = samu_alloc_rid_unix(methods, sam_pass, pwd);
TALLOC_FREE( pwd );
pdb_set_acct_ctrl(sam_pass, acb_info, PDB_CHANGED);
- status = pdb_add_sam_account(sam_pass);
+ status = methods->add_sam_account(methods, sam_pass);
TALLOC_FREE(sam_pass);
NTSTATUS status;
fstring username;
- status = pdb_delete_sam_account(sam_acct);
+ memcache_flush(NULL, PDB_GETPWSID_CACHE);
+
+ status = methods->delete_sam_account(methods, sam_acct);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
const char *my_sam_name(void);
struct samu *samu_new( TALLOC_CTX *ctx );
NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd);
-NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd);
+NTSTATUS samu_alloc_rid_unix(struct pdb_methods *methods,
+ struct samu *user, const struct passwd *pwd);
char *pdb_encode_acct_ctrl(uint32_t acct_ctrl, size_t length);
uint32_t pdb_decode_acct_ctrl(const char *p);
void pdb_sethexpwd(char p[33], const unsigned char *pwd, uint32_t acct_ctrl);