>From 295bdcf100d2ade5044603e4312b81b8b684b0e0 Mon Sep 17 00:00:00 2001 From: Matthew Newton Date: Sat, 24 Jan 2015 00:30:00 +0000 Subject: [PATCH 4/6] Add wbcContext to wbcRequestResponse To enable libwbclient to pass winbindd context through to the winbind client library in wb_common. Signed-off-by: Matthew Newton --- nsswitch/libwbclient/wbclient.c | 24 +++++++++++++++++++----- nsswitch/libwbclient/wbclient_internal.h | 4 ++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/nsswitch/libwbclient/wbclient.c b/nsswitch/libwbclient/wbclient.c index 010565b..16c21da 100644 --- a/nsswitch/libwbclient/wbclient.c +++ b/nsswitch/libwbclient/wbclient.c @@ -54,6 +54,7 @@ void winbindd_ctx_free(struct winbindd_context *ctx); */ static wbcErr wbcRequestResponseInt( + struct winbindd_context *wbctx, int cmd, struct winbindd_request *request, struct winbindd_response *response, @@ -66,7 +67,7 @@ static wbcErr wbcRequestResponseInt( /* for some calls the request and/or response can be NULL */ - nss_status = fn(NULL, cmd, request, response); + nss_status = fn(wbctx, cmd, request, response); switch (nss_status) { case NSS_STATUS_SUCCESS: @@ -89,25 +90,38 @@ static wbcErr wbcRequestResponseInt( /** * @brief Wrapper around Winbind's send/receive API call * + * @param ctx Context * @param cmd Winbind command operation to perform * @param request Send structure * @param response Receive structure * * @return #wbcErr */ -wbcErr wbcRequestResponse(int cmd, +wbcErr wbcRequestResponse(struct wbcContext *ctx, int cmd, struct winbindd_request *request, struct winbindd_response *response) { - return wbcRequestResponseInt(cmd, request, response, + struct winbindd_context *wbctx = NULL; + + if (ctx) { + wbctx = ctx->winbindd_ctx; + } + + return wbcRequestResponseInt(wbctx, cmd, request, response, winbindd_request_response); } -wbcErr wbcRequestResponsePriv(int cmd, +wbcErr wbcRequestResponsePriv(struct wbcContext *ctx, int cmd, struct winbindd_request *request, struct winbindd_response *response) { - return wbcRequestResponseInt(cmd, request, response, + struct winbindd_context *wbctx = NULL; + + if (ctx) { + wbctx = ctx->winbindd_ctx; + } + + return wbcRequestResponseInt(wbctx, cmd, request, response, winbindd_priv_request_response); } diff --git a/nsswitch/libwbclient/wbclient_internal.h b/nsswitch/libwbclient/wbclient_internal.h index 7065365..1c586df 100644 --- a/nsswitch/libwbclient/wbclient_internal.h +++ b/nsswitch/libwbclient/wbclient_internal.h @@ -24,11 +24,11 @@ /* Private functions */ -wbcErr wbcRequestResponse(int cmd, +wbcErr wbcRequestResponse(struct wbcContext *ctx, int cmd, struct winbindd_request *request, struct winbindd_response *response); -wbcErr wbcRequestResponsePriv(int cmd, +wbcErr wbcRequestResponsePriv(struct wbcContext *ctx, int cmd, struct winbindd_request *request, struct winbindd_response *response); -- 1.7.10.4