|
|
d6181b |
From 003f8647f9dbeec1a54060fb4e376f04865aafea Mon Sep 17 00:00:00 2001
|
|
|
d6181b |
From: Jakub Hrozek <jhrozek@redhat.com>
|
|
|
d6181b |
Date: Wed, 8 May 2019 14:38:44 +0200
|
|
|
d6181b |
Subject: [PATCH 33/48] BE/LDAP: Split out a helper function from sdap_refresh
|
|
|
d6181b |
for later reuse
|
|
|
d6181b |
|
|
|
d6181b |
Every refresh request will send a similar account_req. Let's split out
|
|
|
d6181b |
the function that creates the account_req into a reusable one.
|
|
|
d6181b |
|
|
|
d6181b |
Also removes the type string as it was only used in DEBUG messages and
|
|
|
d6181b |
there is already a function in the back end API that provides the same
|
|
|
d6181b |
functionality.
|
|
|
d6181b |
|
|
|
d6181b |
Related:
|
|
|
d6181b |
https://pagure.io/SSSD/sssd/issue/4012
|
|
|
d6181b |
|
|
|
d6181b |
Reviewed-by: Sumit Bose <sbose@redhat.com>
|
|
|
d6181b |
---
|
|
|
d6181b |
src/providers/be_refresh.c | 18 ++++++++++++++++++
|
|
|
d6181b |
src/providers/be_refresh.h | 4 ++++
|
|
|
d6181b |
src/providers/ldap/sdap_refresh.c | 29 +++++------------------------
|
|
|
d6181b |
3 files changed, 27 insertions(+), 24 deletions(-)
|
|
|
d6181b |
|
|
|
d6181b |
diff --git a/src/providers/be_refresh.c b/src/providers/be_refresh.c
|
|
|
d6181b |
index 8a6e1ba58..c49229e71 100644
|
|
|
d6181b |
--- a/src/providers/be_refresh.c
|
|
|
d6181b |
+++ b/src/providers/be_refresh.c
|
|
|
d6181b |
@@ -362,3 +362,21 @@ errno_t be_refresh_recv(struct tevent_req *req)
|
|
|
d6181b |
|
|
|
d6181b |
return EOK;
|
|
|
d6181b |
}
|
|
|
d6181b |
+
|
|
|
d6181b |
+struct dp_id_data *be_refresh_acct_req(TALLOC_CTX *mem_ctx,
|
|
|
d6181b |
+ uint32_t entry_type,
|
|
|
d6181b |
+ struct sss_domain_info *domain)
|
|
|
d6181b |
+{
|
|
|
d6181b |
+ struct dp_id_data *account_req;
|
|
|
d6181b |
+
|
|
|
d6181b |
+ account_req = talloc_zero(mem_ctx, struct dp_id_data);
|
|
|
d6181b |
+ if (account_req == NULL) {
|
|
|
d6181b |
+ return NULL;
|
|
|
d6181b |
+ }
|
|
|
d6181b |
+
|
|
|
d6181b |
+ account_req->entry_type = entry_type;
|
|
|
d6181b |
+ account_req->filter_type = BE_FILTER_NAME;
|
|
|
d6181b |
+ account_req->extra_value = NULL;
|
|
|
d6181b |
+ account_req->domain = domain->name;
|
|
|
d6181b |
+ return account_req;
|
|
|
d6181b |
+}
|
|
|
d6181b |
diff --git a/src/providers/be_refresh.h b/src/providers/be_refresh.h
|
|
|
d6181b |
index 980ac7d06..b7ba5d4c2 100644
|
|
|
d6181b |
--- a/src/providers/be_refresh.h
|
|
|
d6181b |
+++ b/src/providers/be_refresh.h
|
|
|
d6181b |
@@ -69,4 +69,8 @@ struct tevent_req *be_refresh_send(TALLOC_CTX *mem_ctx,
|
|
|
d6181b |
|
|
|
d6181b |
errno_t be_refresh_recv(struct tevent_req *req);
|
|
|
d6181b |
|
|
|
d6181b |
+struct dp_id_data *be_refresh_acct_req(TALLOC_CTX *mem_ctx,
|
|
|
d6181b |
+ uint32_t entry_type,
|
|
|
d6181b |
+ struct sss_domain_info *domain);
|
|
|
d6181b |
+
|
|
|
d6181b |
#endif /* _DP_REFRESH_H_ */
|
|
|
d6181b |
diff --git a/src/providers/ldap/sdap_refresh.c b/src/providers/ldap/sdap_refresh.c
|
|
|
d6181b |
index baa7fa59f..af39d8686 100644
|
|
|
d6181b |
--- a/src/providers/ldap/sdap_refresh.c
|
|
|
d6181b |
+++ b/src/providers/ldap/sdap_refresh.c
|
|
|
d6181b |
@@ -30,7 +30,6 @@ struct sdap_refresh_state {
|
|
|
d6181b |
struct dp_id_data *account_req;
|
|
|
d6181b |
struct sdap_id_ctx *id_ctx;
|
|
|
d6181b |
struct sdap_domain *sdom;
|
|
|
d6181b |
- const char *type;
|
|
|
d6181b |
char **names;
|
|
|
d6181b |
size_t index;
|
|
|
d6181b |
};
|
|
|
d6181b |
@@ -74,32 +73,12 @@ static struct tevent_req *sdap_refresh_send(TALLOC_CTX *mem_ctx,
|
|
|
d6181b |
goto immediately;
|
|
|
d6181b |
}
|
|
|
d6181b |
|
|
|
d6181b |
- switch (entry_type) {
|
|
|
d6181b |
- case BE_REQ_USER:
|
|
|
d6181b |
- state->type = "user";
|
|
|
d6181b |
- break;
|
|
|
d6181b |
- case BE_REQ_GROUP:
|
|
|
d6181b |
- state->type = "group";
|
|
|
d6181b |
- break;
|
|
|
d6181b |
- case BE_REQ_NETGROUP:
|
|
|
d6181b |
- state->type = "netgroup";
|
|
|
d6181b |
- break;
|
|
|
d6181b |
- default:
|
|
|
d6181b |
- DEBUG(SSSDBG_CRIT_FAILURE, "Invalid entry type [%d]!\n", entry_type);
|
|
|
d6181b |
- }
|
|
|
d6181b |
-
|
|
|
d6181b |
- state->account_req = talloc_zero(state, struct dp_id_data);
|
|
|
d6181b |
+ state->account_req = be_refresh_acct_req(state, entry_type, domain);
|
|
|
d6181b |
if (state->account_req == NULL) {
|
|
|
d6181b |
ret = ENOMEM;
|
|
|
d6181b |
goto immediately;
|
|
|
d6181b |
}
|
|
|
d6181b |
|
|
|
d6181b |
- state->account_req->entry_type = entry_type;
|
|
|
d6181b |
- state->account_req->filter_type = BE_FILTER_NAME;
|
|
|
d6181b |
- state->account_req->extra_value = NULL;
|
|
|
d6181b |
- state->account_req->domain = domain->name;
|
|
|
d6181b |
- /* filter will be filled later */
|
|
|
d6181b |
-
|
|
|
d6181b |
ret = sdap_refresh_step(req);
|
|
|
d6181b |
if (ret == EOK) {
|
|
|
d6181b |
DEBUG(SSSDBG_TRACE_FUNC, "Nothing to refresh\n");
|
|
|
d6181b |
@@ -143,7 +122,8 @@ static errno_t sdap_refresh_step(struct tevent_req *req)
|
|
|
d6181b |
}
|
|
|
d6181b |
|
|
|
d6181b |
DEBUG(SSSDBG_TRACE_FUNC, "Issuing refresh of %s %s\n",
|
|
|
d6181b |
- state->type, state->account_req->filter_value);
|
|
|
d6181b |
+ be_req2str(state->account_req->entry_type),
|
|
|
d6181b |
+ state->account_req->filter_value);
|
|
|
d6181b |
|
|
|
d6181b |
subreq = sdap_handle_acct_req_send(state, state->be_ctx,
|
|
|
d6181b |
state->account_req, state->id_ctx,
|
|
|
d6181b |
@@ -178,7 +158,8 @@ static void sdap_refresh_done(struct tevent_req *subreq)
|
|
|
d6181b |
talloc_zfree(subreq);
|
|
|
d6181b |
if (ret != EOK) {
|
|
|
d6181b |
DEBUG(SSSDBG_CRIT_FAILURE, "Unable to refresh %s [dp_error: %d, "
|
|
|
d6181b |
- "sdap_ret: %d, errno: %d]: %s\n", state->type,
|
|
|
d6181b |
+ "sdap_ret: %d, errno: %d]: %s\n",
|
|
|
d6181b |
+ be_req2str(state->account_req->entry_type),
|
|
|
d6181b |
dp_error, sdap_ret, ret, err_msg);
|
|
|
d6181b |
goto done;
|
|
|
d6181b |
}
|
|
|
d6181b |
--
|
|
|
d6181b |
2.20.1
|
|
|
d6181b |
|