_PUBLIC_ NTSTATUS ldap_rebind(struct ldap_connection *conn) { NTSTATUS status; struct ldap_simple_creds *creds; switch (conn->bind.type) { case LDAP_BIND_SASL: status = ldap_bind_sasl(conn, (struct cli_credentials *)conn->bind.creds, conn->lp_ctx); break; case LDAP_BIND_SIMPLE: creds = (struct ldap_simple_creds *)conn->bind.creds; if (creds == NULL) { return NT_STATUS_UNSUCCESSFUL; } status = ldap_bind_simple(conn, creds->dn, creds->pw); break; default: return NT_STATUS_UNSUCCESSFUL; } return status; }
static void init_domain_recv_ldapconn(struct composite_context *ctx) { struct init_domain_state *state = talloc_get_type(ctx->async.private_data, struct init_domain_state); state->ctx->status = ldap_connect_recv(ctx); if (NT_STATUS_IS_OK(state->ctx->status)) { state->domain->ldap_conn->host = talloc_strdup(state->domain->ldap_conn, state->domain->dc_name); state->ctx->status = ldap_bind_sasl(state->domain->ldap_conn, state->domain->schannel_creds); DEBUG(0, ("ldap_bind returned %s\n", nt_errstr(state->ctx->status))); } composite_done(state->ctx); }