Blame SOURCES/0099-ipa-add-get_be_acct_req_for_uuid.patch

905b4d
From 0e1c39d4f66c80a510d13cf73273ee87ec998a0a Mon Sep 17 00:00:00 2001
905b4d
From: Sumit Bose <sbose@redhat.com>
905b4d
Date: Fri, 7 Nov 2014 15:05:41 +0100
905b4d
Subject: [PATCH 099/104] ipa: add get_be_acct_req_for_uuid()
905b4d
905b4d
This new call creates the needs data for a lookup by UUID which is
905b4d
needed when trying to find the original object for an IPA override
905b4d
object.
905b4d
905b4d
Related to https://fedorahosted.org/sssd/ticket/2481
905b4d
905b4d
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
905b4d
---
905b4d
 src/providers/ipa/ipa_id.h    |  4 ++++
905b4d
 src/providers/ipa/ipa_views.c | 42 ++++++++++++++++++++++++++++++++++++------
905b4d
 2 files changed, 40 insertions(+), 6 deletions(-)
905b4d
905b4d
diff --git a/src/providers/ipa/ipa_id.h b/src/providers/ipa/ipa_id.h
905b4d
index 033ac40f1d7a7d8c4a968374ee190a5bcb17819c..890d00d49097555acce62ecc5fa300c71c6c9981 100644
905b4d
--- a/src/providers/ipa/ipa_id.h
905b4d
+++ b/src/providers/ipa/ipa_id.h
905b4d
@@ -83,6 +83,10 @@ errno_t get_be_acct_req_for_sid(TALLOC_CTX *mem_ctx, const char *sid,
905b4d
                                 const char *domain_name,
905b4d
                                 struct be_acct_req **_ar);
905b4d
 
905b4d
+errno_t get_be_acct_req_for_uuid(TALLOC_CTX *mem_ctx, const char *uuid,
905b4d
+                                 const char *domain_name,
905b4d
+                                 struct be_acct_req **_ar);
905b4d
+
905b4d
 struct tevent_req *ipa_get_ad_override_send(TALLOC_CTX *mem_ctx,
905b4d
                                             struct tevent_context *ev,
905b4d
                                             struct sdap_id_ctx *sdap_id_ctx,
905b4d
diff --git a/src/providers/ipa/ipa_views.c b/src/providers/ipa/ipa_views.c
905b4d
index 2eb77216ab9759d8b1d66fbdf0b2e90cd07a4604..ee586894ec61b1b1330816c628bbc9617d58e31e 100644
905b4d
--- a/src/providers/ipa/ipa_views.c
905b4d
+++ b/src/providers/ipa/ipa_views.c
905b4d
@@ -140,9 +140,10 @@ static errno_t be_acct_req_to_override_filter(TALLOC_CTX *mem_ctx,
905b4d
     return EOK;
905b4d
 }
905b4d
 
905b4d
-errno_t get_be_acct_req_for_sid(TALLOC_CTX *mem_ctx, const char *sid,
905b4d
-                                const char *domain_name,
905b4d
-                                struct be_acct_req **_ar)
905b4d
+static errno_t get_be_acct_req_for_xyz(TALLOC_CTX *mem_ctx, const char *val,
905b4d
+                                       const char *domain_name,
905b4d
+                                       int type,
905b4d
+                                       struct be_acct_req **_ar)
905b4d
 {
905b4d
     struct be_acct_req *ar;
905b4d
 
905b4d
@@ -152,9 +153,22 @@ errno_t get_be_acct_req_for_sid(TALLOC_CTX *mem_ctx, const char *sid,
905b4d
         return ENOMEM;
905b4d
     }
905b4d
 
905b4d
-    ar->entry_type = BE_REQ_BY_SECID;
905b4d
-    ar->filter_type = BE_FILTER_SECID;
905b4d
-    ar->filter_value = talloc_strdup(ar, sid);
905b4d
+    switch (type) {
905b4d
+    case BE_REQ_BY_SECID:
905b4d
+        ar->entry_type = BE_REQ_BY_SECID;
905b4d
+        ar->filter_type = BE_FILTER_SECID;
905b4d
+        break;
905b4d
+    case BE_REQ_BY_UUID:
905b4d
+        ar->entry_type = BE_REQ_BY_UUID;
905b4d
+        ar->filter_type = BE_FILTER_UUID;
905b4d
+        break;
905b4d
+    default:
905b4d
+        DEBUG(SSSDBG_CRIT_FAILURE, "Unsupported request type [%d].\n", type);
905b4d
+        talloc_free(ar);
905b4d
+        return EINVAL;
905b4d
+    }
905b4d
+
905b4d
+    ar->filter_value = talloc_strdup(ar, val);
905b4d
     ar->domain = talloc_strdup(ar, domain_name);
905b4d
     if (ar->filter_value == NULL || ar->domain == NULL) {
905b4d
         DEBUG(SSSDBG_OP_FAILURE, "talloc_strdup failed.\n");
905b4d
@@ -168,6 +182,22 @@ errno_t get_be_acct_req_for_sid(TALLOC_CTX *mem_ctx, const char *sid,
905b4d
     return EOK;
905b4d
 }
905b4d
 
905b4d
+errno_t get_be_acct_req_for_sid(TALLOC_CTX *mem_ctx, const char *sid,
905b4d
+                                const char *domain_name,
905b4d
+                                struct be_acct_req **_ar)
905b4d
+{
905b4d
+    return get_be_acct_req_for_xyz(mem_ctx, sid, domain_name, BE_REQ_BY_SECID,
905b4d
+                                   _ar);
905b4d
+}
905b4d
+
905b4d
+errno_t get_be_acct_req_for_uuid(TALLOC_CTX *mem_ctx, const char *uuid,
905b4d
+                                 const char *domain_name,
905b4d
+                                 struct be_acct_req **_ar)
905b4d
+{
905b4d
+    return get_be_acct_req_for_xyz(mem_ctx, uuid, domain_name, BE_REQ_BY_UUID,
905b4d
+                                   _ar);
905b4d
+}
905b4d
+
905b4d
 struct ipa_get_ad_override_state {
905b4d
     struct tevent_context *ev;
905b4d
     struct sdap_id_ctx *sdap_id_ctx;
905b4d
-- 
905b4d
1.9.3
905b4d