dpward / rpms / sssd

Forked from rpms/sssd 3 years ago
Clone
Blob Blame History Raw
From 4127348220f6b32886fcc1e3f890a2e9fdedf7ed Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek@redhat.com>
Date: Mon, 30 Oct 2017 20:52:42 +0100
Subject: [PATCH 79/83] CACHE_REQ: Add plugin methods required for the
 domain-locator request
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Adds three new cache_req plugin methods:
    - cache_req_dp_get_domain_check_fn - check if it is time to run the
                                         locator request again
    - cache_req_dp_get_domain_send/recv_fn - run the locator itself

The reason we added also the checker is that when the locator runs,
we add a temporary entry into the negative cache that would denote that
the locator ran and the ordinary domain negative cache (UID negcache,
GID negcache, ..) were set for the domains and can be still used to
skip domains that we know do not contain the account without calling
the getAccountDomain handler again.

If we didn't have this checker, requesting an entry from a domain
further down the domain list would always call the locator, only
to always receive the same results.

Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
(cherry picked from commit 2856dac5818265a6b4e42d768b73c65e333d14ff)
---
 src/responder/common/cache_req/cache_req_plugin.h  | 69 ++++++++++++++++++++++
 .../cache_req/plugins/cache_req_enum_groups.c      |  5 +-
 .../common/cache_req/plugins/cache_req_enum_svc.c  |  5 +-
 .../cache_req/plugins/cache_req_enum_users.c       |  5 +-
 .../cache_req/plugins/cache_req_group_by_filter.c  |  5 +-
 .../cache_req/plugins/cache_req_group_by_id.c      |  5 +-
 .../cache_req/plugins/cache_req_group_by_name.c    |  5 +-
 .../cache_req/plugins/cache_req_host_by_name.c     |  5 +-
 .../plugins/cache_req_initgroups_by_name.c         |  5 +-
 .../plugins/cache_req_initgroups_by_upn.c          |  5 +-
 .../cache_req/plugins/cache_req_netgroup_by_name.c |  5 +-
 .../cache_req/plugins/cache_req_object_by_id.c     |  5 +-
 .../cache_req/plugins/cache_req_object_by_name.c   |  5 +-
 .../cache_req/plugins/cache_req_object_by_sid.c    |  5 +-
 .../cache_req/plugins/cache_req_svc_by_name.c      |  5 +-
 .../cache_req/plugins/cache_req_svc_by_port.c      |  5 +-
 .../cache_req/plugins/cache_req_user_by_cert.c     |  5 +-
 .../cache_req/plugins/cache_req_user_by_filter.c   |  5 +-
 .../cache_req/plugins/cache_req_user_by_id.c       |  5 +-
 .../cache_req/plugins/cache_req_user_by_name.c     |  5 +-
 .../cache_req/plugins/cache_req_user_by_upn.c      |  5 +-
 21 files changed, 149 insertions(+), 20 deletions(-)

diff --git a/src/responder/common/cache_req/cache_req_plugin.h b/src/responder/common/cache_req/cache_req_plugin.h
index 8117325506b2951c3966fa50506ed0d55273ee81..803d0f4fa5a54900a458d170177e89f82b398bd9 100644
--- a/src/responder/common/cache_req/cache_req_plugin.h
+++ b/src/responder/common/cache_req/cache_req_plugin.h
@@ -153,6 +153,72 @@ typedef bool
 (*cache_req_dp_recv_fn)(struct tevent_req *subreq,
                         struct cache_req *cr);
 
+/**
+ * Check whether the results of the domain locator can still
+ * be considered valid or whether it is time to call the request
+ * again.
+ *
+ * @param   resp_ctx        The responder context
+ * @param   domain          The domain to check. This should be the domain-head,
+ *                          because the locator works across a domain and its
+ *                          subdomains.
+ * @param   data            The cache req data that contain primarily the key
+ *                          to look for.
+ *
+ * @return True if the locator plugin should be ran again, false if
+ * @return False false ifthe lookup should just proceed with the
+ * data that is already in the negative cache.
+ */
+typedef bool
+(*cache_req_dp_get_domain_check_fn)(struct resp_ctx *rctx,
+                                    struct sss_domain_info *domain,
+                                    struct cache_req_data *data);
+/**
+ * Send Data Provider request to locate the domain
+ * of an entry
+ *
+ * @param   resp_ctx        The responder context
+ * @param   domain          The domain to check. This should be the domain-head,
+ *                          because the locator works across a domain and its
+ *                          subdomains.
+ * @param   data            The cache req data that contain primarily the key
+ *                          to look for.
+ *
+ *
+ * @return Tevent request on success.
+ * @return NULL on error.
+ */
+typedef struct tevent_req *
+(*cache_req_dp_get_domain_send_fn)(TALLOC_CTX *mem_ctx,
+                                   struct resp_ctx *rctx,
+                                   struct sss_domain_info *domain,
+                                   struct cache_req_data *data);
+
+/**
+ * Process result of Data Provider find-domain request.
+ *
+ * Do not free subreq! It will be freed in the caller.
+ *
+ * @param       mem_ctx         The memory context that owns the _found_domain
+ *                              result parameter
+ * @param       subreq          The request to finish
+ * @param       cr              The cache_req being processed
+ * @param       _found_domain   The domain the request account belongs to. This
+ *                              parameter can be NULL even on success, in that
+ *                              case the account was not found and no lookups are
+ *                              needed, all domains can be skipped in this case.
+ *
+ * @return EOK if the request did not encounter any error. In this
+ * case, the _found_domain parameter can be considered authoritative,
+ * regarless of its value
+ * @return errno on error. _found_domain should be NULL in this case.
+ */
+typedef errno_t
+(*cache_req_dp_get_domain_recv_fn)(TALLOC_CTX *mem_ctx,
+                                   struct tevent_req *subreq,
+                                   struct cache_req *cr,
+                                   char **_found_domain);
+
 struct cache_req_plugin {
     /**
      * Plugin name.
@@ -223,6 +289,9 @@ struct cache_req_plugin {
     cache_req_lookup_fn lookup_fn;
     cache_req_dp_send_fn dp_send_fn;
     cache_req_dp_recv_fn dp_recv_fn;
+    cache_req_dp_get_domain_check_fn dp_get_domain_check_fn;
+    cache_req_dp_get_domain_send_fn dp_get_domain_send_fn;
+    cache_req_dp_get_domain_recv_fn dp_get_domain_recv_fn;
 };
 
 extern const struct cache_req_plugin cache_req_user_by_name;
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 15350ca8279bc77c73bcc4abe51c97a8a37cb8c8..d302994e8903dea1e25b3da3762aa2ed783daebd 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
@@ -86,7 +86,10 @@ const struct cache_req_plugin cache_req_enum_groups = {
     .ncache_filter_fn = cache_req_enum_groups_ncache_filter,
     .lookup_fn = cache_req_enum_groups_lookup,
     .dp_send_fn = cache_req_enum_groups_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 72b2f1a7d2d2e02ce1a995098d1f26003444bddb..282dc1cc83b1fda91d4c4937f99598fbdd6ec625 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
@@ -79,7 +79,10 @@ const struct cache_req_plugin cache_req_enum_svc = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_enum_svc_lookup,
     .dp_send_fn = cache_req_enum_svc_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 a3ddcdd45548a2fa7c367f3fb3be103c115dedb4..f83ff30fdbbaacdb3bfb605a65ce70fbd8eb3a89 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
@@ -86,7 +86,10 @@ const struct cache_req_plugin cache_req_enum_users = {
     .ncache_filter_fn = cache_req_enum_users_ncache_filter,
     .lookup_fn = cache_req_enum_users_lookup,
     .dp_send_fn = cache_req_enum_users_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 aa89953b88313605041cce599999fc5bbc741525..009f0f88523c8c4c02a25f0f5d6a83187e0a17f8 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
@@ -134,7 +134,10 @@ const struct cache_req_plugin cache_req_group_by_filter = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_group_by_filter_lookup,
     .dp_send_fn = cache_req_group_by_filter_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 5ca64283a781318bc4e4d6920fff989c3f3919b4..70381266712d2c27c95027b54efab201c5df7690 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
@@ -155,7 +155,10 @@ const struct cache_req_plugin cache_req_group_by_id = {
     .ncache_filter_fn = cache_req_group_by_id_ncache_filter,
     .lookup_fn = cache_req_group_by_id_lookup,
     .dp_send_fn = cache_req_group_by_id_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 7706051818590af77da75d3e4c7f671c89170f82..3be0d5ea557bad11529b897be1d7706a8809acb1 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
@@ -197,7 +197,10 @@ const struct cache_req_plugin cache_req_group_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_group_by_name_lookup,
     .dp_send_fn = cache_req_group_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 struct tevent_req *
diff --git a/src/responder/common/cache_req/plugins/cache_req_host_by_name.c b/src/responder/common/cache_req/plugins/cache_req_host_by_name.c
index 56048c5e4bcadfb341f4b42d978d53484abd65d2..696d9e50d94e824d2664ed5a8fe3150b821d570e 100644
--- a/src/responder/common/cache_req/plugins/cache_req_host_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_host_by_name.c
@@ -99,7 +99,10 @@ const struct cache_req_plugin cache_req_host_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_host_by_name_lookup,
     .dp_send_fn = cache_req_host_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 75ac44e1ad36238f01342eced9188d07daa50720..c5bea9d84921cc567bf794d3ba5a57fadb81695b 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
@@ -212,7 +212,10 @@ const struct cache_req_plugin cache_req_initgroups_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_initgroups_by_name_lookup,
     .dp_send_fn = cache_req_initgroups_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 dfb21ac1a0090a3ef9029b38f5b1e8bdda3440c6..9bd00f357c630bae4a52e356577000bd8de94013 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
@@ -123,5 +123,8 @@ const struct cache_req_plugin cache_req_initgroups_by_upn = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_initgroups_by_upn_lookup,
     .dp_send_fn = cache_req_initgroups_by_upn_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
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 ef0775d0b8eac4d679450f436d8427cff9c04582..d370d342ec5b2c0e0e9f1f4ea90b34b59bff60b6 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
@@ -131,7 +131,10 @@ const struct cache_req_plugin cache_req_netgroup_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_netgroup_by_name_lookup,
     .dp_send_fn = cache_req_netgroup_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 339bd4f5fef827acc1aa3c123d041e426d9e4782..2af95313cb2df0f46a61519ac962074033f34a12 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
@@ -129,7 +129,10 @@ const struct cache_req_plugin cache_req_object_by_id = {
     .ncache_filter_fn = cache_req_object_by_id_ncache_filter,
     .lookup_fn = cache_req_object_by_id_lookup,
     .dp_send_fn = cache_req_object_by_id_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 854d0b83c420ebebcb5e0e079c707081fa313632..a740fbb8d05efb4601e8e40d2a07896ecb251d4e 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
@@ -207,7 +207,10 @@ const struct cache_req_plugin cache_req_object_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_object_by_name_lookup,
     .dp_send_fn = cache_req_object_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 039a79df7bb1ab213ce4334835e9fc18e6d0faac..1af638ff9d94ffa3bf6e418433d5c4e98acfb2b8 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
@@ -123,7 +123,10 @@ const struct cache_req_plugin cache_req_object_by_sid = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_object_by_sid_lookup,
     .dp_send_fn = cache_req_object_by_sid_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 4c32d9977cc06e43eed3a90e7dcf107e91efefb5..5b17051031e35c5767d27b19c922325cee4b6eac 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
@@ -155,7 +155,10 @@ const struct cache_req_plugin cache_req_svc_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_svc_by_name_lookup,
     .dp_send_fn = cache_req_svc_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 1e998f642c766d15d3f6fe777aa5c789629508e2..4c005df3972386fef3c5a858a2b691cb2a63fd57 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
@@ -128,7 +128,10 @@ const struct cache_req_plugin cache_req_svc_by_port = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_svc_by_port_lookup,
     .dp_send_fn = cache_req_svc_by_port_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 7a0c7d8ce1644f1c41b64c6903e4e20eb3c2c081..a2dc1fad28ca09eeba77c563f17518671095ab42 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
@@ -97,7 +97,10 @@ const struct cache_req_plugin cache_req_user_by_cert = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_user_by_cert_lookup,
     .dp_send_fn = cache_req_user_by_cert_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 dd3f42e855389ecc73690e4d18c4977253b108a6..42b6e816372c51623f29e8a7e28859a9dfca640f 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
@@ -134,7 +134,10 @@ const struct cache_req_plugin cache_req_user_by_filter = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_user_by_filter_lookup,
     .dp_send_fn = cache_req_user_by_filter_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 913f9be5bcc2dfd074b52cb3b15fb6948826e831..254330e92cc801b84bfb5e308d6d90ac54507d77 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
@@ -155,7 +155,10 @@ const struct cache_req_plugin cache_req_user_by_id = {
     .ncache_filter_fn = cache_req_user_by_id_ncache_filter,
     .lookup_fn = cache_req_user_by_id_lookup,
     .dp_send_fn = cache_req_user_by_id_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 2e49de938d0af50089d0cf49860441c2b6ea679c..d24a2221b2a69d24d360c46c41073e19dc79036b 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
@@ -202,7 +202,10 @@ const struct cache_req_plugin cache_req_user_by_name = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_user_by_name_lookup,
     .dp_send_fn = cache_req_user_by_name_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
 
 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 b8bcd241ed79c510aca214ad3788215ae2997d20..e08ab70ae081a5d532d7ab436687978416e7c493 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
@@ -128,5 +128,8 @@ const struct cache_req_plugin cache_req_user_by_upn = {
     .ncache_filter_fn = NULL,
     .lookup_fn = cache_req_user_by_upn_lookup,
     .dp_send_fn = cache_req_user_by_upn_dp_send,
-    .dp_recv_fn = cache_req_common_dp_recv
+    .dp_recv_fn = cache_req_common_dp_recv,
+    .dp_get_domain_check_fn = NULL,
+    .dp_get_domain_send_fn = NULL,
+    .dp_get_domain_recv_fn = NULL,
 };
-- 
2.14.3