summaryrefslogtreecommitdiffstats
path: root/src/responder/common
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2017-01-17 14:11:58 +0100
committerJakub Hrozek <jhrozek@redhat.com>2017-02-08 11:05:42 +0100
commit4df7aec645f87342f3a5146062abcb15f71f4fd9 (patch)
tree2ab8d7c56c0ef8c3b57452bc244f224e47a082d9 /src/responder/common
parent9492b3b26ac0b1898f836094074a9d8b38916e13 (diff)
downloadsssd-4df7aec645f87342f3a5146062abcb15f71f4fd9.tar.gz
sssd-4df7aec645f87342f3a5146062abcb15f71f4fd9.tar.xz
sssd-4df7aec645f87342f3a5146062abcb15f71f4fd9.zip
cache_req: move dp request to plugin
This will allow to use cache req even for object that do not use account request such as hosts. Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/responder/common')
-rw-r--r--src/responder/common/cache_req/cache_req_plugin.h39
-rw-r--r--src/responder/common/cache_req/cache_req_private.h13
-rw-r--r--src/responder/common/cache_req/cache_req_search.c106
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_common.c40
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_enum_groups.c24
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_enum_svc.c24
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_enum_users.c24
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_group_by_filter.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_group_by_id.c26
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_group_by_name.c26
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c26
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_initgroups_by_upn.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_netgroup_by_name.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_object_by_id.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_object_by_name.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_object_by_sid.c24
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_svc_by_name.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_svc_by_port.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_user_by_cert.c24
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_user_by_filter.c25
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_user_by_id.c26
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_user_by_name.c26
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_user_by_upn.c25
23 files changed, 360 insertions, 313 deletions
diff --git a/src/responder/common/cache_req/cache_req_plugin.h b/src/responder/common/cache_req/cache_req_plugin.h
index 59ef8bad1..61e346dac 100644
--- a/src/responder/common/cache_req/cache_req_plugin.h
+++ b/src/responder/common/cache_req/cache_req_plugin.h
@@ -117,18 +117,29 @@ typedef errno_t
struct ldb_result **_result);
/**
- * Return parameters for Data Provider request.
+ * Send Data Provider request.
*
- * @return EOK If everything went fine.
- * @return Other errno code in case of an error.
+ * @return Tevent request on success.
+ * @return NULL on error.
*/
-typedef errno_t
-(*cache_req_dpreq_params_fn)(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag);
+typedef struct tevent_req *
+(*cache_req_dp_send_fn)(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result);
+
+/**
+ * Process result of Data Provider request.
+ *
+ * Do not free subreq! It will be freed in the caller.
+ *
+ * @return True if data provider request succeeded.
+ * @return False if there was an error.
+ */
+typedef bool
+(*cache_req_dp_recv_fn)(struct tevent_req *subreq,
+ struct cache_req *cr);
struct cache_req_plugin {
/**
@@ -137,11 +148,6 @@ struct cache_req_plugin {
const char *name;
/**
- * Data provider request type.
- */
- enum sss_dp_acct_type dp_type;
-
- /**
* Expiration timestamp attribute name.
*/
const char *attr_expiration;
@@ -202,7 +208,8 @@ struct cache_req_plugin {
cache_req_ncache_check_fn ncache_check_fn;
cache_req_ncache_add_fn ncache_add_fn;
cache_req_lookup_fn lookup_fn;
- cache_req_dpreq_params_fn dpreq_params_fn;
+ cache_req_dp_send_fn dp_send_fn;
+ cache_req_dp_recv_fn dp_recv_fn;
};
extern const struct cache_req_plugin cache_req_user_by_name;
diff --git a/src/responder/common/cache_req/cache_req_private.h b/src/responder/common/cache_req/cache_req_private.h
index e79fe869b..b544b739e 100644
--- a/src/responder/common/cache_req/cache_req_private.h
+++ b/src/responder/common/cache_req/cache_req_private.h
@@ -38,11 +38,6 @@ struct cache_req {
struct sss_nc_ctx *ncache;
int midpoint;
- /* Data Provider request type resolved from @type.
- * FIXME: This is currently needed for data provider calls. We should
- * refactor responder_dp.c to get rid of this member. */
- enum sss_dp_acct_type dp_type;
-
/* Domain related informations. */
struct sss_domain_info *domain;
@@ -116,6 +111,10 @@ cache_req_create_result(TALLOC_CTX *mem_ctx,
const char *lookup_name,
const char *well_known_domain);
+struct ldb_result *
+cache_req_create_ldb_result_from_msg(TALLOC_CTX *mem_ctx,
+ struct ldb_message *ldb_msg);
+
struct cache_req_result *
cache_req_create_result_from_msg(TALLOC_CTX *mem_ctx,
struct sss_domain_info *domain,
@@ -132,4 +131,8 @@ cache_req_well_known_sid_result(TALLOC_CTX *mem_ctx,
const char *sid,
const char *name);
+bool
+cache_req_common_dp_recv(struct tevent_req *subreq,
+ struct cache_req *cr);
+
#endif /* _CACHE_REQ_PRIVATE_H_ */
diff --git a/src/responder/common/cache_req/cache_req_search.c b/src/responder/common/cache_req/cache_req_search.c
index aabff389a..eed82cf26 100644
--- a/src/responder/common/cache_req/cache_req_search.c
+++ b/src/responder/common/cache_req/cache_req_search.c
@@ -138,70 +138,6 @@ done:
return ret;
}
-static errno_t cache_req_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
-{
- errno_t ret;
-
- if (cr->plugin->dpreq_params_fn == NULL) {
- CACHE_REQ_DEBUG(SSSDBG_CRIT_FAILURE, cr,
- "Bug: No dpreq params function specified\n");
- return ERR_INTERNAL;
- }
-
-
- CACHE_REQ_DEBUG(SSSDBG_TRACE_INTERNAL, cr,
- "Creating DP request parameters\n");
-
- ret = cr->plugin->dpreq_params_fn(mem_ctx, cr, result, _string, _id, _flag);
- if (ret != EOK) {
- CACHE_REQ_DEBUG(SSSDBG_CRIT_FAILURE, cr,
- "Unable to create DP request parameters [%d]: %s\n",
- ret, sss_strerror(ret));
- return ret;
- }
-
- return EOK;
-}
-
-static bool cache_req_search_process_dp(TALLOC_CTX *mem_ctx,
- struct tevent_req *subreq,
- struct cache_req *cr)
-{
- char *err_msg;
- dbus_uint16_t err_maj;
- dbus_uint32_t err_min;
- errno_t ret;
-
- ret = sss_dp_get_account_recv(mem_ctx, subreq, &err_maj, &err_min, &err_msg);
- talloc_zfree(subreq);
- if (ret != EOK) {
- CACHE_REQ_DEBUG(SSSDBG_OP_FAILURE, cr,
- "Could not get account info [%d]: %s\n",
- ret, sss_strerror(ret));
- CACHE_REQ_DEBUG(SSSDBG_TRACE_FUNC, cr,
- "Due to an error we will return cached data\n");
-
- return false;
- }
-
- if (err_maj) {
- CACHE_REQ_DEBUG(SSSDBG_OP_FAILURE, cr,
- "Data Provider Error: %u, %u, %s\n",
- (unsigned int)err_maj, (unsigned int)err_min, err_msg);
- CACHE_REQ_DEBUG(SSSDBG_TRACE_FUNC, cr,
- "Due to an error we will return cached data\n");
-
- return false;
- }
-
- return true;
-}
-
static enum cache_object_status
cache_req_expiration_status(struct cache_req *cr,
struct ldb_result *result)
@@ -316,19 +252,10 @@ static errno_t cache_req_search_dp(struct tevent_req *req,
{
struct cache_req_search_state *state;
struct tevent_req *subreq;
- const char *extra_flag;
- const char *search_str;
- uint32_t search_id;
errno_t ret;
state = tevent_req_data(req, struct cache_req_search_state);
- ret = cache_req_dpreq_params(state, state->cr, state->result,
- &search_str, &search_id, &extra_flag);
- if (ret != EOK) {
- return ret;
- }
-
switch (status) {
case CACHE_OBJECT_MIDPOINT:
/* Out of band update. The calling function will return the cached
@@ -339,10 +266,10 @@ static errno_t cache_req_search_dp(struct tevent_req *req,
"Performing midpoint cache update of [%s]\n",
state->cr->debugobj);
- subreq = sss_dp_get_account_send(state->cr->rctx, state->cr->rctx,
- state->cr->domain, true,
- state->cr->dp_type,
- search_str, search_id, extra_flag);
+ subreq = state->cr->plugin->dp_send_fn(state->cr, state->cr,
+ state->cr->data,
+ state->cr->domain,
+ state->result);
if (subreq == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory sending out-of-band "
"data provider request\n");
@@ -351,31 +278,37 @@ static errno_t cache_req_search_dp(struct tevent_req *req,
tevent_req_set_callback(subreq, cache_req_search_oob_done, req);
}
- return EOK;
+ ret = EOK;
+ break;
case CACHE_OBJECT_EXPIRED:
case CACHE_OBJECT_MISSING:
CACHE_REQ_DEBUG(SSSDBG_TRACE_FUNC, state->cr,
"Looking up [%s] in data provider\n",
state->cr->debugobj);
- subreq = sss_dp_get_account_send(state, state->cr->rctx,
- state->cr->domain, true,
- state->cr->dp_type,
- search_str, search_id, extra_flag);
+ subreq = state->cr->plugin->dp_send_fn(state->cr, state->cr,
+ state->cr->data,
+ state->cr->domain,
+ state->result);
if (subreq == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE,
"Out of memory sending data provider request\n");
- return ENOMEM;
+ ret = ENOMEM;
+ break;
}
tevent_req_set_callback(subreq, cache_req_search_done, req);
- return EAGAIN;
+ ret = EAGAIN;
+ break;
default:
/* error */
CACHE_REQ_DEBUG(SSSDBG_CRIT_FAILURE, state->cr,
"Unexpected status [%d]\n", status);
- return ret;
+ ret = ERR_INTERNAL;
+ break;
}
+
+ return ret;
}
static void cache_req_search_oob_done(struct tevent_req *subreq)
@@ -395,7 +328,8 @@ static void cache_req_search_done(struct tevent_req *subreq)
req = tevent_req_callback_data(subreq, struct tevent_req);
state = tevent_req_data(req, struct cache_req_search_state);
- state->dp_success = cache_req_search_process_dp(state, subreq, state->cr);
+ state->dp_success = state->cr->plugin->dp_recv_fn(subreq, state->cr);
+ talloc_zfree(subreq);
/* Get result from cache again. */
ret = cache_req_search_cache(state, state->cr, &state->result);
diff --git a/src/responder/common/cache_req/plugins/cache_req_common.c b/src/responder/common/cache_req/plugins/cache_req_common.c
index 4c0f358fa..b80f310fe 100644
--- a/src/responder/common/cache_req/plugins/cache_req_common.c
+++ b/src/responder/common/cache_req/plugins/cache_req_common.c
@@ -107,3 +107,43 @@ cache_req_well_known_sid_result(TALLOC_CTX *mem_ctx,
return result;
}
+
+bool
+cache_req_common_dp_recv(struct tevent_req *subreq,
+ struct cache_req *cr)
+{
+ char *err_msg;
+ dbus_uint16_t err_maj;
+ dbus_uint32_t err_min;
+ errno_t ret;
+ bool bret;
+
+ ret = sss_dp_req_recv(NULL, subreq, &err_maj, &err_min, &err_msg);
+ if (ret != EOK) {
+ CACHE_REQ_DEBUG(SSSDBG_OP_FAILURE, cr,
+ "Could not get account info [%d]: %s\n",
+ ret, sss_strerror(ret));
+ CACHE_REQ_DEBUG(SSSDBG_TRACE_FUNC, cr,
+ "Due to an error we will return cached data\n");
+
+ bret = false;
+ goto done;
+ }
+
+ if (err_maj) {
+ CACHE_REQ_DEBUG(SSSDBG_OP_FAILURE, cr,
+ "Data Provider Error: %u, %u, %s\n",
+ (unsigned int)err_maj, (unsigned int)err_min, err_msg);
+ CACHE_REQ_DEBUG(SSSDBG_TRACE_FUNC, cr,
+ "Due to an error we will return cached data\n");
+
+ bret = false;
+ goto done;
+ }
+
+ bret = true;
+
+done:
+ talloc_free(err_msg);
+ return bret;
+}
diff --git a/src/responder/common/cache_req/plugins/cache_req_enum_groups.c b/src/responder/common/cache_req/plugins/cache_req_enum_groups.c
index 2056dc2cc..dbb40c983 100644
--- a/src/responder/common/cache_req/plugins/cache_req_enum_groups.c
+++ b/src/responder/common/cache_req/plugins/cache_req_enum_groups.c
@@ -44,24 +44,19 @@ cache_req_enum_groups_lookup(TALLOC_CTX *mem_ctx,
return sysdb_enumgrent_with_views(mem_ctx, domain, _result);
}
-static errno_t
-cache_req_enum_groups_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_enum_groups_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = NULL;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_GROUP, NULL, 0, NULL);
}
const struct cache_req_plugin cache_req_enum_groups = {
.name = "Enumerate groups",
- .dp_type = SSS_DP_GROUP,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -81,7 +76,8 @@ const struct cache_req_plugin cache_req_enum_groups = {
.ncache_check_fn = NULL,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_enum_groups_lookup,
- .dpreq_params_fn = cache_req_enum_groups_dpreq_params
+ .dp_send_fn = cache_req_enum_groups_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_enum_svc.c b/src/responder/common/cache_req/plugins/cache_req_enum_svc.c
index e85021297..2c4917cde 100644
--- a/src/responder/common/cache_req/plugins/cache_req_enum_svc.c
+++ b/src/responder/common/cache_req/plugins/cache_req_enum_svc.c
@@ -45,24 +45,19 @@ cache_req_enum_svc_lookup(TALLOC_CTX *mem_ctx,
return sysdb_enumservent(mem_ctx, domain, _result);
}
-static errno_t
-cache_req_enum_svc_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_enum_svc_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = NULL;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_SERVICES, NULL, 0, NULL);
}
const struct cache_req_plugin cache_req_enum_svc = {
.name = "Enumerate services",
- .dp_type = SSS_DP_SERVICES,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -82,7 +77,8 @@ const struct cache_req_plugin cache_req_enum_svc = {
.ncache_check_fn = NULL,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_enum_svc_lookup,
- .dpreq_params_fn = cache_req_enum_svc_dpreq_params
+ .dp_send_fn = cache_req_enum_svc_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_enum_users.c b/src/responder/common/cache_req/plugins/cache_req_enum_users.c
index 2adeddb6b..3b1a85841 100644
--- a/src/responder/common/cache_req/plugins/cache_req_enum_users.c
+++ b/src/responder/common/cache_req/plugins/cache_req_enum_users.c
@@ -44,24 +44,19 @@ cache_req_enum_users_lookup(TALLOC_CTX *mem_ctx,
return sysdb_enumpwent_with_views(mem_ctx, domain, _result);
}
-static errno_t
-cache_req_enum_users_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_enum_users_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = NULL;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_USER, NULL, 0, NULL);
}
const struct cache_req_plugin cache_req_enum_users = {
.name = "Enumerate users",
- .dp_type = SSS_DP_USER,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -81,7 +76,8 @@ const struct cache_req_plugin cache_req_enum_users = {
.ncache_check_fn = NULL,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_enum_users_lookup,
- .dpreq_params_fn = cache_req_enum_users_dpreq_params
+ .dp_send_fn = cache_req_enum_users_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_group_by_filter.c b/src/responder/common/cache_req/plugins/cache_req_group_by_filter.c
index bc42eb7db..88e1137a3 100644
--- a/src/responder/common/cache_req/plugins/cache_req_group_by_filter.c
+++ b/src/responder/common/cache_req/plugins/cache_req_group_by_filter.c
@@ -99,24 +99,20 @@ cache_req_group_by_filter_lookup(TALLOC_CTX *mem_ctx,
return ret;
}
-static errno_t
-cache_req_group_by_filter_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_group_by_filter_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = cr->data->id;
- *_string = cr->data->name.lookup;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_WILDCARD_GROUP,
+ cr->data->name.lookup, cr->data->id, NULL);
}
const struct cache_req_plugin cache_req_group_by_filter = {
.name = "Group by filter",
- .dp_type = SSS_DP_WILDCARD_GROUP,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -136,7 +132,8 @@ const struct cache_req_plugin cache_req_group_by_filter = {
.ncache_check_fn = NULL,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_group_by_filter_lookup,
- .dpreq_params_fn = cache_req_group_by_filter_dpreq_params
+ .dp_send_fn = cache_req_group_by_filter_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_group_by_id.c b/src/responder/common/cache_req/plugins/cache_req_group_by_id.c
index e48588087..e98f76f8c 100644
--- a/src/responder/common/cache_req/plugins/cache_req_group_by_id.c
+++ b/src/responder/common/cache_req/plugins/cache_req_group_by_id.c
@@ -102,9 +102,30 @@ cache_req_group_by_id_dpreq_params(TALLOC_CTX *mem_ctx,
return EOK;
}
+static struct tevent_req *
+cache_req_group_by_id_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
+{
+ const char *string;
+ const char *flag;
+ uint32_t id;
+ errno_t ret;
+
+ ret = cache_req_group_by_id_dpreq_params(mem_ctx, cr, result,
+ &string, &id, &flag);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_GROUP, string, id, flag);
+}
+
const struct cache_req_plugin cache_req_group_by_id = {
.name = "Group by ID",
- .dp_type = SSS_DP_GROUP,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -124,7 +145,8 @@ const struct cache_req_plugin cache_req_group_by_id = {
.ncache_check_fn = cache_req_group_by_id_ncache_check,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_group_by_id_lookup,
- .dpreq_params_fn = cache_req_group_by_id_dpreq_params
+ .dp_send_fn = cache_req_group_by_id_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_group_by_name.c b/src/responder/common/cache_req/plugins/cache_req_group_by_name.c
index 962b38866..be1eb9bd8 100644
--- a/src/responder/common/cache_req/plugins/cache_req_group_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_group_by_name.c
@@ -152,9 +152,30 @@ cache_req_group_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
return EOK;
}
+static struct tevent_req *
+cache_req_group_by_name_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
+{
+ const char *string;
+ const char *flag;
+ uint32_t id;
+ errno_t ret;
+
+ ret = cache_req_group_by_name_dpreq_params(mem_ctx, cr, result,
+ &string, &id, &flag);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_GROUP, string, id, flag);
+}
+
const struct cache_req_plugin cache_req_group_by_name = {
.name = "Group by name",
- .dp_type = SSS_DP_GROUP,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -174,7 +195,8 @@ const struct cache_req_plugin cache_req_group_by_name = {
.ncache_check_fn = cache_req_group_by_name_ncache_check,
.ncache_add_fn = cache_req_group_by_name_ncache_add,
.lookup_fn = cache_req_group_by_name_lookup,
- .dpreq_params_fn = cache_req_group_by_name_dpreq_params
+ .dp_send_fn = cache_req_group_by_name_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c b/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c
index d2f03cbea..10fb67cbf 100644
--- a/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c
@@ -167,9 +167,30 @@ cache_req_initgroups_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
return EOK;
}
+static struct tevent_req *
+cache_req_initgroups_by_name_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
+{
+ const char *string;
+ const char *flag;
+ uint32_t id;
+ errno_t ret;
+
+ ret = cache_req_initgroups_by_name_dpreq_params(mem_ctx, cr, result,
+ &string, &id, &flag);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_INITGROUPS, string, id, flag);
+}
+
const struct cache_req_plugin cache_req_initgroups_by_name = {
.name = "Initgroups by name",
- .dp_type = SSS_DP_INITGROUPS,
.attr_expiration = SYSDB_INITGR_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -189,7 +210,8 @@ const struct cache_req_plugin cache_req_initgroups_by_name = {
.ncache_check_fn = cache_req_initgroups_by_name_ncache_check,
.ncache_add_fn = cache_req_initgroups_by_name_ncache_add,
.lookup_fn = cache_req_initgroups_by_name_lookup,
- .dpreq_params_fn = cache_req_initgroups_by_name_dpreq_params
+ .dp_send_fn = cache_req_initgroups_by_name_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_initgroups_by_upn.c b/src/responder/common/cache_req/plugins/cache_req_initgroups_by_upn.c
index 9b2d07d4a..266ec7b8a 100644
--- a/src/responder/common/cache_req/plugins/cache_req_initgroups_by_upn.c
+++ b/src/responder/common/cache_req/plugins/cache_req_initgroups_by_upn.c
@@ -88,24 +88,20 @@ cache_req_initgroups_by_upn_lookup(TALLOC_CTX *mem_ctx,
_result);
}
-static errno_t
-cache_req_initgroups_by_upn_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_initgroups_by_upn_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->name.lookup;
- *_flag = EXTRA_NAME_IS_UPN;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_INITGROUPS, cr->data->name.lookup,
+ 0, EXTRA_NAME_IS_UPN);
}
const struct cache_req_plugin cache_req_initgroups_by_upn = {
.name = "Initgroups by UPN",
- .dp_type = SSS_DP_INITGROUPS,
.attr_expiration = SYSDB_INITGR_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -125,5 +121,6 @@ const struct cache_req_plugin cache_req_initgroups_by_upn = {
.ncache_check_fn = cache_req_initgroups_by_upn_ncache_check,
.ncache_add_fn = cache_req_initgroups_by_upn_ncache_add,
.lookup_fn = cache_req_initgroups_by_upn_lookup,
- .dpreq_params_fn = cache_req_initgroups_by_upn_dpreq_params
+ .dp_send_fn = cache_req_initgroups_by_upn_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
diff --git a/src/responder/common/cache_req/plugins/cache_req_netgroup_by_name.c b/src/responder/common/cache_req/plugins/cache_req_netgroup_by_name.c
index 5b19edeb2..bc6fc9a8f 100644
--- a/src/responder/common/cache_req/plugins/cache_req_netgroup_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_netgroup_by_name.c
@@ -96,24 +96,20 @@ cache_req_netgroup_by_name_lookup(TALLOC_CTX *mem_ctx,
return sysdb_getnetgr(mem_ctx, domain, data->name.lookup, _result);
}
-static errno_t
-cache_req_netgroup_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_netgroup_by_name_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->name.lookup;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_NETGR, cr->data->name.lookup,
+ 0, NULL);
}
const struct cache_req_plugin cache_req_netgroup_by_name = {
.name = "Netgroup by name",
- .dp_type = SSS_DP_NETGR,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -133,7 +129,8 @@ const struct cache_req_plugin cache_req_netgroup_by_name = {
.ncache_check_fn = cache_req_netgroup_by_name_ncache_check,
.ncache_add_fn = cache_req_netgroup_by_name_ncache_add,
.lookup_fn = cache_req_netgroup_by_name_lookup,
- .dpreq_params_fn = cache_req_netgroup_by_name_dpreq_params
+ .dp_send_fn = cache_req_netgroup_by_name_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_object_by_id.c b/src/responder/common/cache_req/plugins/cache_req_object_by_id.c
index 3f4780761..046e313c8 100644
--- a/src/responder/common/cache_req/plugins/cache_req_object_by_id.c
+++ b/src/responder/common/cache_req/plugins/cache_req_object_by_id.c
@@ -79,24 +79,20 @@ cache_req_object_by_id_lookup(TALLOC_CTX *mem_ctx,
data->attrs, _result);
}
-static errno_t
-cache_req_object_by_id_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_object_by_id_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = cr->data->id;
- *_string = NULL;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_USER_AND_GROUP, NULL,
+ cr->data->id, NULL);
}
const struct cache_req_plugin cache_req_object_by_id = {
.name = "Object by ID",
- .dp_type = SSS_DP_USER_AND_GROUP,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -116,7 +112,8 @@ const struct cache_req_plugin cache_req_object_by_id = {
.ncache_check_fn = cache_req_object_by_id_ncache_check,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_object_by_id_lookup,
- .dpreq_params_fn = cache_req_object_by_id_dpreq_params
+ .dp_send_fn = cache_req_object_by_id_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_object_by_name.c b/src/responder/common/cache_req/plugins/cache_req_object_by_name.c
index 6829d0ec9..2b2caeea1 100644
--- a/src/responder/common/cache_req/plugins/cache_req_object_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_object_by_name.c
@@ -172,24 +172,20 @@ cache_req_object_by_name_lookup(TALLOC_CTX *mem_ctx,
data->attrs, _result);
}
-static errno_t
-cache_req_object_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_object_by_name_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->name.lookup;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_USER_AND_GROUP,
+ cr->data->name.lookup, 0, NULL);
}
const struct cache_req_plugin cache_req_object_by_name = {
.name = "Object by name",
- .dp_type = SSS_DP_USER_AND_GROUP,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -209,7 +205,8 @@ const struct cache_req_plugin cache_req_object_by_name = {
.ncache_check_fn = cache_req_object_by_name_ncache_check,
.ncache_add_fn = cache_req_object_by_name_ncache_add,
.lookup_fn = cache_req_object_by_name_lookup,
- .dpreq_params_fn = cache_req_object_by_name_dpreq_params
+ .dp_send_fn = cache_req_object_by_name_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_object_by_sid.c b/src/responder/common/cache_req/plugins/cache_req_object_by_sid.c
index 6a6eb8e72..ab5776631 100644
--- a/src/responder/common/cache_req/plugins/cache_req_object_by_sid.c
+++ b/src/responder/common/cache_req/plugins/cache_req_object_by_sid.c
@@ -89,24 +89,19 @@ cache_req_object_by_sid_lookup(TALLOC_CTX *mem_ctx,
_result);
}
-static errno_t
-cache_req_object_by_sid_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_object_by_sid_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->sid;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_SECID, cr->data->sid, 0, NULL);
}
const struct cache_req_plugin cache_req_object_by_sid = {
.name = "Object by SID",
- .dp_type = SSS_DP_SECID,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -126,7 +121,8 @@ const struct cache_req_plugin cache_req_object_by_sid = {
.ncache_check_fn = cache_req_object_by_sid_ncache_check,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_object_by_sid_lookup,
- .dpreq_params_fn = cache_req_object_by_sid_dpreq_params
+ .dp_send_fn = cache_req_object_by_sid_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_svc_by_name.c b/src/responder/common/cache_req/plugins/cache_req_svc_by_name.c
index 9562354ed..cbb186df0 100644
--- a/src/responder/common/cache_req/plugins/cache_req_svc_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_svc_by_name.c
@@ -120,24 +120,20 @@ cache_req_svc_by_name_lookup(TALLOC_CTX *mem_ctx,
data->svc.protocol.lookup, _result);
}
-static errno_t
-cache_req_svc_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_svc_by_name_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->svc.name->lookup;
- *_flag = cr->data->svc.protocol.lookup;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_SERVICES, cr->data->svc.name->lookup,
+ 0, cr->data->svc.protocol.lookup);
}
const struct cache_req_plugin cache_req_svc_by_name = {
.name = "Service by name",
- .dp_type = SSS_DP_SERVICES,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -157,7 +153,8 @@ const struct cache_req_plugin cache_req_svc_by_name = {
.ncache_check_fn = cache_req_svc_by_name_ncache_check,
.ncache_add_fn = cache_req_svc_by_name_ncache_add,
.lookup_fn = cache_req_svc_by_name_lookup,
- .dpreq_params_fn = cache_req_svc_by_name_dpreq_params
+ .dp_send_fn = cache_req_svc_by_name_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_svc_by_port.c b/src/responder/common/cache_req/plugins/cache_req_svc_by_port.c
index 55117492f..1da23d450 100644
--- a/src/responder/common/cache_req/plugins/cache_req_svc_by_port.c
+++ b/src/responder/common/cache_req/plugins/cache_req_svc_by_port.c
@@ -93,24 +93,20 @@ cache_req_svc_by_port_lookup(TALLOC_CTX *mem_ctx,
data->svc.protocol.lookup, _result);
}
-static errno_t
-cache_req_svc_by_port_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_svc_by_port_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = cr->data->svc.port;
- *_string = NULL;
- *_flag = cr->data->svc.protocol.lookup;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_SERVICES, NULL, cr->data->svc.port,
+ cr->data->svc.protocol.lookup);
}
const struct cache_req_plugin cache_req_svc_by_port = {
.name = "Service by port",
- .dp_type = SSS_DP_SERVICES,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -130,7 +126,8 @@ const struct cache_req_plugin cache_req_svc_by_port = {
.ncache_check_fn = cache_req_svc_by_port_ncache_check,
.ncache_add_fn = cache_req_svc_by_port_ncache_add,
.lookup_fn = cache_req_svc_by_port_lookup,
- .dpreq_params_fn = cache_req_svc_by_port_dpreq_params
+ .dp_send_fn = cache_req_svc_by_port_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_user_by_cert.c b/src/responder/common/cache_req/plugins/cache_req_user_by_cert.c
index 5203d3f94..cead8524b 100644
--- a/src/responder/common/cache_req/plugins/cache_req_user_by_cert.c
+++ b/src/responder/common/cache_req/plugins/cache_req_user_by_cert.c
@@ -63,24 +63,19 @@ cache_req_user_by_cert_lookup(TALLOC_CTX *mem_ctx,
_result);
}
-static errno_t
-cache_req_user_by_cert_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_user_by_cert_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->cert;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_CERT, cr->data->cert, 0, NULL);
}
const struct cache_req_plugin cache_req_user_by_cert = {
.name = "User by certificate",
- .dp_type = SSS_DP_CERT,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -100,7 +95,8 @@ const struct cache_req_plugin cache_req_user_by_cert = {
.ncache_check_fn = cache_req_user_by_cert_ncache_check,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_user_by_cert_lookup,
- .dpreq_params_fn = cache_req_user_by_cert_dpreq_params
+ .dp_send_fn = cache_req_user_by_cert_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_user_by_filter.c b/src/responder/common/cache_req/plugins/cache_req_user_by_filter.c
index 4c328a5d9..ee7e69399 100644
--- a/src/responder/common/cache_req/plugins/cache_req_user_by_filter.c
+++ b/src/responder/common/cache_req/plugins/cache_req_user_by_filter.c
@@ -99,24 +99,20 @@ cache_req_user_by_filter_lookup(TALLOC_CTX *mem_ctx,
return ret;
}
-static errno_t
-cache_req_user_by_filter_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_user_by_filter_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = cr->data->id;
- *_string = cr->data->name.lookup;
- *_flag = NULL;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_WILDCARD_USER, cr->data->name.lookup,
+ cr->data->id, NULL);
}
const struct cache_req_plugin cache_req_user_by_filter = {
.name = "User by filter",
- .dp_type = SSS_DP_WILDCARD_USER,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -136,7 +132,8 @@ const struct cache_req_plugin cache_req_user_by_filter = {
.ncache_check_fn = NULL,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_user_by_filter_lookup,
- .dpreq_params_fn = cache_req_user_by_filter_dpreq_params
+ .dp_send_fn = cache_req_user_by_filter_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_user_by_id.c b/src/responder/common/cache_req/plugins/cache_req_user_by_id.c
index d794d248b..fa783714b 100644
--- a/src/responder/common/cache_req/plugins/cache_req_user_by_id.c
+++ b/src/responder/common/cache_req/plugins/cache_req_user_by_id.c
@@ -102,9 +102,30 @@ cache_req_user_by_id_dpreq_params(TALLOC_CTX *mem_ctx,
return EOK;
}
+static struct tevent_req *
+cache_req_user_by_id_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
+{
+ const char *string;
+ const char *flag;
+ uint32_t id;
+ errno_t ret;
+
+ ret = cache_req_user_by_id_dpreq_params(mem_ctx, cr, result,
+ &string, &id, &flag);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_USER, string, id, flag);
+}
+
const struct cache_req_plugin cache_req_user_by_id = {
.name = "User by ID",
- .dp_type = SSS_DP_USER,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -124,7 +145,8 @@ const struct cache_req_plugin cache_req_user_by_id = {
.ncache_check_fn = cache_req_user_by_id_ncache_check,
.ncache_add_fn = NULL,
.lookup_fn = cache_req_user_by_id_lookup,
- .dpreq_params_fn = cache_req_user_by_id_dpreq_params
+ .dp_send_fn = cache_req_user_by_id_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_user_by_name.c b/src/responder/common/cache_req/plugins/cache_req_user_by_name.c
index 3f343870c..4289f5fd4 100644
--- a/src/responder/common/cache_req/plugins/cache_req_user_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_user_by_name.c
@@ -157,9 +157,30 @@ cache_req_user_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
return EOK;
}
+static struct tevent_req *
+cache_req_user_by_name_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
+{
+ const char *string;
+ const char *flag;
+ uint32_t id;
+ errno_t ret;
+
+ ret = cache_req_user_by_name_dpreq_params(mem_ctx, cr, result,
+ &string, &id, &flag);
+ if (ret != EOK) {
+ return NULL;
+ }
+
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_USER, string, id, flag);
+}
+
const struct cache_req_plugin cache_req_user_by_name = {
.name = "User by name",
- .dp_type = SSS_DP_USER,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = true,
.ignore_default_domain = false,
@@ -179,7 +200,8 @@ const struct cache_req_plugin cache_req_user_by_name = {
.ncache_check_fn = cache_req_user_by_name_ncache_check,
.ncache_add_fn = cache_req_user_by_name_ncache_add,
.lookup_fn = cache_req_user_by_name_lookup,
- .dpreq_params_fn = cache_req_user_by_name_dpreq_params
+ .dp_send_fn = cache_req_user_by_name_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};
struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_user_by_upn.c b/src/responder/common/cache_req/plugins/cache_req_user_by_upn.c
index 4c6e6bcd0..f496479a3 100644
--- a/src/responder/common/cache_req/plugins/cache_req_user_by_upn.c
+++ b/src/responder/common/cache_req/plugins/cache_req_user_by_upn.c
@@ -92,24 +92,20 @@ cache_req_user_by_upn_lookup(TALLOC_CTX *mem_ctx,
data->attrs, _result);
}
-static errno_t
-cache_req_user_by_upn_dpreq_params(TALLOC_CTX *mem_ctx,
- struct cache_req *cr,
- struct ldb_result *result,
- const char **_string,
- uint32_t *_id,
- const char **_flag)
+static struct tevent_req *
+cache_req_user_by_upn_dp_send(TALLOC_CTX *mem_ctx,
+ struct cache_req *cr,
+ struct cache_req_data *data,
+ struct sss_domain_info *domain,
+ struct ldb_result *result)
{
- *_id = 0;
- *_string = cr->data->name.lookup;
- *_flag = EXTRA_NAME_IS_UPN;
-
- return EOK;
+ return sss_dp_get_account_send(mem_ctx, cr->rctx, domain, true,
+ SSS_DP_USER, cr->data->name.lookup,
+ 0, EXTRA_NAME_IS_UPN);
}
const struct cache_req_plugin cache_req_user_by_upn = {
.name = "User by UPN",
- .dp_type = SSS_DP_USER,
.attr_expiration = SYSDB_CACHE_EXPIRE,
.parse_name = false,
.ignore_default_domain = false,
@@ -129,5 +125,6 @@ const struct cache_req_plugin cache_req_user_by_upn = {
.ncache_check_fn = cache_req_user_by_upn_ncache_check,
.ncache_add_fn = cache_req_user_by_upn_ncache_add,
.lookup_fn = cache_req_user_by_upn_lookup,
- .dpreq_params_fn = cache_req_user_by_upn_dpreq_params
+ .dp_send_fn = cache_req_user_by_upn_dp_send,
+ .dp_recv_fn = cache_req_common_dp_recv
};