summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2016-02-16 11:43:08 +0100
committerJakub Hrozek <jhrozek@redhat.com>2016-04-13 10:43:18 +0200
commitcce3e8526176ce2fe9baa5bda1bb457b996b7bcf (patch)
treeafe5c23868fc8a4666954541cbb7db9c0285fa37 /src
parent22eead9590e11c7adab33ec5ab8b46d3c3cb4406 (diff)
downloadsssd-cce3e8526176ce2fe9baa5bda1bb457b996b7bcf.tar.gz
sssd-cce3e8526176ce2fe9baa5bda1bb457b996b7bcf.tar.xz
sssd-cce3e8526176ce2fe9baa5bda1bb457b996b7bcf.zip
SDAP: make some AD specific calls public
Make sdap_ad_tokengroups_get_posix_members() and sdap_ad_resolve_sids_send() reusable. Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/providers/ldap/sdap_async_ad.h52
-rw-r--r--src/providers/ldap/sdap_async_initgroups_ad.c28
2 files changed, 66 insertions, 14 deletions
diff --git a/src/providers/ldap/sdap_async_ad.h b/src/providers/ldap/sdap_async_ad.h
new file mode 100644
index 000000000..0cbe6dfd7
--- /dev/null
+++ b/src/providers/ldap/sdap_async_ad.h
@@ -0,0 +1,52 @@
+/*
+ SSSD - header files for AD specific enhancement in the common LDAP/SDAP
+ code
+
+ Authors:
+ Sumit Bose <sbose@redhat.com>
+
+ Copyright (C) 2016 Red Hat
+
+ 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
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef SDAP_ASYNC_AD_H_
+#define SDAP_ASYNC_AD_H_
+
+errno_t
+sdap_ad_tokengroups_get_posix_members(TALLOC_CTX *mem_ctx,
+ struct sss_domain_info *user_domain,
+ size_t num_sids,
+ char **sids,
+ size_t *_num_missing,
+ char ***_missing,
+ size_t *_num_valid,
+ char ***_valid_groups);
+
+errno_t
+sdap_ad_tokengroups_update_members(const char *username,
+ struct sysdb_ctx *sysdb,
+ struct sss_domain_info *domain,
+ char **ldap_groups);
+struct tevent_req *
+sdap_ad_resolve_sids_send(TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct sdap_id_ctx *id_ctx,
+ struct sdap_id_conn_ctx *conn,
+ struct sdap_options *opts,
+ struct sss_domain_info *domain,
+ char **sids);
+
+errno_t sdap_ad_resolve_sids_recv(struct tevent_req *req);
+#endif /* SDAP_ASYNC_AD_H_ */
diff --git a/src/providers/ldap/sdap_async_initgroups_ad.c b/src/providers/ldap/sdap_async_initgroups_ad.c
index 76b14a55b..b0f8ed41d 100644
--- a/src/providers/ldap/sdap_async_initgroups_ad.c
+++ b/src/providers/ldap/sdap_async_initgroups_ad.c
@@ -479,7 +479,7 @@ static errno_t sdap_get_ad_tokengroups_recv(TALLOC_CTX *mem_ctx,
return EOK;
}
-static errno_t
+errno_t
sdap_ad_tokengroups_update_members(const char *username,
struct sysdb_ctx *sysdb,
struct sss_domain_info *domain,
@@ -545,7 +545,7 @@ struct sdap_ad_resolve_sids_state {
static errno_t sdap_ad_resolve_sids_step(struct tevent_req *req);
static void sdap_ad_resolve_sids_done(struct tevent_req *subreq);
-static struct tevent_req *
+struct tevent_req *
sdap_ad_resolve_sids_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct sdap_id_ctx *id_ctx,
@@ -682,7 +682,7 @@ done:
tevent_req_done(req);
}
-static errno_t sdap_ad_resolve_sids_recv(struct tevent_req *req)
+errno_t sdap_ad_resolve_sids_recv(struct tevent_req *req)
{
TEVENT_REQ_RETURN_ON_ERROR(req);
@@ -1141,15 +1141,15 @@ sdap_ad_tokengroups_initgr_posix_sids_connect_done(struct tevent_req *subreq)
return;
}
-static errno_t
+errno_t
sdap_ad_tokengroups_get_posix_members(TALLOC_CTX *mem_ctx,
- struct sdap_ad_tokengroups_initgr_posix_state *state,
- size_t num_sids,
- char **sids,
- size_t *_num_missing,
- char ***_missing,
- size_t *_num_valid,
- char ***_valid_groups)
+ struct sss_domain_info *user_domain,
+ size_t num_sids,
+ char **sids,
+ size_t *_num_missing,
+ char ***_missing,
+ size_t *_num_valid,
+ char ***_valid_groups)
{
TALLOC_CTX *tmp_ctx = NULL;
struct sss_domain_info *domain = NULL;
@@ -1192,7 +1192,7 @@ sdap_ad_tokengroups_get_posix_members(TALLOC_CTX *mem_ctx,
sid = sids[i];
DEBUG(SSSDBG_TRACE_LIBS, "Processing membership SID [%s]\n", sid);
- domain = sss_get_domain_by_sid_ldap_fallback(state->domain, sid);
+ domain = sss_get_domain_by_sid_ldap_fallback(user_domain, sid);
if (domain == NULL) {
DEBUG(SSSDBG_MINOR_FAILURE, "Domain not found for SID %s\n", sid);
continue;
@@ -1280,7 +1280,7 @@ sdap_ad_tokengroups_initgr_posix_tg_done(struct tevent_req *subreq)
goto done;
}
- ret = sdap_ad_tokengroups_get_posix_members(state, state,
+ ret = sdap_ad_tokengroups_get_posix_members(state, state->domain,
num_sids, sids,
&state->num_missing_sids,
&state->missing_sids,
@@ -1338,7 +1338,7 @@ sdap_ad_tokengroups_initgr_posix_sids_done(struct tevent_req *subreq)
goto done;
}
- ret = sdap_ad_tokengroups_get_posix_members(state, state,
+ ret = sdap_ad_tokengroups_get_posix_members(state, state->domain,
state->num_missing_sids,
state->missing_sids,
NULL, NULL,