dpward / rpms / sssd

Forked from rpms/sssd 3 years ago
Clone

Blame SOURCES/0033-BE-LDAP-Split-out-a-helper-function-from-sdap_refres.patch

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