diff options
-rw-r--r-- | source4/auth/auth.h | 1 | ||||
-rw-r--r-- | source4/libcli/wbclient/wbclient.c | 29 | ||||
-rw-r--r-- | source4/libcli/wbclient/wbclient.h | 13 |
3 files changed, 42 insertions, 1 deletions
diff --git a/source4/auth/auth.h b/source4/auth/auth.h index 129f58d31c4..503bae9d4a7 100644 --- a/source4/auth/auth.h +++ b/source4/auth/auth.h @@ -97,6 +97,7 @@ struct auth_critical_sizes { const struct auth_usersupplied_info *user_info_in, const struct auth_usersupplied_info **user_info_encrypted); +struct wbc_context; #include "auth/session.h" #include "auth/unix_token_proto.h" #include "auth/system_session_proto.h" diff --git a/source4/libcli/wbclient/wbclient.c b/source4/libcli/wbclient/wbclient.c index 165333a6b58..3f8003bbbaf 100644 --- a/source4/libcli/wbclient/wbclient.c +++ b/source4/libcli/wbclient/wbclient.c @@ -28,6 +28,35 @@ #include "libcli/util/error.h" #include "libcli/security/dom_sid.h" +/** + * Initialize the wbclient context, talloc_free() when done. + * + * \param mem_ctx talloc context to allocate memory from + * \param msg_ctx message context to use + * \param + */ +struct wbc_context *wbc_init(TALLOC_CTX *mem_ctx, + struct imessaging_context *msg_ctx, + struct tevent_context *event_ctx) +{ + struct wbc_context *ctx; + + ctx = talloc(mem_ctx, struct wbc_context); + if (ctx == NULL) return NULL; + + ctx->event_ctx = event_ctx; + + ctx->irpc_handle = irpc_binding_handle_by_name(ctx, msg_ctx, + "winbind_server", + &ndr_table_winbind); + if (ctx->irpc_handle == NULL) { + talloc_free(ctx); + return NULL; + } + + return ctx; +} + static int wb_simple_trans(struct tevent_context *ev, int fd, struct winbindd_request *wb_req, TALLOC_CTX *mem_ctx, diff --git a/source4/libcli/wbclient/wbclient.h b/source4/libcli/wbclient/wbclient.h index fc096cc7c76..ba15a7c06df 100644 --- a/source4/libcli/wbclient/wbclient.h +++ b/source4/libcli/wbclient/wbclient.h @@ -18,7 +18,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "librpc/gen_ndr/idmap.h" +#include "lib/messaging/irpc.h" +#include "libcli/composite/composite.h" +#include "librpc/gen_ndr/ndr_winbind_c.h" + +struct wbc_context { + struct tevent_context *event_ctx; + struct dcerpc_binding_handle *irpc_handle; +}; + +struct wbc_context *wbc_init(TALLOC_CTX *mem_ctx, + struct imessaging_context *msg_ctx, + struct tevent_context *event_ctx); NTSTATUS wbc_sids_to_xids(struct tevent_context *ev, struct id_map *ids, uint32_t count); |