summaryrefslogtreecommitdiff
path: root/source3/include/passdb.h
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2003-10-13 21:26:10 +0000
committerSimo Sorce <idra@samba.org>2003-10-13 21:26:10 +0000
commit5733f731a911478492315af288c1a674ec038452 (patch)
treeb42248f3a4780ae663ee37d465cb5e9fa89bb224 /source3/include/passdb.h
parent0bb70fe0b43fa9e9615e405b12c2adbb4ff04594 (diff)
downloadsamba-5733f731a911478492315af288c1a674ec038452.tar.gz
samba-5733f731a911478492315af288c1a674ec038452.tar.bz2
samba-5733f731a911478492315af288c1a674ec038452.zip
So here it is a non-intrusive patch with my latest work on gums (the
laternative to the current passdb). Currently it is run through a comatibility module in the passdb layer, with a subset of the functionality it may provide. It is still work in progress, but as someone asked me about it, and as it should make no difference to the normal code, I tought it was a good idea to put it into. It adds a dependency on perl. I know it is not very nice, but I'm sure we will work out a solution for that. As always blame me if I break something, but try to fix yourself, as I am busy-busy-busy :-) Simo. (This used to be commit 7b3c94b5cfc1a9ceb430613353a937345f2eda74)
Diffstat (limited to 'source3/include/passdb.h')
-rw-r--r--source3/include/passdb.h77
1 files changed, 69 insertions, 8 deletions
diff --git a/source3/include/passdb.h b/source3/include/passdb.h
index a4b2bcff3f..cd9c57a991 100644
--- a/source3/include/passdb.h
+++ b/source3/include/passdb.h
@@ -177,6 +177,15 @@ typedef struct sam_group {
} SAM_GROUP;
+typedef struct _GROUP_INFO {
+ struct pdb_methods *methods;
+ DOM_SID sid;
+ enum SID_NAME_USE sid_name_use;
+ fstring nt_name;
+ fstring comment;
+} GROUP_INFO;
+
+
/*****************************************************************
Functions to be implemented by the new (v2) passdb API
****************************************************************/
@@ -192,26 +201,28 @@ typedef struct pdb_context
{
struct pdb_methods *pdb_methods;
struct pdb_methods *pwent_methods;
-
+
/* These functions are wrappers for the functions listed above.
They may do extra things like re-reading a SAM_ACCOUNT on update */
NTSTATUS (*pdb_setsampwent)(struct pdb_context *, BOOL update);
-
+
void (*pdb_endsampwent)(struct pdb_context *);
-
+
NTSTATUS (*pdb_getsampwent)(struct pdb_context *, SAM_ACCOUNT *user);
-
+
NTSTATUS (*pdb_getsampwnam)(struct pdb_context *, SAM_ACCOUNT *sam_acct, const char *username);
-
+
NTSTATUS (*pdb_getsampwsid)(struct pdb_context *, SAM_ACCOUNT *sam_acct, const DOM_SID *sid);
NTSTATUS (*pdb_add_sam_account)(struct pdb_context *, SAM_ACCOUNT *sampass);
-
+
NTSTATUS (*pdb_update_sam_account)(struct pdb_context *, SAM_ACCOUNT *sampass);
-
+
NTSTATUS (*pdb_delete_sam_account)(struct pdb_context *, SAM_ACCOUNT *username);
+ /* group mapping functions: to be removed */
+
NTSTATUS (*pdb_getgrsid)(struct pdb_context *context, GROUP_MAP *map, DOM_SID sid);
NTSTATUS (*pdb_getgrgid)(struct pdb_context *context, GROUP_MAP *map, gid_t gid);
@@ -232,6 +243,30 @@ typedef struct pdb_context
GROUP_MAP **rmap, int *num_entries,
BOOL unix_only);
+ /* group functions */
+
+ NTSTATUS (*pdb_get_group_info_by_sid)(struct pdb_context *context, GROUP_INFO *info, const DOM_SID *group);
+
+ NTSTATUS (*pdb_get_group_list)(struct pdb_context *context, GROUP_INFO **info, const enum SID_NAME_USE sid_name_use, int *num_groups);
+
+ NTSTATUS (*pdb_get_group_sids)(struct pdb_context *context, const DOM_SID *group, DOM_SID **members, int *num_members);
+
+ NTSTATUS (*pdb_add_group)(struct pdb_context *context, const SAM_GROUP *group);
+
+ NTSTATUS (*pdb_update_group)(struct pdb_context *context, const SAM_GROUP *group);
+
+ NTSTATUS (*pdb_delete_group)(struct pdb_context *context, const DOM_SID *group);
+
+ NTSTATUS (*pdb_add_sid_to_group)(struct pdb_context *context, const DOM_SID *group, const DOM_SID *member);
+
+ NTSTATUS (*pdb_remove_sid_from_group)(struct pdb_context *context, const DOM_SID *group, const DOM_SID *member);
+
+ NTSTATUS (*pdb_get_group_info_by_name)(struct pdb_context *context, GROUP_INFO *info, const char *name);
+
+ NTSTATUS (*pdb_get_group_info_by_nt_name)(struct pdb_context *context, GROUP_INFO *info, const char *nt_name);
+
+ NTSTATUS (*pdb_get_group_uids)(struct pdb_context *context, const DOM_SID *group, uid_t **members, int *num_members);
+
void (*free_fn)(struct pdb_context **);
TALLOC_CTX *mem_ctx;
@@ -262,7 +297,9 @@ typedef struct pdb_methods
NTSTATUS (*update_sam_account)(struct pdb_methods *, SAM_ACCOUNT *sampass);
NTSTATUS (*delete_sam_account)(struct pdb_methods *, SAM_ACCOUNT *username);
-
+
+ /* group mapping functions: to be removed */
+
NTSTATUS (*getgrsid)(struct pdb_methods *methods, GROUP_MAP *map, DOM_SID sid);
NTSTATUS (*getgrgid)(struct pdb_methods *methods, GROUP_MAP *map, gid_t gid);
@@ -283,6 +320,30 @@ typedef struct pdb_methods
GROUP_MAP **rmap, int *num_entries,
BOOL unix_only);
+ /* group functions */
+
+ NTSTATUS (*get_group_info_by_sid)(struct pdb_methods *methods, GROUP_INFO *info, const DOM_SID *group);
+
+ NTSTATUS (*get_group_list)(struct pdb_methods *methods, GROUP_INFO **info, const enum SID_NAME_USE sid_name_use, int *num_groups);
+
+ NTSTATUS (*get_group_sids)(struct pdb_methods *methods, const DOM_SID *group, DOM_SID **members, int *num_members);
+
+ NTSTATUS (*add_group)(struct pdb_methods *methods, const SAM_GROUP *group);
+
+ NTSTATUS (*update_group)(struct pdb_methods *methods, const SAM_GROUP *group);
+
+ NTSTATUS (*delete_group)(struct pdb_methods *methods, const DOM_SID *group);
+
+ NTSTATUS (*add_sid_to_group)(struct pdb_methods *methods, const DOM_SID *group, const DOM_SID *member);
+
+ NTSTATUS (*remove_sid_from_group)(struct pdb_methods *methods, const DOM_SID *group, const DOM_SID *member);
+
+ NTSTATUS (*get_group_info_by_name)(struct pdb_methods *methods, GROUP_INFO *info, const char *name);
+
+ NTSTATUS (*get_group_info_by_nt_name)(struct pdb_methods *methods, GROUP_INFO *info, const char *nt_name);
+
+ NTSTATUS (*get_group_uids)(struct pdb_methods *methods, const DOM_SID *group, uid_t **members, int *num_members);
+
void *private_data; /* Private data of some kind */
void (*free_private_data)(void **);