Blame SOURCES/0061-IPA-AD-SDAP-BE-Generate-refresh-callbacks-with-a-mac.patch

5fca41
From 441e05790e5efec4928af3d0f93c4eba72d979ae Mon Sep 17 00:00:00 2001
5fca41
From: Jakub Hrozek <jhrozek@redhat.com>
5fca41
Date: Tue, 25 Jun 2019 15:01:15 +0200
5fca41
Subject: [PATCH 61/64] IPA/AD/SDAP/BE: Generate refresh callbacks with a macro
5fca41
5fca41
Related: https://pagure.io/SSSD/sssd/issue/4012
5fca41
5fca41
The per-object type refresh functions are more or less boilerplate code.
5fca41
Even though macro-generated code should be used very rarely, here the
5fca41
generated code does not contain any logic at all so it makese sense to
5fca41
generate it with macros.
5fca41
5fca41
Reviewed-by: Sumit Bose <sbose@redhat.com>
5fca41
(cherry picked from commit 60c876aefe2efc5a67929f9b3890b627cea7c549)
5fca41
5fca41
Reviewed-by: Sumit Bose <sbose@redhat.com>
5fca41
---
5fca41
 src/providers/ad/ad_refresh.c     | 71 ++-----------------------------
5fca41
 src/providers/be_refresh.h        | 20 +++++++++
5fca41
 src/providers/ipa/ipa_refresh.c   | 71 ++-----------------------------
5fca41
 src/providers/ldap/sdap_refresh.c | 71 ++-----------------------------
5fca41
 4 files changed, 32 insertions(+), 201 deletions(-)
5fca41
5fca41
diff --git a/src/providers/ad/ad_refresh.c b/src/providers/ad/ad_refresh.c
5fca41
index ed51b305a..0c2ebce5e 100644
5fca41
--- a/src/providers/ad/ad_refresh.c
5fca41
+++ b/src/providers/ad/ad_refresh.c
5fca41
@@ -188,73 +188,10 @@ static errno_t ad_refresh_recv(struct tevent_req *req)
5fca41
     return EOK;
5fca41
 }
5fca41
 
5fca41
-static struct tevent_req *
5fca41
-ad_refresh_initgroups_send(TALLOC_CTX *mem_ctx,
5fca41
-                           struct tevent_context *ev,
5fca41
-                           struct be_ctx *be_ctx,
5fca41
-                           struct sss_domain_info *domain,
5fca41
-                           char **names,
5fca41
-                           void *pvt)
5fca41
-{
5fca41
-    return ad_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_INITGROUPS, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ad_refresh_initgroups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ad_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-ad_refresh_users_send(TALLOC_CTX *mem_ctx,
5fca41
-                      struct tevent_context *ev,
5fca41
-                      struct be_ctx *be_ctx,
5fca41
-                      struct sss_domain_info *domain,
5fca41
-                      char **names,
5fca41
-                      void *pvt)
5fca41
-{
5fca41
-    return ad_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_USER, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ad_refresh_users_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ad_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-ad_refresh_groups_send(TALLOC_CTX *mem_ctx,
5fca41
-                       struct tevent_context *ev,
5fca41
-                       struct be_ctx *be_ctx,
5fca41
-                       struct sss_domain_info *domain,
5fca41
-                       char **names,
5fca41
-                       void *pvt)
5fca41
-{
5fca41
-    return ad_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_GROUP, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ad_refresh_groups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ad_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-ad_refresh_netgroups_send(TALLOC_CTX *mem_ctx,
5fca41
-                          struct tevent_context *ev,
5fca41
-                          struct be_ctx *be_ctx,
5fca41
-                          struct sss_domain_info *domain,
5fca41
-                          char **names,
5fca41
-                          void *pvt)
5fca41
-{
5fca41
-    return ad_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_NETGROUP, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ad_refresh_netgroups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ad_refresh_recv(req);
5fca41
-}
5fca41
+REFRESH_SEND_RECV_FNS(ad_refresh_initgroups, ad_refresh, BE_REQ_INITGROUPS);
5fca41
+REFRESH_SEND_RECV_FNS(ad_refresh_users, ad_refresh, BE_REQ_USER);
5fca41
+REFRESH_SEND_RECV_FNS(ad_refresh_groups, ad_refresh, BE_REQ_GROUP);
5fca41
+REFRESH_SEND_RECV_FNS(ad_refresh_netgroups, ad_refresh, BE_REQ_NETGROUP);
5fca41
 
5fca41
 errno_t ad_refresh_init(struct be_ctx *be_ctx,
5fca41
                         struct ad_id_ctx *id_ctx)
5fca41
diff --git a/src/providers/be_refresh.h b/src/providers/be_refresh.h
5fca41
index 42d73d938..68be40118 100644
5fca41
--- a/src/providers/be_refresh.h
5fca41
+++ b/src/providers/be_refresh.h
5fca41
@@ -29,6 +29,26 @@
5fca41
 /* solve circular dependency */
5fca41
 struct be_ctx;
5fca41
 
5fca41
+#define REFRESH_SEND_RECV_FNS(outer_base, inner_base, req_type) \
5fca41
+                                                                \
5fca41
+static struct tevent_req *                                      \
5fca41
+outer_base ##_send(TALLOC_CTX *mem_ctx,                         \
5fca41
+                   struct tevent_context *ev,                   \
5fca41
+                   struct be_ctx *be_ctx,                       \
5fca41
+                   struct sss_domain_info *domain,              \
5fca41
+                   char **names,                                \
5fca41
+                   void *pvt)                                   \
5fca41
+{                                                               \
5fca41
+    return inner_base ##_send(mem_ctx, ev,                      \
5fca41
+                              be_ctx, domain,                   \
5fca41
+                              req_type, names, pvt);            \
5fca41
+}                                                               \
5fca41
+                                                                \
5fca41
+static errno_t outer_base ##_recv(struct tevent_req *req)       \
5fca41
+{                                                               \
5fca41
+    return inner_base ##_recv(req);                             \
5fca41
+}                                                               \
5fca41
+
5fca41
 /**
5fca41
  * name_list contains SYSDB_NAME of all expired records.
5fca41
  */
5fca41
diff --git a/src/providers/ipa/ipa_refresh.c b/src/providers/ipa/ipa_refresh.c
5fca41
index 7b05cf9e4..13c38dff9 100644
5fca41
--- a/src/providers/ipa/ipa_refresh.c
5fca41
+++ b/src/providers/ipa/ipa_refresh.c
5fca41
@@ -168,73 +168,10 @@ static errno_t ipa_refresh_recv(struct tevent_req *req)
5fca41
     return EOK;
5fca41
 }
5fca41
 
5fca41
-static struct tevent_req *
5fca41
-ipa_refresh_initgroups_send(TALLOC_CTX *mem_ctx,
5fca41
-                            struct tevent_context *ev,
5fca41
-                            struct be_ctx *be_ctx,
5fca41
-                            struct sss_domain_info *domain,
5fca41
-                            char **names,
5fca41
-                            void *pvt)
5fca41
-{
5fca41
-    return ipa_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_INITGROUPS, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ipa_refresh_initgroups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ipa_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-ipa_refresh_users_send(TALLOC_CTX *mem_ctx,
5fca41
-                        struct tevent_context *ev,
5fca41
-                        struct be_ctx *be_ctx,
5fca41
-                        struct sss_domain_info *domain,
5fca41
-                        char **names,
5fca41
-                        void *pvt)
5fca41
-{
5fca41
-    return ipa_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_USER, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ipa_refresh_users_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ipa_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-ipa_refresh_groups_send(TALLOC_CTX *mem_ctx,
5fca41
-                         struct tevent_context *ev,
5fca41
-                         struct be_ctx *be_ctx,
5fca41
-                         struct sss_domain_info *domain,
5fca41
-                         char **names,
5fca41
-                         void *pvt)
5fca41
-{
5fca41
-    return ipa_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_GROUP, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ipa_refresh_groups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ipa_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-ipa_refresh_netgroups_send(TALLOC_CTX *mem_ctx,
5fca41
-                            struct tevent_context *ev,
5fca41
-                            struct be_ctx *be_ctx,
5fca41
-                            struct sss_domain_info *domain,
5fca41
-                            char **names,
5fca41
-                            void *pvt)
5fca41
-{
5fca41
-    return ipa_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                           BE_REQ_NETGROUP, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t ipa_refresh_netgroups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return ipa_refresh_recv(req);
5fca41
-}
5fca41
+REFRESH_SEND_RECV_FNS(ipa_refresh_initgroups, ipa_refresh, BE_REQ_INITGROUPS);
5fca41
+REFRESH_SEND_RECV_FNS(ipa_refresh_users, ipa_refresh, BE_REQ_USER);
5fca41
+REFRESH_SEND_RECV_FNS(ipa_refresh_groups, ipa_refresh, BE_REQ_GROUP);
5fca41
+REFRESH_SEND_RECV_FNS(ipa_refresh_netgroups, ipa_refresh, BE_REQ_NETGROUP);
5fca41
 
5fca41
 errno_t ipa_refresh_init(struct be_ctx *be_ctx,
5fca41
                          struct ipa_id_ctx *id_ctx)
5fca41
diff --git a/src/providers/ldap/sdap_refresh.c b/src/providers/ldap/sdap_refresh.c
5fca41
index ff4d2116d..4e464b2f6 100644
5fca41
--- a/src/providers/ldap/sdap_refresh.c
5fca41
+++ b/src/providers/ldap/sdap_refresh.c
5fca41
@@ -186,73 +186,10 @@ static errno_t sdap_refresh_recv(struct tevent_req *req)
5fca41
     return EOK;
5fca41
 }
5fca41
 
5fca41
-static struct tevent_req *
5fca41
-sdap_refresh_initgroups_send(TALLOC_CTX *mem_ctx,
5fca41
-                        struct tevent_context *ev,
5fca41
-                        struct be_ctx *be_ctx,
5fca41
-                        struct sss_domain_info *domain,
5fca41
-                        char **names,
5fca41
-                        void *pvt)
5fca41
-{
5fca41
-    return sdap_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                             BE_REQ_INITGROUPS, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t sdap_refresh_initgroups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return sdap_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-sdap_refresh_users_send(TALLOC_CTX *mem_ctx,
5fca41
-                        struct tevent_context *ev,
5fca41
-                        struct be_ctx *be_ctx,
5fca41
-                        struct sss_domain_info *domain,
5fca41
-                        char **names,
5fca41
-                        void *pvt)
5fca41
-{
5fca41
-    return sdap_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                             BE_REQ_USER, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t sdap_refresh_users_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return sdap_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-sdap_refresh_groups_send(TALLOC_CTX *mem_ctx,
5fca41
-                         struct tevent_context *ev,
5fca41
-                         struct be_ctx *be_ctx,
5fca41
-                         struct sss_domain_info *domain,
5fca41
-                         char **names,
5fca41
-                         void *pvt)
5fca41
-{
5fca41
-    return sdap_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                             BE_REQ_GROUP, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t sdap_refresh_groups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return sdap_refresh_recv(req);
5fca41
-}
5fca41
-
5fca41
-static struct tevent_req *
5fca41
-sdap_refresh_netgroups_send(TALLOC_CTX *mem_ctx,
5fca41
-                            struct tevent_context *ev,
5fca41
-                            struct be_ctx *be_ctx,
5fca41
-                            struct sss_domain_info *domain,
5fca41
-                            char **names,
5fca41
-                            void *pvt)
5fca41
-{
5fca41
-    return sdap_refresh_send(mem_ctx, ev, be_ctx, domain,
5fca41
-                             BE_REQ_NETGROUP, names, pvt);
5fca41
-}
5fca41
-
5fca41
-static errno_t sdap_refresh_netgroups_recv(struct tevent_req *req)
5fca41
-{
5fca41
-    return sdap_refresh_recv(req);
5fca41
-}
5fca41
+REFRESH_SEND_RECV_FNS(sdap_refresh_initgroups, sdap_refresh, BE_REQ_INITGROUPS);
5fca41
+REFRESH_SEND_RECV_FNS(sdap_refresh_users, sdap_refresh, BE_REQ_USER);
5fca41
+REFRESH_SEND_RECV_FNS(sdap_refresh_groups, sdap_refresh, BE_REQ_GROUP);
5fca41
+REFRESH_SEND_RECV_FNS(sdap_refresh_netgroups, sdap_refresh, BE_REQ_NETGROUP);
5fca41
 
5fca41
 errno_t sdap_refresh_init(struct be_ctx *be_ctx,
5fca41
                           struct sdap_id_ctx *id_ctx)
5fca41
-- 
5fca41
2.20.1
5fca41