samr conversion finished!

Luke Kenneth Casson Leighton lkcl at samba.org
Mon Jan 31 01:16:04 GMT 2000


On Mon, 31 Jan 2000, Luke Howard wrote:

> 
> Hi Luke,
> 
> >where lda_struct_info is this:
> >
> >{
> >	LDAP_DB_HND *hnd;
> >	DOM_SID sid;
> >}
> 
> You're very close, it's LDAPDB *hnd :-) Hopefully the LDAPDB API can be
> split off eventually into something useful to other things. At the 
> moment it's got a whole lot of samba-specific stuff, but that may
> change.
> 
> >then you do your ldap-related lda_get_user_info21(ldap_struct->hnd, ...)
> >and that's it!
> 
> So, you want me to deal with SAM_ACCOUNT_INFO & friends directly? 

you damn right i do!  actually, i'm thinking it may be a better idea to
develop a passdb2 api that conforms to this as the API:

/*The following definitions come from  samrd/srv_samr_passdb.c  */

uint32 _samr_close(POLICY_HND *hnd);
uint32 _samr_open_domain(const POLICY_HND *connect_pol,
				uint32 ace_perms,
				const DOM_SID *sid,
				POLICY_HND *domain_pol);
uint32 _samr_unknown_2c(const POLICY_HND *user_pol,
				uint32 *unknown_0,
				uint32 *unknown_1);
uint32 _samr_unknown_3(const POLICY_HND *user_pol, SAM_SID_STUFF *sid_stuff);
uint32 _samr_enum_dom_users(  const POLICY_HND *pol, uint32 *start_idx, 
				uint16 acb_mask, uint16 unk_1, uint32 size,
				SAM_ENTRY **sam,
				UNISTR2 **uni_acct_name,
				uint32 *num_sam_users);
uint32 _samr_add_groupmem(const POLICY_HND *pol, uint32 rid, uint32 unknown);
uint32 _samr_del_groupmem(const POLICY_HND *pol, uint32 rid);
uint32 _samr_add_aliasmem(const POLICY_HND *alias_pol, const DOM_SID *sid);
uint32 _samr_del_aliasmem(const POLICY_HND *alias_pol, const DOM_SID *sid);
uint32 _samr_enum_domains(const POLICY_HND *pol, uint32 *start_idx, 
				uint32 size,
				SAM_ENTRY **sam,
				UNISTR2 **uni_acct_name,
				uint32 *num_sam_users);
uint32 _samr_enum_dom_groups(const POLICY_HND *pol,
				uint32 *start_idx, uint32 size,
				SAM_ENTRY **sam,
				UNISTR2 **uni_acct_name,
				uint32 *num_sam_groups);
uint32 _samr_enum_dom_aliases(const POLICY_HND *pol,
					uint32 *start_idx, uint32 size,
					SAM_ENTRY **sam,
					UNISTR2 **uni_acct_name,
					uint32 *num_sam_aliases);
uint32 _samr_query_dispinfo(  const POLICY_HND *domain_pol, uint16 level,
					uint32 start_idx,
					uint32 max_entries,
					uint32 max_size,
					uint32 *data_size,
					uint32 *num_entries,
					SAM_DISPINFO_CTR *ctr);
uint32 _samr_delete_dom_group(POLICY_HND *group_pol);
uint32 _samr_query_groupmem(const POLICY_HND *group_pol, 
					uint32 *num_mem,
					uint32 **rid,
					uint32 **attr);
uint32 _samr_query_groupinfo(const POLICY_HND *pol,
				uint16 switch_level,
				GROUP_INFO_CTR* ctr);
uint32 _samr_query_aliasinfo(const POLICY_HND *alias_pol,
				uint16 switch_level,
				ALIAS_INFO_CTR *ctr);
uint32 _samr_query_useraliases(const POLICY_HND *pol,
				const uint32 *ptr_sid, const DOM_SID2 *sid,
				uint32 *num_aliases, uint32 **rid);
uint32 _samr_delete_dom_alias(POLICY_HND *alias_pol);
uint32 _samr_query_aliasmem(const POLICY_HND *alias_pol, 
				uint32 *num_mem, DOM_SID2 **sid);
uint32 _samr_lookup_names(const POLICY_HND *pol,
				
			uint32 num_names1,
			uint32 flags,
			uint32 ptr,
			const UNISTR2 *uni_name,

			uint32 *num_rids1,
			uint32 rid[MAX_SAM_ENTRIES],
			uint32 *num_types1,
			uint32 type[MAX_SAM_ENTRIES]);
uint32 _samr_chgpasswd_user( const UNISTR2 *uni_dest_host,
				const UNISTR2 *uni_user_name,
				const char nt_newpass[516],
				const uchar nt_oldhash[16],
				const char lm_newpass[516],
				const uchar lm_oldhash[16]);
uint32 _samr_unknown_38(const UNISTR2 *uni_srv_name,
				uint16 *unk_0, uint16 *unk_1, uint16 *unk_2);
uint32 _samr_lookup_rids(const POLICY_HND *pol, uint32 flags,
					uint32 num_rids, const uint32 *rids,
					uint32 *num_names,
					UNIHDR **hdr_name, UNISTR2** uni_name,
					uint32 **types);
uint32 _samr_open_user(const POLICY_HND *domain_pol,
					uint32 access_mask, uint32 user_rid, 
					POLICY_HND *user_pol);
uint32 _samr_query_userinfo(const POLICY_HND *pol, uint16 switch_value,
				SAM_USERINFO_CTR *ctr);
uint32 _samr_set_userinfo(const POLICY_HND *pol, uint16 switch_value,
				SAM_USERINFO_CTR *ctr);
uint32 _samr_set_userinfo2(const POLICY_HND *pol, uint16 switch_value,
				SAM_USERINFO2_CTR *ctr);
uint32 _samr_query_usergroups(const POLICY_HND *pol,
				uint32 *num_groups,
				DOM_GID **gids);
uint32 _samr_create_dom_alias(const POLICY_HND *domain_pol,
				const UNISTR2 *uni_acct_name,
				uint32 access_mask,
				POLICY_HND *alias_pol, uint32 *rid);
uint32 _samr_create_dom_group(const POLICY_HND *domain_pol,
				const UNISTR2 *uni_acct_name,
				uint32 access_mask,
				POLICY_HND *group_pol, uint32 *rid);
uint32 _samr_query_dom_info(const POLICY_HND *domain_pol, uint16 switch_value, SAM_UNK_CTR *ctr);
uint32 _samr_create_user(const POLICY_HND *domain_pol,
				const UNISTR2 *uni_username,
				uint16 acb_info, uint32 access_mask, 
				POLICY_HND *user_pol,
				uint32 *unknown_0, uint32 *user_rid);
uint32 _samr_connect_anon(const UNISTR2 *srv_name, uint32 access_mask,
				POLICY_HND *connect_pol);
uint32 _samr_connect(const UNISTR2 *srv_name, uint32 access_mask,
				POLICY_HND *connect_pol);
uint32 _samr_open_alias(const POLICY_HND *domain_pol,
					uint32 access_mask, uint32 alias_rid,
					POLICY_HND *alias_pol);
uint32 _samr_open_group(const POLICY_HND *domain_pol, uint32 access_mask,
				uint32 group_rid,
				POLICY_HND *group_pol);
uint32 _samr_lookup_domain(const POLICY_HND *connect_pol,
				const UNISTR2 *uni_domain,
				DOM_SID *dom_sid);


> >do you want to wait until i write samr tdb, or are you going to stick with
> >passdb/*.c groupdb/*.c like you [sensibly] keep telling me?
> 
> Well, I can look at samrd/srv_samr_passdb.c as a starting point, yes? In

i just started srv_samr_tdb.c.




More information about the samba-technical mailing list