Blame SOURCES/0086-ldap-implement-autofs-get-entry.patch

5cd47f
From 2e452583728b2596aba65a96d25f7f8312765538 Mon Sep 17 00:00:00 2001
5cd47f
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
5cd47f
Date: Thu, 15 Aug 2019 14:07:01 +0200
5cd47f
Subject: [PATCH 86/90] ldap: implement autofs get entry
5cd47f
MIME-Version: 1.0
5cd47f
Content-Type: text/plain; charset=UTF-8
5cd47f
Content-Transfer-Encoding: 8bit
5cd47f
5cd47f
Resolves:
5cd47f
https://pagure.io/SSSD/sssd/issue/2607
5cd47f
5cd47f
Reviewed-by: Tomáš Halman <thalman@redhat.com>
5cd47f
---
5cd47f
 src/providers/ipa/ipa_autofs.c                |   4 +
5cd47f
 src/providers/ldap/ldap_common.h              |  11 +
5cd47f
 src/providers/ldap/sdap_async_autofs.c        | 235 +++++++++++++++++-
5cd47f
 src/providers/ldap/sdap_autofs.c              |  88 +++++++
5cd47f
 src/providers/ldap/sdap_autofs.h              |   8 +
5cd47f
 .../plugins/cache_req_autofs_entry_by_name.c  |   4 +-
5cd47f
 6 files changed, 347 insertions(+), 3 deletions(-)
5cd47f
5cd47f
diff --git a/src/providers/ipa/ipa_autofs.c b/src/providers/ipa/ipa_autofs.c
5cd47f
index 19d74071f..5f72d60cd 100644
5cd47f
--- a/src/providers/ipa/ipa_autofs.c
5cd47f
+++ b/src/providers/ipa/ipa_autofs.c
5cd47f
@@ -55,5 +55,9 @@ errno_t ipa_autofs_init(TALLOC_CTX *mem_ctx,
5cd47f
                   sdap_autofs_get_map_handler_send, sdap_autofs_get_map_handler_recv, id_ctx,
5cd47f
                   struct sdap_id_ctx, struct dp_autofs_data, struct dp_reply_std);
5cd47f
 
5cd47f
+    dp_set_method(dp_methods, DPM_AUTOFS_GET_ENTRY,
5cd47f
+                  sdap_autofs_get_entry_handler_send, sdap_autofs_get_entry_handler_recv, id_ctx,
5cd47f
+                  struct sdap_id_ctx, struct dp_autofs_data, struct dp_reply_std);
5cd47f
+
5cd47f
     return ret;
5cd47f
 }
5cd47f
diff --git a/src/providers/ldap/ldap_common.h b/src/providers/ldap/ldap_common.h
5cd47f
index 36623aca8..893f29a38 100644
5cd47f
--- a/src/providers/ldap/ldap_common.h
5cd47f
+++ b/src/providers/ldap/ldap_common.h
5cd47f
@@ -177,6 +177,17 @@ sdap_autofs_get_map_handler_recv(TALLOC_CTX *mem_ctx,
5cd47f
                                  struct tevent_req *req,
5cd47f
                                  struct dp_reply_std *data);
5cd47f
 
5cd47f
+struct tevent_req *
5cd47f
+sdap_autofs_get_entry_handler_send(TALLOC_CTX *mem_ctx,
5cd47f
+                                 struct sdap_id_ctx *id_ctx,
5cd47f
+                                 struct dp_autofs_data *data,
5cd47f
+                                 struct dp_req_params *params);
5cd47f
+
5cd47f
+errno_t
5cd47f
+sdap_autofs_get_entry_handler_recv(TALLOC_CTX *mem_ctx,
5cd47f
+                                   struct tevent_req *req,
5cd47f
+                                   struct dp_reply_std *data);
5cd47f
+
5cd47f
 int sdap_service_init(TALLOC_CTX *memctx, struct be_ctx *ctx,
5cd47f
                       const char *service_name, const char *dns_service_name,
5cd47f
                       const char *urls, const char *backup_urls,
5cd47f
diff --git a/src/providers/ldap/sdap_async_autofs.c b/src/providers/ldap/sdap_async_autofs.c
5cd47f
index 52ceb84ac..c31df2f59 100644
5cd47f
--- a/src/providers/ldap/sdap_async_autofs.c
5cd47f
+++ b/src/providers/ldap/sdap_async_autofs.c
5cd47f
@@ -1100,7 +1100,7 @@ static void sdap_autofs_get_map_connect_done(struct tevent_req *subreq)
5cd47f
                     state->opts->sdom->autofs_search_bases,
5cd47f
                     state->opts->autofs_mobject_map, false,
5cd47f
                     dp_opt_get_int(state->opts->basic, SDAP_SEARCH_TIMEOUT),
5cd47f
-                    filter, attrs);
5cd47f
+                    filter, attrs, NULL);
5cd47f
     if (subreq == NULL) {
5cd47f
         state->dp_error = DP_ERR_FATAL;
5cd47f
         tevent_req_error(req, ENOMEM);
5cd47f
@@ -1177,3 +1177,236 @@ errno_t sdap_autofs_get_map_recv(struct tevent_req *req,
5cd47f
 
5cd47f
     return EOK;
5cd47f
 }
5cd47f
+
5cd47f
+struct sdap_autofs_get_entry_state {
5cd47f
+    struct sdap_id_ctx *id_ctx;
5cd47f
+    struct sdap_options *opts;
5cd47f
+    struct sdap_id_op *sdap_op;
5cd47f
+    const char *mapname;
5cd47f
+    const char *entryname;
5cd47f
+    int dp_error;
5cd47f
+};
5cd47f
+
5cd47f
+static errno_t sdap_autofs_get_entry_retry(struct tevent_req *req);
5cd47f
+static void sdap_autofs_get_entry_connect_done(struct tevent_req *subreq);
5cd47f
+static void sdap_autofs_get_entry_done(struct tevent_req *subreq);
5cd47f
+
5cd47f
+struct tevent_req *sdap_autofs_get_entry_send(TALLOC_CTX *mem_ctx,
5cd47f
+                                              struct sdap_id_ctx *id_ctx,
5cd47f
+                                              const char *mapname,
5cd47f
+                                              const char *entryname)
5cd47f
+{
5cd47f
+    struct tevent_req *req;
5cd47f
+    struct sdap_autofs_get_entry_state *state;
5cd47f
+    int ret;
5cd47f
+
5cd47f
+    req = tevent_req_create(mem_ctx, &state, struct sdap_autofs_get_entry_state);
5cd47f
+    if (!req) {
5cd47f
+        return NULL;
5cd47f
+    }
5cd47f
+
5cd47f
+    state->id_ctx = id_ctx;
5cd47f
+    state->opts = id_ctx->opts;
5cd47f
+    state->mapname = mapname;
5cd47f
+    state->entryname = entryname;
5cd47f
+    state->dp_error = DP_ERR_FATAL;
5cd47f
+
5cd47f
+    state->sdap_op = sdap_id_op_create(state, id_ctx->conn->conn_cache);
5cd47f
+    if (!state->sdap_op) {
5cd47f
+        DEBUG(SSSDBG_OP_FAILURE, "sdap_id_op_create() failed\n");
5cd47f
+        ret = ENOMEM;
5cd47f
+        goto done;
5cd47f
+    }
5cd47f
+
5cd47f
+    ret = sdap_autofs_get_entry_retry(req);
5cd47f
+    if (ret == EAGAIN) {
5cd47f
+        /* asynchronous processing */
5cd47f
+        return req;
5cd47f
+    }
5cd47f
+
5cd47f
+done:
5cd47f
+    if (ret == EOK) {
5cd47f
+        tevent_req_done(req);
5cd47f
+    } else {
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+    }
5cd47f
+    tevent_req_post(req, id_ctx->be->ev);
5cd47f
+
5cd47f
+    return req;
5cd47f
+}
5cd47f
+
5cd47f
+static errno_t sdap_autofs_get_entry_retry(struct tevent_req *req)
5cd47f
+{
5cd47f
+    struct sdap_autofs_get_entry_state *state;
5cd47f
+    struct tevent_req *subreq;
5cd47f
+    int ret;
5cd47f
+
5cd47f
+    state = tevent_req_data(req, struct sdap_autofs_get_entry_state);
5cd47f
+
5cd47f
+    subreq = sdap_id_op_connect_send(state->sdap_op, state, &ret;;
5cd47f
+    if (subreq == NULL) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "sdap_id_op_connect_send() failed: "
5cd47f
+                                   "%d(%s)\n", ret, strerror(ret));
5cd47f
+        return ret;
5cd47f
+    }
5cd47f
+
5cd47f
+    tevent_req_set_callback(subreq, sdap_autofs_get_entry_connect_done, req);
5cd47f
+
5cd47f
+    return EAGAIN;
5cd47f
+}
5cd47f
+
5cd47f
+static void sdap_autofs_get_entry_connect_done(struct tevent_req *subreq)
5cd47f
+{
5cd47f
+    struct tevent_req *req;
5cd47f
+    struct sdap_autofs_get_entry_state *state;
5cd47f
+    struct ldb_message *map;
5cd47f
+    char *filter;
5cd47f
+    char *safe_entryname;
5cd47f
+    const char **attrs;
5cd47f
+    const char *base_dn;
5cd47f
+    int dp_error;
5cd47f
+    int ret;
5cd47f
+
5cd47f
+    req = tevent_req_callback_data(subreq, struct tevent_req);
5cd47f
+    state = tevent_req_data(req, struct sdap_autofs_get_entry_state);
5cd47f
+
5cd47f
+    ret = sdap_id_op_connect_recv(subreq, &dp_error);
5cd47f
+    talloc_zfree(subreq);
5cd47f
+
5cd47f
+    if (ret != EOK) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "LDAP connection failed "
5cd47f
+                                   "[%d]: %s\n", ret, strerror(ret));
5cd47f
+        state->dp_error = dp_error;
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    DEBUG(SSSDBG_TRACE_FUNC, "LDAP connection successful\n");
5cd47f
+
5cd47f
+    ret = sysdb_get_map_byname(state, state->id_ctx->be->domain,
5cd47f
+                               state->mapname, &map);
5cd47f
+    if (ret == ENOENT) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "Map %s does not exist!\n", state->mapname);
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    } else if (ret != EOK) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "Unable to get map %s [%d]: %s\n",
5cd47f
+              state->mapname, ret, sss_strerror(ret));
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    base_dn = ldb_msg_find_attr_as_string(map, SYSDB_ORIG_DN, NULL);
5cd47f
+    if (base_dn == NULL) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "Cannot get originalDN\n");
5cd47f
+        tevent_req_error(req, ERR_INTERNAL);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    ret = sss_filter_sanitize(state, state->entryname, &safe_entryname);
5cd47f
+    if (ret != EOK) {
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    filter = talloc_asprintf(state, "(&(%s=%s)(objectclass=%s))",
5cd47f
+                 state->opts->autofs_entry_map[SDAP_AT_AUTOFS_ENTRY_KEY].name,
5cd47f
+                 safe_entryname,
5cd47f
+                 state->opts->autofs_entry_map[SDAP_OC_AUTOFS_ENTRY].name);
5cd47f
+    if (filter == NULL) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "Failed to build filter\n");
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    ret = build_attrs_from_map(state, state->opts->autofs_entry_map,
5cd47f
+                               SDAP_OPTS_AUTOFS_ENTRY, NULL, &attrs, NULL);
5cd47f
+    if (ret != EOK) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "Failed to build attributes from map\n");
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    subreq = sdap_search_bases_return_first_send(state, state->id_ctx->be->ev,
5cd47f
+                    state->opts, sdap_id_op_handle(state->sdap_op),
5cd47f
+                    state->opts->sdom->autofs_search_bases,
5cd47f
+                    state->opts->autofs_entry_map, false,
5cd47f
+                    dp_opt_get_int(state->opts->basic, SDAP_SEARCH_TIMEOUT),
5cd47f
+                    filter, attrs, base_dn);
5cd47f
+    if (subreq == NULL) {
5cd47f
+        state->dp_error = DP_ERR_FATAL;
5cd47f
+        tevent_req_error(req, ENOMEM);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    tevent_req_set_callback(subreq, sdap_autofs_get_entry_done, req);
5cd47f
+}
5cd47f
+
5cd47f
+static void sdap_autofs_get_entry_done(struct tevent_req *subreq)
5cd47f
+{
5cd47f
+    struct tevent_req *req;
5cd47f
+    struct sdap_autofs_get_entry_state *state;
5cd47f
+    struct sysdb_attrs **reply;
5cd47f
+    size_t reply_count;
5cd47f
+    errno_t ret;
5cd47f
+
5cd47f
+    req = tevent_req_callback_data(subreq, struct tevent_req);
5cd47f
+    state = tevent_req_data(req, struct sdap_autofs_get_entry_state);
5cd47f
+
5cd47f
+    ret = sdap_search_bases_return_first_recv(subreq, state, &reply_count,
5cd47f
+                                              &reply);
5cd47f
+    talloc_zfree(subreq);
5cd47f
+
5cd47f
+    ret = sdap_id_op_done(state->sdap_op, ret, &state->dp_error);
5cd47f
+    if (state->dp_error == DP_ERR_OK && ret != EOK) {
5cd47f
+        /* retry */
5cd47f
+        ret = sdap_autofs_get_entry_retry(req);
5cd47f
+        if (ret != EOK) {
5cd47f
+            tevent_req_error(req, ret);
5cd47f
+        }
5cd47f
+        return;
5cd47f
+    } else if (ret != EOK) {
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    if (reply_count == 0) {
5cd47f
+        ret = sysdb_del_autofsentry_by_key(state->id_ctx->be->domain,
5cd47f
+                                           state->mapname, state->entryname);
5cd47f
+        if (ret != EOK) {
5cd47f
+            DEBUG(SSSDBG_MINOR_FAILURE, "Cannot delete entry %s:%s\n",
5cd47f
+                  state->mapname, state->entryname);
5cd47f
+            tevent_req_error(req, ret);
5cd47f
+            return;
5cd47f
+        }
5cd47f
+
5cd47f
+        tevent_req_done(req);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    ret = add_autofs_entry(state->id_ctx->be->domain, state->mapname,
5cd47f
+                           state->opts, reply[0], time(NULL));
5cd47f
+    if (ret != EOK) {
5cd47f
+        DEBUG(SSSDBG_OP_FAILURE,
5cd47f
+             "Cannot save autofs entry %s:%s [%d]: %s\n",
5cd47f
+              state->mapname, state->entryname, ret, strerror(ret));
5cd47f
+        tevent_req_error(req, ret);
5cd47f
+        return;
5cd47f
+    }
5cd47f
+
5cd47f
+    tevent_req_done(req);
5cd47f
+}
5cd47f
+
5cd47f
+errno_t sdap_autofs_get_entry_recv(struct tevent_req *req,
5cd47f
+                                   int *dp_error)
5cd47f
+{
5cd47f
+    struct sdap_autofs_get_entry_state *state;
5cd47f
+
5cd47f
+    state = tevent_req_data(req, struct sdap_autofs_get_entry_state);
5cd47f
+
5cd47f
+    TEVENT_REQ_RETURN_ON_ERROR(req);
5cd47f
+
5cd47f
+    *dp_error = state->dp_error;
5cd47f
+
5cd47f
+    return EOK;
5cd47f
+}
5cd47f
diff --git a/src/providers/ldap/sdap_autofs.c b/src/providers/ldap/sdap_autofs.c
5cd47f
index 9a5ed11e8..b1e4b5aef 100644
5cd47f
--- a/src/providers/ldap/sdap_autofs.c
5cd47f
+++ b/src/providers/ldap/sdap_autofs.c
5cd47f
@@ -391,6 +391,90 @@ sdap_autofs_get_map_handler_recv(TALLOC_CTX *mem_ctx,
5cd47f
     return EOK;
5cd47f
 }
5cd47f
 
5cd47f
+struct sdap_autofs_get_entry_handler_state {
5cd47f
+    struct dp_reply_std reply;
5cd47f
+};
5cd47f
+
5cd47f
+static void sdap_autofs_get_entry_handler_done(struct tevent_req *subreq);
5cd47f
+
5cd47f
+struct tevent_req *
5cd47f
+sdap_autofs_get_entry_handler_send(TALLOC_CTX *mem_ctx,
5cd47f
+                                 struct sdap_id_ctx *id_ctx,
5cd47f
+                                 struct dp_autofs_data *data,
5cd47f
+                                 struct dp_req_params *params)
5cd47f
+{
5cd47f
+    struct sdap_autofs_get_entry_handler_state *state;
5cd47f
+    struct tevent_req *subreq;
5cd47f
+    struct tevent_req *req;
5cd47f
+    errno_t ret;
5cd47f
+
5cd47f
+    req = tevent_req_create(mem_ctx, &state,
5cd47f
+                            struct sdap_autofs_get_entry_handler_state);
5cd47f
+    if (req == NULL) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "tevent_req_create() failed\n");
5cd47f
+        return NULL;
5cd47f
+    }
5cd47f
+
5cd47f
+    DEBUG(SSSDBG_FUNC_DATA, "Requested refresh for: %s:%s\n",
5cd47f
+          data->mapname, data->entryname);
5cd47f
+
5cd47f
+    subreq = sdap_autofs_get_entry_send(mem_ctx, id_ctx,
5cd47f
+                                        data->mapname, data->entryname);
5cd47f
+    if (subreq == NULL) {
5cd47f
+        DEBUG(SSSDBG_CRIT_FAILURE, "Unable to send request for %s:%s.\n",
5cd47f
+              data->mapname, data->entryname);
5cd47f
+        ret = ENOMEM;
5cd47f
+        goto immediately;
5cd47f
+    }
5cd47f
+
5cd47f
+    tevent_req_set_callback(subreq, sdap_autofs_get_entry_handler_done, req);
5cd47f
+
5cd47f
+    return req;
5cd47f
+
5cd47f
+immediately:
5cd47f
+    dp_reply_std_set(&state->reply, DP_ERR_DECIDE, ret, NULL);
5cd47f
+
5cd47f
+    /* TODO For backward compatibility we always return EOK to DP now. */
5cd47f
+    tevent_req_done(req);
5cd47f
+    tevent_req_post(req, params->ev);
5cd47f
+
5cd47f
+    return req;
5cd47f
+}
5cd47f
+
5cd47f
+static void sdap_autofs_get_entry_handler_done(struct tevent_req *subreq)
5cd47f
+{
5cd47f
+    struct sdap_autofs_get_entry_handler_state *state;
5cd47f
+    struct tevent_req *req;
5cd47f
+    int dp_error;
5cd47f
+    errno_t ret;
5cd47f
+
5cd47f
+    req = tevent_req_callback_data(subreq, struct tevent_req);
5cd47f
+    state = tevent_req_data(req, struct sdap_autofs_get_entry_handler_state);
5cd47f
+
5cd47f
+    ret = sdap_autofs_get_entry_recv(subreq, &dp_error);
5cd47f
+    talloc_zfree(subreq);
5cd47f
+
5cd47f
+    /* TODO For backward compatibility we always return EOK to DP now. */
5cd47f
+    dp_reply_std_set(&state->reply, dp_error, ret, NULL);
5cd47f
+    tevent_req_done(req);
5cd47f
+}
5cd47f
+
5cd47f
+errno_t
5cd47f
+sdap_autofs_get_entry_handler_recv(TALLOC_CTX *mem_ctx,
5cd47f
+                                   struct tevent_req *req,
5cd47f
+                                   struct dp_reply_std *data)
5cd47f
+{
5cd47f
+    struct sdap_autofs_get_entry_handler_state *state = NULL;
5cd47f
+
5cd47f
+    state = tevent_req_data(req, struct sdap_autofs_get_entry_handler_state);
5cd47f
+
5cd47f
+    TEVENT_REQ_RETURN_ON_ERROR(req);
5cd47f
+
5cd47f
+    *data = state->reply;
5cd47f
+
5cd47f
+    return EOK;
5cd47f
+}
5cd47f
+
5cd47f
 errno_t sdap_autofs_init(TALLOC_CTX *mem_ctx,
5cd47f
                          struct be_ctx *be_ctx,
5cd47f
                          struct sdap_id_ctx *id_ctx,
5cd47f
@@ -414,5 +498,9 @@ errno_t sdap_autofs_init(TALLOC_CTX *mem_ctx,
5cd47f
                   sdap_autofs_get_map_handler_send, sdap_autofs_get_map_handler_recv, id_ctx,
5cd47f
                   struct sdap_id_ctx, struct dp_autofs_data, struct dp_reply_std);
5cd47f
 
5cd47f
+    dp_set_method(dp_methods, DPM_AUTOFS_GET_ENTRY,
5cd47f
+                  sdap_autofs_get_entry_handler_send, sdap_autofs_get_entry_handler_recv, id_ctx,
5cd47f
+                  struct sdap_id_ctx, struct dp_autofs_data, struct dp_reply_std);
5cd47f
+
5cd47f
     return EOK;
5cd47f
 }
5cd47f
diff --git a/src/providers/ldap/sdap_autofs.h b/src/providers/ldap/sdap_autofs.h
5cd47f
index 34b9ca953..210393746 100644
5cd47f
--- a/src/providers/ldap/sdap_autofs.h
5cd47f
+++ b/src/providers/ldap/sdap_autofs.h
5cd47f
@@ -50,5 +50,13 @@ struct tevent_req *sdap_autofs_get_map_send(TALLOC_CTX *mem_ctx,
5cd47f
 errno_t sdap_autofs_get_map_recv(struct tevent_req *req,
5cd47f
                                  int *dp_error);
5cd47f
 
5cd47f
+struct tevent_req *sdap_autofs_get_entry_send(TALLOC_CTX *mem_ctx,
5cd47f
+                                              struct sdap_id_ctx *id_ctx,
5cd47f
+                                              const char *mapname,
5cd47f
+                                              const char *entryname);
5cd47f
+
5cd47f
+errno_t sdap_autofs_get_entry_recv(struct tevent_req *req,
5cd47f
+                                   int *dp_error);
5cd47f
+
5cd47f
 #endif /* _SDAP_AUTOFS_H_ */
5cd47f
 
5cd47f
diff --git a/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c b/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c
5cd47f
index f4d0cb140..422fe90c4 100644
5cd47f
--- a/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c
5cd47f
+++ b/src/responder/common/cache_req/plugins/cache_req_autofs_entry_by_name.c
5cd47f
@@ -72,8 +72,8 @@ cache_req_autofs_entry_by_name_dp_send(TALLOC_CTX *mem_ctx,
5cd47f
                                        struct ldb_result *result)
5cd47f
 {
5cd47f
     return sss_dp_get_autofs_send(mem_ctx, cr->rctx, domain, true,
5cd47f
-                                  SSS_DP_AUTOFS_ENUMERATE,
5cd47f
-                                  data->name.name, NULL);
5cd47f
+                                  SSS_DP_AUTOFS_GET_ENTRY,
5cd47f
+                                  data->name.name, data->autofs_entry_name);
5cd47f
 }
5cd47f
 
5cd47f
 const struct cache_req_plugin cache_req_autofs_entry_by_name = {
5cd47f
-- 
5cd47f
2.20.1
5cd47f