Re: [PATCH] group control bits ....
On Wed, Sep 11, 2002 at 08:27:21AM +0200, Stefan (metze) Metzmacher wrote about 'Re: [PATCH] group control bits ': > At 23:29 10.09.2002 +0200, Jelmer Vernooij wrote: > >On Fri, Sep 06, 2002 at 09:45:06AM +0200, Stefan (metze) Metzmacher wrote > >about 'Re: [PATCH] group control bits ': > >> >> -NTSTATUS sam_skel_get_groups_of_account(const struct sam_methods > >> >*sam_method, const SAM_ACCOUNT_HANDLE *account, const uint32 type, > >uint32 > >> >*group_count, SAM_GROUP_ENUM **groups) > >> >> +NTSTATUS sam_skel_get_groups_of_sid(const struct sam_methods > >> >*sam_method, > >> >const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint32 > >type, > >> >uint32 *group_count, SAM_GROUP_ENUM **groups) > >> >you forgott to change the const uint32 type to uint16 group_ctrl > >> I fixed that :-) > >> I also change 'struct sam_methods' -> 'SAM_METHODS' in sam_skel.c > >> I also change the prototypes of sam_create_account ,sam_create_group > >> and set SAM_INTERFACE_VERSION 0 until we have a stable interface:-) > >Just to let you know - this patch is still in my patchqueue... > I think abartlet has allready applied it, with a few changes :-) Oops, silly me :-) Jelmer -- Jelmer Vernooij <[EMAIL PROTECTED]> - http://nl.linux.org/~jelmer/ Development And Underdevelopment: http://library.thinkquest.org/C0110231/ Listening to Radio 3FM 14:51:17 up 7:42, 4 users, load average: 0.08, 0.03, 0.01
Re: [PATCH] group control bits ....
At 23:29 10.09.2002 +0200, Jelmer Vernooij wrote: >On Fri, Sep 06, 2002 at 09:45:06AM +0200, Stefan (metze) Metzmacher wrote >about 'Re: [PATCH] group control bits ': > > > >> -NTSTATUS sam_skel_get_groups_of_account(const struct sam_methods > > >*sam_method, const SAM_ACCOUNT_HANDLE *account, const uint32 type, uint32 > > >*group_count, SAM_GROUP_ENUM **groups) > > >> +NTSTATUS sam_skel_get_groups_of_sid(const struct sam_methods > > >*sam_method, > > >const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint32 > type, > > >uint32 *group_count, SAM_GROUP_ENUM **groups) > > > >you forgott to change the const uint32 type to uint16 group_ctrl > > > I fixed that :-) > > > I also change 'struct sam_methods' -> 'SAM_METHODS' in sam_skel.c > > > I also change the prototypes of sam_create_account ,sam_create_group > > > and set SAM_INTERFACE_VERSION 0 until we have a stable interface:-) > >Just to let you know - this patch is still in my patchqueue... I think abartlet has allready applied it, with a few changes :-) see: http://lists.samba.org/pipermail/samba-cvs/2002-September/076096.html http://lists.samba.org/pipermail/samba-cvs/2002-September/076097.html http://lists.samba.org/pipermail/samba-cvs/2002-September/076098.html http://lists.samba.org/pipermail/samba-cvs/2002-September/076099.html http://lists.samba.org/pipermail/samba-cvs/2002-September/076100.html metze - Stefan "metze" Metzmacher <[EMAIL PROTECTED]>
Re: [PATCH] group control bits ....
On Fri, Sep 06, 2002 at 09:45:06AM +0200, Stefan (metze) Metzmacher wrote about 'Re: [PATCH] group control bits ': > >> -NTSTATUS sam_skel_get_groups_of_account(const struct sam_methods > >*sam_method, const SAM_ACCOUNT_HANDLE *account, const uint32 type, uint32 > >*group_count, SAM_GROUP_ENUM **groups) > >> +NTSTATUS sam_skel_get_groups_of_sid(const struct sam_methods > >*sam_method, > >const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint32 type, > >uint32 *group_count, SAM_GROUP_ENUM **groups) > >you forgott to change the const uint32 type to uint16 group_ctrl > I fixed that :-) > I also change 'struct sam_methods' -> 'SAM_METHODS' in sam_skel.c > I also change the prototypes of sam_create_account ,sam_create_group > and set SAM_INTERFACE_VERSION 0 until we have a stable interface:-) Just to let you know - this patch is still in my patchqueue... Jelmer
Re: [PATCH] group control bits ....
> > > > > -NTSTATUS sam_skel_get_groups_of_account(const struct sam_methods >*sam_method, const SAM_ACCOUNT_HANDLE *account, const uint32 type, uint32 >*group_count, SAM_GROUP_ENUM **groups) > > +NTSTATUS sam_skel_get_groups_of_sid(const struct sam_methods *sam_method, >const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint32 type, >uint32 *group_count, SAM_GROUP_ENUM **groups) > >you forgott to change the const uint32 type to uint16 group_ctrl I fixed that :-) I also change 'struct sam_methods' -> 'SAM_METHODS' in sam_skel.c I also change the prototypes of sam_create_account ,sam_create_group and set SAM_INTERFACE_VERSION 0 until we have a stable interface:-) metze - Stefan "metze" Metzmacher <[EMAIL PROTECTED]> diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=.#* HEAD/source/sam/api.c HEAD-fix/source/sam/api.c --- HEAD/source/sam/api.c Thu Aug 29 09:19:05 2002 +++ HEAD-fix/source/sam/api.c Fri Sep 6 08:10:46 2002 @@ -1,7 +1,7 @@ /* Unix SMB/CIFS implementation. SAM interface API. - + Copyright (C) Stefan (metze) Metzmacher 2002 This program is free software; you can redistribute it and/or modify @@ -120,7 +120,7 @@ NTSTATUS sam_get_domain_by_sid(const NT_ /* Account API */ -NTSTATUS sam_create_account(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *domainsid, SAM_ACCOUNT_HANDLE **account) +NTSTATUS sam_create_account(const NT_USER_TOKEN *access_token, const uint32 +access_desired, const DOM_SID *domainsid, const char *account_name, uint16 acct_ctrl, +SAM_ACCOUNT_HANDLE **account) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -128,7 +128,7 @@ NTSTATUS sam_create_account(const NT_USE return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_create_account(sam_context, access_token, access_desired, domainsid, account); + return sam_context->sam_create_account(sam_context, access_token, +access_desired, domainsid, account_name, acct_ctrl, account); } NTSTATUS sam_add_account(const DOM_SID *domainsid, const SAM_ACCOUNT_HANDLE *account) @@ -164,7 +164,7 @@ NTSTATUS sam_delete_account(const SAM_AC return sam_context->sam_delete_account(sam_context, account); } -NTSTATUS sam_enum_accounts(const NT_USER_TOKEN *access_token, const DOM_SID *domain, int32 *account_count, SAM_ACCOUNT_ENUM **accounts) +NTSTATUS sam_enum_accounts(const NT_USER_TOKEN *access_token, const DOM_SID *domain, +uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -172,7 +172,7 @@ NTSTATUS sam_enum_accounts(const NT_USER return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_enum_accounts(sam_context, access_token, domain, account_count, accounts); + return sam_context->sam_enum_accounts(sam_context, access_token, domain, +acct_ctrl, account_count, accounts); } NTSTATUS sam_get_account_by_sid(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account) @@ -199,6 +199,17 @@ NTSTATUS sam_get_account_by_name(const N /* Group API */ +NTSTATUS sam_create_group(const NT_USER_TOKEN *access_token, const uint32 +access_desired, const DOM_SID *domainsid, const char *group_name, uint16 group_ctrl, +SAM_GROUP_HANDLE **group) +{ + SAM_CONTEXT *sam_context = sam_get_static_context(False); + + if (!sam_context) { + return NT_STATUS_UNSUCCESSFUL; + } + + return sam_context->sam_create_group(sam_context, access_token, +access_desired, domainsid, group_name, group_ctrl, group); +} + NTSTATUS sam_add_group(const DOM_SID *domainsid, const SAM_GROUP_HANDLE *group) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -232,7 +243,7 @@ NTSTATUS sam_delete_group(const SAM_GROU return sam_context->sam_delete_group(sam_context, group); } -NTSTATUS sam_enum_groups(const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, const uint32 type, uint32 *groups_count, SAM_GROUP_ENUM **groups) +NTSTATUS sam_enum_groups(const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, +uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -240,7 +251,7 @@ NTSTATUS sam_enum_groups(const NT_USER_T return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_enum_groups(sam_context, access_token, domainsid, type, groups_count, groups); + return sam_context->sam_enum_groups(sam_context, access_token, domainsid, +group_ctrl, groups_count, groups); } NTSTATUS sam_get_group_by_sid(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **
Re: [PATCH] group control bits ....
- Original Message - From: "Stefan (metze) Metzmacher" <[EMAIL PROTECTED]> To: "Jelmer Vernooij" <[EMAIL PROTECTED]>; "Andrew Bartlett" <[EMAIL PROTECTED]>; "Kai Krueger" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Thursday, September 05, 2002 7:39 PM Subject: [PATCH] group control bits ... > diff -Npur --exclude=CVS --exclude=*.bak --exclude=*.o --exclude=.#* HEAD/examples/sam/sam_skel.c HEAD-fix/examples/sam/sam_skel.c > --- HEAD/examples/sam/sam_skel.c Sat Aug 31 15:36:26 2002 > +++ HEAD-fix/examples/sam/sam_skel.c Thu Sep 5 19:37:18 2002 > @@ -183,7 +183,7 @@ NTSTATUS sam_skel_enum_groupmembers(cons > } > > > -NTSTATUS sam_skel_get_groups_of_account(const struct sam_methods *sam_method, const SAM_ACCOUNT_HANDLE *account, const uint32 type, uint32 *group_count, SAM_GROUP_ENUM **groups) > +NTSTATUS sam_skel_get_groups_of_sid(const struct sam_methods *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint32 type, uint32 *group_count, SAM_GROUP_ENUM **groups) you forgott to change the const uint32 type to uint16 group_ctrl > { > DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__)); > return NT_STATUS_NOT_IMPLEMENTED; > @@ -238,7 +238,7 @@ NTSTATUS sam_init(const SAM_CONTEXT *sam > (*sam_method)->sam_delete_member_from_group = sam_skel_delete_member_from_group; > (*sam_method)->sam_enum_groupmembers = sam_skel_enum_groupmembers; > > - (*sam_method)->sam_get_groups_of_account = sam_skel_get_groups_of_account; > + (*sam_method)->sam_get_groups_of_sid = sam_skel_get_groups_of_sid; > > (*sam_method)->free_private_data = NULL; > > Other than that, I think the patch is good and imho should be checked in if it compiles. Kai
[PATCH] group control bits ....
Attach the file :-) ...I go to bed now! Hi Jelmer, Andrew, Kai, here's a patch witch : add uint16 group_ctrl; to SAM_GROUP_HANDLE and SAM_GROUP_ENUM change the sam_enum_accounts and sam_enum_groups to use acct_ctrl or group_ctrl. and remove the uint32 tpye from sam_get_groups_of_account (I don't see the need of them:-) I also change name to group_name and comment to group_desc to make it like accout_name and account_desc And add a lot of const to get_set_* Add group.c like account.c I've change NTSTATUS sam_get_groups_of_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups) and change sam_skel.c metze - Stefan "metze" Metzmacher <[EMAIL PROTECTED]> diff -Npur --exclude=CVS HEAD/source/sam/api.c HEAD-fix/source/sam/api.c --- HEAD/source/sam/api.c Thu Aug 29 09:19:05 2002 +++ HEAD-fix/source/sam/api.c Thu Sep 5 15:45:29 2002 @@ -164,7 +164,7 @@ NTSTATUS sam_delete_account(const SAM_AC return sam_context->sam_delete_account(sam_context, account); } -NTSTATUS sam_enum_accounts(const NT_USER_TOKEN *access_token, const DOM_SID *domain, int32 *account_count, SAM_ACCOUNT_ENUM **accounts) +NTSTATUS sam_enum_accounts(const NT_USER_TOKEN *access_token, const DOM_SID *domain, +const uint16 acct_ctrl, int32 *account_count, SAM_ACCOUNT_ENUM **accounts) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -172,7 +172,7 @@ NTSTATUS sam_enum_accounts(const NT_USER return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_enum_accounts(sam_context, access_token, domain, account_count, accounts); + return sam_context->sam_enum_accounts(sam_context, access_token, domain, +acct_ctrl, account_count, accounts); } NTSTATUS sam_get_account_by_sid(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account) @@ -232,7 +232,7 @@ NTSTATUS sam_delete_group(const SAM_GROU return sam_context->sam_delete_group(sam_context, group); } -NTSTATUS sam_enum_groups(const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, const uint32 type, uint32 *groups_count, SAM_GROUP_ENUM **groups) +NTSTATUS sam_enum_groups(const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, +const uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -240,7 +240,7 @@ NTSTATUS sam_enum_groups(const NT_USER_T return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_enum_groups(sam_context, access_token, domainsid, type, groups_count, groups); + return sam_context->sam_enum_groups(sam_context, access_token, domainsid, +group_ctrl, groups_count, groups); } NTSTATUS sam_get_group_by_sid(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group) @@ -298,7 +298,7 @@ NTSTATUS sam_enum_groupmembers(const SAM return sam_context->sam_enum_groupmembers(sam_context, group, members_count, members); } -NTSTATUS sam_get_groups_of_account(const SAM_ACCOUNT_HANDLE *account, const uint32 type, uint32 *group_count, SAM_GROUP_ENUM **groups) +NTSTATUS sam_get_groups_of_sid(const NT_USER_TOKEN *access_token, const DOM_SID +**sids, const uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -306,6 +306,6 @@ NTSTATUS sam_get_groups_of_account(const return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_get_groups_of_account(sam_context, account, type, group_count, groups); + return sam_context->sam_get_groups_of_sid(sam_context, access_token, sids, +group_ctrl, group_count, groups); } diff -Npur --exclude=CVS HEAD/source/sam/get_set_account.c HEAD-fix/source/sam/get_set_account.c --- HEAD/source/sam/get_set_account.c Thu Aug 29 09:19:05 2002 +++ HEAD-fix/source/sam/get_set_account.c Thu Sep 5 03:27:40 2002 @@ -355,7 +355,7 @@ NTSTATUS sam_get_account_unknown_3(const Collection of set...() functions for SAM_ACCOUNT_HANDLE_INFO. / -NTSTATUS sam_set_account_acct_ctrl(SAM_ACCOUNT_HANDLE *sampass, uint16 flags) +NTSTATUS sam_set_account_acct_ctrl(SAM_ACCOUNT_HANDLE *sampass, const uint16 flags) { if (!sampass) return NT_STATUS_UNSUCCESSFUL; @@ -365,7 +365,7 @@ NTSTATUS sam_set_account_acct_ctrl(SAM_A return NT_STATUS_OK; } -NTSTATUS sam_set_account_logon_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store) +NTSTATUS sam_set_account_logon_time(SAM_ACCOUNT_HANDLE *sampass, const NTTIME mytime, +const BOOL store) { if (!sampass) return NT_STATUS_UNSUCCES
[PATCH] group control bits ....
Attach the file :-) ...I go to bed now! Hi Jelmer, Andrew, Kai, here's a patch witch : add uint16 group_ctrl; to SAM_GROUP_HANDLE and SAM_GROUP_ENUM change the sam_enum_accounts and sam_enum_groups to use acct_ctrl or group_ctrl. and remove the uint32 tpye from sam_get_groups_of_account (I don't see the need of them:-) I also change name to group_name and comment to group_desc to make it like accout_name and account_desc And add a lot of const to get_set_* Add group.c like account.c I've change NTSTATUS sam_get_groups_of_sid(const SAM_CONTEXT *context, const DOM_SID **sids, const uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups) metze - Stefan "metze" Metzmacher <[EMAIL PROTECTED]> diff -Npur --exclude=CVS HEAD/source/sam/api.c HEAD-fix/source/sam/api.c --- HEAD/source/sam/api.c Thu Aug 29 09:19:05 2002 +++ HEAD-fix/source/sam/api.c Thu Sep 5 15:45:29 2002 @@ -164,7 +164,7 @@ NTSTATUS sam_delete_account(const SAM_AC return sam_context->sam_delete_account(sam_context, account); } -NTSTATUS sam_enum_accounts(const NT_USER_TOKEN *access_token, const DOM_SID *domain, int32 *account_count, SAM_ACCOUNT_ENUM **accounts) +NTSTATUS sam_enum_accounts(const NT_USER_TOKEN *access_token, const DOM_SID *domain, +const uint16 acct_ctrl, int32 *account_count, SAM_ACCOUNT_ENUM **accounts) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -172,7 +172,7 @@ NTSTATUS sam_enum_accounts(const NT_USER return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_enum_accounts(sam_context, access_token, domain, account_count, accounts); + return sam_context->sam_enum_accounts(sam_context, access_token, domain, +acct_ctrl, account_count, accounts); } NTSTATUS sam_get_account_by_sid(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account) @@ -232,7 +232,7 @@ NTSTATUS sam_delete_group(const SAM_GROU return sam_context->sam_delete_group(sam_context, group); } -NTSTATUS sam_enum_groups(const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, const uint32 type, uint32 *groups_count, SAM_GROUP_ENUM **groups) +NTSTATUS sam_enum_groups(const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, +const uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -240,7 +240,7 @@ NTSTATUS sam_enum_groups(const NT_USER_T return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_enum_groups(sam_context, access_token, domainsid, type, groups_count, groups); + return sam_context->sam_enum_groups(sam_context, access_token, domainsid, +group_ctrl, groups_count, groups); } NTSTATUS sam_get_group_by_sid(const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group) @@ -298,7 +298,7 @@ NTSTATUS sam_enum_groupmembers(const SAM return sam_context->sam_enum_groupmembers(sam_context, group, members_count, members); } -NTSTATUS sam_get_groups_of_account(const SAM_ACCOUNT_HANDLE *account, const uint32 type, uint32 *group_count, SAM_GROUP_ENUM **groups) +NTSTATUS sam_get_groups_of_sid(const DOM_SID **sids, const uint16 group_ctrl, uint32 +*group_count, SAM_GROUP_ENUM **groups) { SAM_CONTEXT *sam_context = sam_get_static_context(False); @@ -306,6 +306,6 @@ NTSTATUS sam_get_groups_of_account(const return NT_STATUS_UNSUCCESSFUL; } - return sam_context->sam_get_groups_of_account(sam_context, account, type, group_count, groups); + return sam_context->sam_get_groups_of_sid(sam_context, sids, group_ctrl, +group_count, groups); } diff -Npur --exclude=CVS HEAD/source/sam/get_set_account.c HEAD-fix/source/sam/get_set_account.c --- HEAD/source/sam/get_set_account.c Thu Aug 29 09:19:05 2002 +++ HEAD-fix/source/sam/get_set_account.c Thu Sep 5 03:27:40 2002 @@ -355,7 +355,7 @@ NTSTATUS sam_get_account_unknown_3(const Collection of set...() functions for SAM_ACCOUNT_HANDLE_INFO. / -NTSTATUS sam_set_account_acct_ctrl(SAM_ACCOUNT_HANDLE *sampass, uint16 flags) +NTSTATUS sam_set_account_acct_ctrl(SAM_ACCOUNT_HANDLE *sampass, const uint16 flags) { if (!sampass) return NT_STATUS_UNSUCCESSFUL; @@ -365,7 +365,7 @@ NTSTATUS sam_set_account_acct_ctrl(SAM_A return NT_STATUS_OK; } -NTSTATUS sam_set_account_logon_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store) +NTSTATUS sam_set_account_logon_time(SAM_ACCOUNT_HANDLE *sampass, const NTTIME mytime, +const BOOL store) { if (!sampass) return NT_STATUS_UNSUCCESSFUL; @@ -378,7 +378,7 @@ NTSTATUS sam_set_account_logon_time(SAM_ return NT_STATUS_UNSUCCESSFUL;
[PATCH] group control bits ....
Attach the file :-) ...I go to bed now! Hi Jelmer, Andrew, Kai, here's a patch witch : add uint16 group_ctrl; to SAM_GROUP_HANDLE and SAM_GROUP_ENUM change the sam_enum_accounts and sam_enum_groups to use acct_ctrl or group_ctrl. and remove the uint32 tpye from sam_get_groups_of_account (I don't see the need of them:-) I also change name to group_name and comment to group_desc to make it like accout_name and account_desc And add a lot of const to get_set_* Add group.c like account.c comments please! metze - Stefan "metze" Metzmacher <[EMAIL PROTECTED]> diff -Npur --exclude=CVS HEAD/source/include/sam.h HEAD-fix/source/include/sam.h --- HEAD/source/include/sam.h Mon Sep 2 15:06:55 2002 +++ HEAD-fix/source/include/sam.h Thu Sep 5 04:33:36 2002 @@ -104,12 +104,11 @@ typedef struct sam_group_handle { struct sam_methods *current_sam_methods; /* sam_methods creating this handle */ void (*free_fn)(struct sam_group_handle **); struct sam_group_data { - char *name; - char *comment; + char *group_name; + char *group_desc; DOM_SID sid; - int32 flags; /* specifies if the group is a local group or a global group */ + uint16 group_ctrl; /* specifies if the group is a local group or a +global group */ uint32 num_members; - PRIVILEGE_SET privileges; } private; } SAM_GROUP_HANDLE; @@ -117,7 +116,6 @@ typedef struct sam_group_handle { typedef struct sam_group_member { DOM_SID sid; BOOL group; /* specifies if it is a group or a account */ - } SAM_GROUP_MEMBER; typedef struct sam_account_enum { @@ -125,15 +123,23 @@ typedef struct sam_account_enum { char *account_name; char *full_name; char *account_desc; - uint16 acc_ctrl; + uint16 acct_ctrl; } SAM_ACCOUNT_ENUM; typedef struct sam_group_enum { DOM_SID sid; - char *groupname; - char *comment; + char *group_name; + char *group_desc; + uint16 group_ctrl; } SAM_GROUP_ENUM; + +/* bits for group_ctrl: to spezify if the group is global group or alias */ +#define GCB_LOCAL_GROUP0x0001 +#define GCB_ALIAS_GROUPGCB_LOCAL_GROUP +#define GCB_GLOBAL_GROUP 0x0002 + + typedef struct sam_context { struct sam_methods *methods; @@ -164,7 +170,7 @@ typedef struct sam_context NTSTATUS (*sam_add_account) (const struct sam_context *, const DOM_SID *domainsid, const SAM_ACCOUNT_HANDLE *account); NTSTATUS (*sam_update_account) (const struct sam_context *, const SAM_ACCOUNT_HANDLE *account); NTSTATUS (*sam_delete_account) (const struct sam_context *, const SAM_ACCOUNT_HANDLE *account); - NTSTATUS (*sam_enum_accounts) (const struct sam_context *, const NT_USER_TOKEN *access_token, const DOM_SID *domain, int32 *account_count, SAM_ACCOUNT_ENUM **accounts); + NTSTATUS (*sam_enum_accounts) (const struct sam_context *, const NT_USER_TOKEN +*access_token, const DOM_SID *domain, const uint16 acct_ctrl, uint32 *account_count, +SAM_ACCOUNT_ENUM **accounts); NTSTATUS (*sam_get_account_by_sid) (const struct sam_context *, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account); NTSTATUS (*sam_get_account_by_name) (const struct sam_context *, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *domain, const char *name, SAM_ACCOUNT_HANDLE **account); @@ -175,7 +181,7 @@ typedef struct sam_context NTSTATUS (*sam_add_group) (const struct sam_context *, const DOM_SID *domainsid, const SAM_GROUP_HANDLE *group); NTSTATUS (*sam_update_group) (const struct sam_context *, const SAM_GROUP_HANDLE *group); NTSTATUS (*sam_delete_group) (const struct sam_context *, const SAM_GROUP_HANDLE *group); - NTSTATUS (*sam_enum_groups) (const struct sam_context *, const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, const uint32 type, uint32 *groups_count, SAM_GROUP_ENUM **groups); + NTSTATUS (*sam_enum_groups) (const struct sam_context *, const NT_USER_TOKEN +*access_token, const DOM_SID *domainsid, const uint16 group_ctrl, uint32 +*groups_count, SAM_GROUP_ENUM **groups); NTSTATUS (*sam_get_group_by_sid) (const struct sam_context *, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group); NTSTATUS (*sam_get_group_by_name) (const struct sam_context *, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *domain, const char *name, SAM_GROUP_HANDLE **group); @@ -183,7 +189,7 @@ typedef struct sam_context NTSTATUS (*sam_delete_member_from_group) (const struct sam_context *, const SAM_GROUP_HANDLE *group, const SAM_GROU
[PATCH] group control bits ....
Hi Jelmer, Andrew, Kai, here's a patch witch : add uint16 group_ctrl; to SAM_GROUP_HANDLE and SAM_GROUP_ENUM change the sam_enum_accounts and sam_enum_groups to use acct_ctrl or group_ctrl. and remove the uint32 tpye from sam_get_groups_of_account (I don't see the need of them:-) I also change name to group_name and comment to group_desc to make it like accout_name and account_desc And add a lot of const to get_set_* Add group.c like account.c comments please! metze - Stefan "metze" Metzmacher <[EMAIL PROTECTED]>