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