summaryrefslogtreecommitdiff
path: root/examples/sam
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2002-09-24 20:18:39 +0000
committerJelmer Vernooij <jelmer@samba.org>2002-09-24 20:18:39 +0000
commit2cd64003e3b127ca5a204b801155fcb4a7447a48 (patch)
treeda3a9ee54c445fdb3c8ebf79bb925de118d49a4b /examples/sam
parent28947d6cd12040de37e3dfb29eeb1163cc429f32 (diff)
downloadsamba-2cd64003e3b127ca5a204b801155fcb4a7447a48.tar.gz
samba-2cd64003e3b127ca5a204b801155fcb4a7447a48.tar.bz2
samba-2cd64003e3b127ca5a204b801155fcb4a7447a48.zip
- Don't put pointer to sam_domain_handle in sam_methods but single domainsid and domainname
- Allocate sam_methods, set domain_sid, domain_name and backend_name in make_sam_methods_backend_entry instead of in the backend - Remove sam_context and domain_sid pointers from the sam_init_function - we don't need those arguments anymore since they're available in sam_methods as well (This used to be commit 50d2527eed0eb26c16f2f7e28badbf08d771380e)
Diffstat (limited to 'examples/sam')
-rw-r--r--examples/sam/sam_skel.c114
1 files changed, 53 insertions, 61 deletions
diff --git a/examples/sam/sam_skel.c b/examples/sam/sam_skel.c
index a3b8f13391..da3a375894 100644
--- a/examples/sam/sam_skel.c
+++ b/examples/sam/sam_skel.c
@@ -3,6 +3,7 @@
this is a skeleton for SAM backend modules.
Copyright (C) Stefan (metze) Metzmacher 2002
+ Copyright (C) Jelmer Vernooij 2002
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -29,29 +30,28 @@ static int sam_skel_debug_level = DBGC_SAM;
/* define the version of the SAM interface */
SAM_MODULE_VERSIONING_MAGIC
-
/* General API */
-NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
+NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
+NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID *sid, char **name, uint32 *type)
+NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, char **name, uint32 *type)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const char *name, DOM_SID **sid, uint32 *type)
+NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const char *name, DOM_SID **sid, uint32 *type)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
@@ -60,13 +60,13 @@ NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN
/* Domain API */
-NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_method, const SAM_DOMAIN_HANDLE *domain)
+NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_methods, const SAM_DOMAIN_HANDLE *domain)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
+NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
@@ -75,44 +75,44 @@ NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_method, const NT_USER
/* Account API */
-NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
+NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
+NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
+NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
+NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
+NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
+NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
+NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
@@ -121,126 +121,118 @@ NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_method, const NT_US
/* Group API */
-NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
+NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
+NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
+NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
+NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
+NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
+NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
+NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
+NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
+NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
+NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
+NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
{
DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS sam_init(const SAM_CONTEXT *sam_context, SAM_METHODS **sam_method, const DOM_SID *domain, const char *module_params)
+NTSTATUS sam_init(SAM_METHODS *sam_methods, const char *module_params)
{
- NTSTATUS nt_status;
-
- if (!NT_STATUS_IS_OK(nt_status = make_sam_methods(sam_context->mem_ctx, sam_method))) {
- return nt_status;
- }
-
- (*sam_method)->backendname = "sam_skel";
-
/* Functions your SAM module doesn't provide should be set
* to NULL */
- (*sam_method)->sam_get_sec_desc = sam_skel_get_sec_desc;
- (*sam_method)->sam_set_sec_desc = sam_skel_set_sec_desc;
+ sam_methods->sam_get_sec_desc = sam_skel_get_sec_desc;
+ sam_methods->sam_set_sec_desc = sam_skel_set_sec_desc;
- (*sam_method)->sam_lookup_sid = sam_skel_lookup_sid;
- (*sam_method)->sam_lookup_name = sam_skel_lookup_name;
+ sam_methods->sam_lookup_sid = sam_skel_lookup_sid;
+ sam_methods->sam_lookup_name = sam_skel_lookup_name;
/* Domain API */
- (*sam_method)->sam_update_domain = sam_skel_update_domain;
- (*sam_method)->sam_get_domain_handle = sam_skel_get_domain_handle;
+ sam_methods->sam_update_domain = sam_skel_update_domain;
+ sam_methods->sam_get_domain_handle = sam_skel_get_domain_handle;
/* Account API */
- (*sam_method)->sam_create_account = sam_skel_create_account;
- (*sam_method)->sam_add_account = sam_skel_add_account;
- (*sam_method)->sam_update_account = sam_skel_update_account;
- (*sam_method)->sam_delete_account = sam_skel_delete_account;
- (*sam_method)->sam_enum_accounts = sam_skel_enum_accounts;
+ sam_methods->sam_create_account = sam_skel_create_account;
+ sam_methods->sam_add_account = sam_skel_add_account;
+ sam_methods->sam_update_account = sam_skel_update_account;
+ sam_methods->sam_delete_account = sam_skel_delete_account;
+ sam_methods->sam_enum_accounts = sam_skel_enum_accounts;
- (*sam_method)->sam_get_account_by_sid = sam_skel_get_account_by_sid;
- (*sam_method)->sam_get_account_by_name = sam_skel_get_account_by_name;
+ sam_methods->sam_get_account_by_sid = sam_skel_get_account_by_sid;
+ sam_methods->sam_get_account_by_name = sam_skel_get_account_by_name;
/* Group API */
- (*sam_method)->sam_create_group = sam_skel_create_group;
- (*sam_method)->sam_add_group = sam_skel_add_group;
- (*sam_method)->sam_update_group = sam_skel_update_group;
- (*sam_method)->sam_delete_group = sam_skel_delete_group;
- (*sam_method)->sam_enum_groups = sam_skel_enum_groups;
- (*sam_method)->sam_get_group_by_sid = sam_skel_get_group_by_sid;
- (*sam_method)->sam_get_group_by_name = sam_skel_get_group_by_name;
+ sam_methods->sam_create_group = sam_skel_create_group;
+ sam_methods->sam_add_group = sam_skel_add_group;
+ sam_methods->sam_update_group = sam_skel_update_group;
+ sam_methods->sam_delete_group = sam_skel_delete_group;
+ sam_methods->sam_enum_groups = sam_skel_enum_groups;
+ sam_methods->sam_get_group_by_sid = sam_skel_get_group_by_sid;
+ sam_methods->sam_get_group_by_name = sam_skel_get_group_by_name;
- (*sam_method)->sam_add_member_to_group = sam_skel_add_member_to_group;
- (*sam_method)->sam_delete_member_from_group = sam_skel_delete_member_from_group;
- (*sam_method)->sam_enum_groupmembers = sam_skel_enum_groupmembers;
+ sam_methods->sam_add_member_to_group = sam_skel_add_member_to_group;
+ sam_methods->sam_delete_member_from_group = sam_skel_delete_member_from_group;
+ sam_methods->sam_enum_groupmembers = sam_skel_enum_groupmembers;
- (*sam_method)->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
+ sam_methods->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
- (*sam_method)->free_private_data = NULL;
+ sam_methods->free_private_data = NULL;
sam_skel_debug_level = debug_add_class("sam_skel");
@@ -250,9 +242,9 @@ NTSTATUS sam_init(const SAM_CONTEXT *sam_context, SAM_METHODS **sam_method, cons
} else DEBUG(2, ("sam_skel: Debug class number of 'sam_skel': %d\n", sam_skel_debug_level));
if(module_params)
- DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sid_string_static(domain)));
+ DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sam_methods->domain_name));
else
- DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sid_string_static(domain)));
+ DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sam_methods->domain_name));
return NT_STATUS_OK;
}