[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Tue Apr 12 05:07:02 MDT 2011
The branch, master has been updated
via 510e618 s3-util: separate out cmdline helpers.
via 9c6f78a s3: add some forward declarations.
via 7ea0384 s3-netapi: use dcerpc_try_samr_connects().
via 3acd6bd s3-netapi: use libnetapi_get_binding_handle().
via 0eece62 s3-netapi: add libnetapi_get_binding_handle().
via f102748 s3-librpc: let librpc/rpc/dcerpc.h include ndr and generated dcerpc headers.
via 64b6641 s3-rpc_client: move rpc_cli_transport structs and protos to rpc_transport.h
from bb15aa5 s3/selftest Tear down the environment if we fail to connect
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 510e61871c0c2b2659b80d5f785522184131b1d9
Author: Günther Deschner <gd at samba.org>
Date: Sat Apr 2 01:00:52 2011 +0200
s3-util: separate out cmdline helpers.
Guenther
Autobuild-User: Günther Deschner <gd at samba.org>
Autobuild-Date: Tue Apr 12 13:06:27 CEST 2011 on sn-devel-104
commit 9c6f78aae195c286818f91405b983b127ae17402
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 6 15:16:53 2011 +0200
s3: add some forward declarations.
Guenther
commit 7ea03840fc817b21d7d333aebc6bbaeded9a0485
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 6 14:40:50 2011 +0200
s3-netapi: use dcerpc_try_samr_connects().
Guenther
commit 3acd6bde58ecd68faf8200268cc674a71c57778d
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 6 14:35:24 2011 +0200
s3-netapi: use libnetapi_get_binding_handle().
Guenther
commit 0eece6202c94fdd180f266049e1a3712b9477dc6
Author: Günther Deschner <gd at samba.org>
Date: Wed Apr 6 14:21:30 2011 +0200
s3-netapi: add libnetapi_get_binding_handle().
Guenther
commit f10274806196cbea8d27cc2b1f1fe5087a2ede2b
Author: Günther Deschner <gd at samba.org>
Date: Thu Mar 31 01:01:05 2011 +0200
s3-librpc: let librpc/rpc/dcerpc.h include ndr and generated dcerpc headers.
Guenther
commit 64b664155b16b0995af7cc87f54c613350127f9e
Author: Günther Deschner <gd at samba.org>
Date: Thu Mar 31 00:34:28 2011 +0200
s3-rpc_client: move rpc_cli_transport structs and protos to rpc_transport.h
Guenther
-----------------------------------------------------------------------
Summary of changes:
libcli/samsync/samsync.h | 2 +
source3/Makefile.in | 2 +-
source3/include/client.h | 56 +------
source3/include/proto.h | 97 ++++------
source3/lib/netapi/cm.c | 23 +++
source3/lib/netapi/file.c | 27 +--
source3/lib/netapi/getdc.c | 27 +--
source3/lib/netapi/netapi_private.h | 4 +
source3/lib/netapi/netlogon.c | 18 +--
source3/lib/netapi/samr.c | 22 ++-
source3/lib/netapi/serverinfo.c | 27 +--
source3/lib/netapi/share.c | 45 ++---
source3/lib/netapi/shutdown.c | 18 +--
source3/lib/util.c | 253 -------------------------
source3/lib/util_cmdline.c | 277 ++++++++++++++++++++++++++++
source3/librpc/rpc/dcerpc.h | 2 +
source3/rpc_client/rpc_transport.h | 107 +++++++++++
source3/rpc_client/rpc_transport_np.c | 1 +
source3/rpc_client/rpc_transport_sock.c | 1 +
source3/rpc_client/rpc_transport_tstream.c | 1 +
source3/winbindd/winbindd_proto.h | 2 +-
source3/wscript_build | 2 +-
22 files changed, 532 insertions(+), 482 deletions(-)
create mode 100644 source3/lib/util_cmdline.c
create mode 100644 source3/rpc_client/rpc_transport.h
Changeset truncated at 500 lines:
diff --git a/libcli/samsync/samsync.h b/libcli/samsync/samsync.h
index df76f1b..0cd55e4 100644
--- a/libcli/samsync/samsync.h
+++ b/libcli/samsync/samsync.h
@@ -22,6 +22,8 @@
#ifndef __SAMSYNC_SAMSYNC_H__
#define __SAMSYNC_SAMSYNC_H__
+struct netlogon_creds_CredentialState;
+
/**
* Fix up the delta, dealing with encryption issues so that the final
* callback need only do the printing or application logic
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 0854114..b3b1de4 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -452,7 +452,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \
lib/wins_srv.o \
lib/util_str.o ../lib/util/base64.o lib/util_sid.o \
lib/util_unistr.o ../lib/util/charset/codepoints.o ../lib/util/charset/util_str.o lib/util_file.o \
- lib/util.o lib/util_names.o \
+ lib/util.o lib/util_cmdline.o lib/util_names.o \
lib/util_sock.o lib/sock_exec.o lib/util_sec.o \
lib/substitute.o lib/dbwrap_util.o \
lib/ms_fnmatch.o lib/errmap_unix.o \
diff --git a/source3/include/client.h b/source3/include/client.h
index 9f8f46c..a4c52c3 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -48,61 +48,7 @@ struct print_job_info {
time_t t;
};
-/**
- * rpc_cli_transport defines a transport mechanism to ship rpc requests
- * asynchronously to a server and receive replies
- */
-
-struct rpc_cli_transport {
-
- enum dcerpc_transport_t transport;
-
- /**
- * Trigger an async read from the server. May return a short read.
- */
- struct tevent_req *(*read_send)(TALLOC_CTX *mem_ctx,
- struct event_context *ev,
- uint8_t *data, size_t size,
- void *priv);
- /**
- * Get the result from the read_send operation.
- */
- NTSTATUS (*read_recv)(struct tevent_req *req, ssize_t *preceived);
-
- /**
- * Trigger an async write to the server. May return a short write.
- */
- struct tevent_req *(*write_send)(TALLOC_CTX *mem_ctx,
- struct event_context *ev,
- const uint8_t *data, size_t size,
- void *priv);
- /**
- * Get the result from the read_send operation.
- */
- NTSTATUS (*write_recv)(struct tevent_req *req, ssize_t *psent);
-
- /**
- * This is an optimization for the SMB transport. It models the
- * TransactNamedPipe API call: Send and receive data in one round
- * trip. The transport implementation is free to set this to NULL,
- * cli_pipe.c will fall back to the explicit write/read routines.
- */
- struct tevent_req *(*trans_send)(TALLOC_CTX *mem_ctx,
- struct event_context *ev,
- uint8_t *data, size_t data_len,
- uint32_t max_rdata_len,
- void *priv);
- /**
- * Get the result from the trans_send operation.
- */
- NTSTATUS (*trans_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx,
- uint8_t **prdata, uint32_t *prdata_len);
-
- bool (*is_connected)(void *priv);
- unsigned int (*set_timeout)(void *priv, unsigned int timeout);
-
- void *priv;
-};
+#include "rpc_client/rpc_transport.h"
struct dcerpc_binding_handle;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index a85b2f9..89a6a05 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -637,38 +637,6 @@ void gfree_all( void );
const char *my_netbios_names(int i);
bool set_netbios_aliases(const char **str_array);
bool init_names(void);
-struct user_auth_info *user_auth_info_init(TALLOC_CTX *mem_ctx);
-const char *get_cmdline_auth_info_username(const struct user_auth_info *auth_info);
-void set_cmdline_auth_info_username(struct user_auth_info *auth_info,
- const char *username);
-const char *get_cmdline_auth_info_domain(const struct user_auth_info *auth_info);
-void set_cmdline_auth_info_domain(struct user_auth_info *auth_info,
- const char *domain);
-void set_cmdline_auth_info_password(struct user_auth_info *auth_info,
- const char *password);
-const char *get_cmdline_auth_info_password(const struct user_auth_info *auth_info);
-bool set_cmdline_auth_info_signing_state(struct user_auth_info *auth_info,
- const char *arg);
-int get_cmdline_auth_info_signing_state(const struct user_auth_info *auth_info);
-void set_cmdline_auth_info_use_ccache(struct user_auth_info *auth_info,
- bool b);
-bool get_cmdline_auth_info_use_ccache(const struct user_auth_info *auth_info);
-void set_cmdline_auth_info_use_kerberos(struct user_auth_info *auth_info,
- bool b);
-bool get_cmdline_auth_info_use_kerberos(const struct user_auth_info *auth_info);
-void set_cmdline_auth_info_fallback_after_kerberos(struct user_auth_info *auth_info,
- bool b);
-bool get_cmdline_auth_info_fallback_after_kerberos(const struct user_auth_info *auth_info);
-void set_cmdline_auth_info_use_krb5_ticket(struct user_auth_info *auth_info);
-void set_cmdline_auth_info_smb_encrypt(struct user_auth_info *auth_info);
-void set_cmdline_auth_info_use_machine_account(struct user_auth_info *auth_info);
-bool get_cmdline_auth_info_got_pass(const struct user_auth_info *auth_info);
-bool get_cmdline_auth_info_smb_encrypt(const struct user_auth_info *auth_info);
-bool get_cmdline_auth_info_use_machine_account(const struct user_auth_info *auth_info);
-struct user_auth_info *get_cmdline_auth_info_copy(TALLOC_CTX *mem_ctx,
- const struct user_auth_info *info);
-bool set_cmdline_auth_info_machine_account_creds(struct user_auth_info *auth_info);
-void set_cmdline_auth_info_getpass(struct user_auth_info *auth_info);
bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf,
bool fake_dir_create_times);
bool socket_exist(const char *fname);
@@ -782,6 +750,41 @@ bool tevent_req_poll_ntstatus(struct tevent_req *req,
bool any_nt_status_not_ok(NTSTATUS err1, NTSTATUS err2, NTSTATUS *result);
int timeval_to_msec(struct timeval t);
+/* The following definitions come from lib/util_cmdline.c */
+
+struct user_auth_info *user_auth_info_init(TALLOC_CTX *mem_ctx);
+const char *get_cmdline_auth_info_username(const struct user_auth_info *auth_info);
+void set_cmdline_auth_info_username(struct user_auth_info *auth_info,
+ const char *username);
+const char *get_cmdline_auth_info_domain(const struct user_auth_info *auth_info);
+void set_cmdline_auth_info_domain(struct user_auth_info *auth_info,
+ const char *domain);
+void set_cmdline_auth_info_password(struct user_auth_info *auth_info,
+ const char *password);
+const char *get_cmdline_auth_info_password(const struct user_auth_info *auth_info);
+bool set_cmdline_auth_info_signing_state(struct user_auth_info *auth_info,
+ const char *arg);
+int get_cmdline_auth_info_signing_state(const struct user_auth_info *auth_info);
+void set_cmdline_auth_info_use_ccache(struct user_auth_info *auth_info,
+ bool b);
+bool get_cmdline_auth_info_use_ccache(const struct user_auth_info *auth_info);
+void set_cmdline_auth_info_use_kerberos(struct user_auth_info *auth_info,
+ bool b);
+bool get_cmdline_auth_info_use_kerberos(const struct user_auth_info *auth_info);
+void set_cmdline_auth_info_fallback_after_kerberos(struct user_auth_info *auth_info,
+ bool b);
+bool get_cmdline_auth_info_fallback_after_kerberos(const struct user_auth_info *auth_info);
+void set_cmdline_auth_info_use_krb5_ticket(struct user_auth_info *auth_info);
+void set_cmdline_auth_info_smb_encrypt(struct user_auth_info *auth_info);
+void set_cmdline_auth_info_use_machine_account(struct user_auth_info *auth_info);
+bool get_cmdline_auth_info_got_pass(const struct user_auth_info *auth_info);
+bool get_cmdline_auth_info_smb_encrypt(const struct user_auth_info *auth_info);
+bool get_cmdline_auth_info_use_machine_account(const struct user_auth_info *auth_info);
+struct user_auth_info *get_cmdline_auth_info_copy(TALLOC_CTX *mem_ctx,
+ const struct user_auth_info *info);
+bool set_cmdline_auth_info_machine_account_creds(struct user_auth_info *auth_info);
+void set_cmdline_auth_info_getpass(struct user_auth_info *auth_info);
+
/* The following definitions come from lib/util_builtin.c */
bool lookup_builtin_rid(TALLOC_CTX *mem_ctx, uint32 rid, const char **name);
@@ -2691,7 +2694,7 @@ void set_profile_level(int level, struct server_id src);
bool profile_setup(struct messaging_context *msg_ctx, bool rdonly);
/* The following definitions come from librpc/rpc/rpc_common.c */
-
+struct ndr_interface_table;
bool smb_register_ndr_interface(const struct ndr_interface_table *interface);
const struct ndr_interface_table *get_iface_from_syntax(
const struct ndr_syntax_id *syntax);
@@ -2705,6 +2708,7 @@ struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
struct client_address *client_id,
const struct auth_serversupplied_info *session_info,
struct messaging_context *msg_ctx);
+struct dcerpc_binding_handle;
NTSTATUS rpcint_binding_handle(TALLOC_CTX *mem_ctx,
const struct ndr_interface_table *ndr_table,
struct client_address *client_id,
@@ -2731,31 +2735,6 @@ NTSTATUS get_schannel_session_key(struct cli_state *cli,
uint32 *pneg_flags,
struct rpc_pipe_client **presult);
-/* The following definitions come from rpc_client/rpc_transport_np.c */
-
-struct tevent_req *rpc_transport_np_init_send(TALLOC_CTX *mem_ctx,
- struct event_context *ev,
- struct cli_state *cli,
- const struct ndr_syntax_id *abstract_syntax);
-NTSTATUS rpc_transport_np_init_recv(struct tevent_req *req,
- TALLOC_CTX *mem_ctx,
- struct rpc_cli_transport **presult);
-NTSTATUS rpc_transport_np_init(TALLOC_CTX *mem_ctx, struct cli_state *cli,
- const struct ndr_syntax_id *abstract_syntax,
- struct rpc_cli_transport **presult);
-
-/* The following definitions come from rpc_client/rpc_transport_sock.c */
-
-NTSTATUS rpc_transport_sock_init(TALLOC_CTX *mem_ctx, int fd,
- struct rpc_cli_transport **presult);
-
-/* The following definitions come from rpc_client/rpc_transport_tstream.c */
-
-NTSTATUS rpc_transport_tstream_init(TALLOC_CTX *mem_ctx,
- struct tstream_context **stream,
- struct rpc_cli_transport **presult);
-struct cli_state *rpc_pipe_np_smb_conn(struct rpc_pipe_client *p);
-
/* The following definitions come from rpc_server/rpc_handles.c */
size_t num_pipe_handles(struct pipes_struct *p);
@@ -2802,7 +2781,7 @@ NTSTATUS rpc_srv_register(int version, const char *clnt,
NTSTATUS rpc_srv_unregister(const struct ndr_interface_table *iface);
/* The following definitions come from rpc_server/srv_pipe.c */
-
+struct ncacn_packet;
bool create_next_pdu(struct pipes_struct *p);
bool api_pipe_bind_auth3(struct pipes_struct *p, struct ncacn_packet *pkt);
bool setup_fault_pdu(struct pipes_struct *p, NTSTATUS status);
diff --git a/source3/lib/netapi/cm.c b/source3/lib/netapi/cm.c
index 0b82206..290194b 100644
--- a/source3/lib/netapi/cm.c
+++ b/source3/lib/netapi/cm.c
@@ -253,3 +253,26 @@ WERROR libnetapi_open_pipe(struct libnetapi_ctx *ctx,
return WERR_OK;
}
+
+/********************************************************************
+********************************************************************/
+
+WERROR libnetapi_get_binding_handle(struct libnetapi_ctx *ctx,
+ const char *server_name,
+ const struct ndr_syntax_id *interface,
+ struct dcerpc_binding_handle **binding_handle)
+{
+ struct rpc_pipe_client *pipe_cli;
+ WERROR result;
+
+ *binding_handle = NULL;
+
+ result = libnetapi_open_pipe(ctx, server_name, interface, &pipe_cli);
+ if (!W_ERROR_IS_OK(result)) {
+ return result;
+ }
+
+ *binding_handle = pipe_cli->binding_handle;
+
+ return WERR_OK;
+}
diff --git a/source3/lib/netapi/file.c b/source3/lib/netapi/file.c
index a8342ac..1e406d2 100644
--- a/source3/lib/netapi/file.c
+++ b/source3/lib/netapi/file.c
@@ -33,18 +33,15 @@ WERROR NetFileClose_r(struct libnetapi_ctx *ctx,
{
WERROR werr;
NTSTATUS status;
- struct rpc_pipe_client *pipe_cli = NULL;
struct dcerpc_binding_handle *b;
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_srvsvc.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_srvsvc.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
status = dcerpc_srvsvc_NetFileClose(b, talloc_tos(),
r->in.server_name,
r->in.fileid,
@@ -116,7 +113,6 @@ WERROR NetFileGetInfo_r(struct libnetapi_ctx *ctx,
{
WERROR werr;
NTSTATUS status;
- struct rpc_pipe_client *pipe_cli = NULL;
union srvsvc_NetFileInfo info;
uint32_t num_entries = 0;
struct dcerpc_binding_handle *b;
@@ -133,15 +129,13 @@ WERROR NetFileGetInfo_r(struct libnetapi_ctx *ctx,
return WERR_UNKNOWN_LEVEL;
}
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_srvsvc.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_srvsvc.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
status = dcerpc_srvsvc_NetFileGetInfo(b, talloc_tos(),
r->in.server_name,
r->in.fileid,
@@ -187,7 +181,6 @@ WERROR NetFileEnum_r(struct libnetapi_ctx *ctx,
{
WERROR werr;
NTSTATUS status;
- struct rpc_pipe_client *pipe_cli = NULL;
struct srvsvc_NetFileInfoCtr info_ctr;
struct srvsvc_NetFileCtr2 ctr2;
struct srvsvc_NetFileCtr3 ctr3;
@@ -207,15 +200,13 @@ WERROR NetFileEnum_r(struct libnetapi_ctx *ctx,
return WERR_UNKNOWN_LEVEL;
}
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_srvsvc.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_srvsvc.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
ZERO_STRUCT(info_ctr);
info_ctr.level = r->in.level;
diff --git a/source3/lib/netapi/getdc.c b/source3/lib/netapi/getdc.c
index fd5cdc2..e753dea 100644
--- a/source3/lib/netapi/getdc.c
+++ b/source3/lib/netapi/getdc.c
@@ -40,20 +40,17 @@ WERROR NetGetDCName_l(struct libnetapi_ctx *ctx,
WERROR NetGetDCName_r(struct libnetapi_ctx *ctx,
struct NetGetDCName *r)
{
- struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
struct dcerpc_binding_handle *b;
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_netlogon.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_netlogon.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
status = dcerpc_netr_GetDcName(b, talloc_tos(),
r->in.server_name,
r->in.domain_name,
@@ -83,20 +80,17 @@ WERROR NetGetAnyDCName_l(struct libnetapi_ctx *ctx,
WERROR NetGetAnyDCName_r(struct libnetapi_ctx *ctx,
struct NetGetAnyDCName *r)
{
- struct rpc_pipe_client *pipe_cli = NULL;
NTSTATUS status;
WERROR werr;
struct dcerpc_binding_handle *b;
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_netlogon.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_netlogon.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
status = dcerpc_netr_GetAnyDCName(b, talloc_tos(),
r->in.server_name,
r->in.domain_name,
@@ -148,18 +142,15 @@ WERROR DsGetDcName_r(struct libnetapi_ctx *ctx,
{
WERROR werr;
NTSTATUS status = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
- struct rpc_pipe_client *pipe_cli = NULL;
struct dcerpc_binding_handle *b;
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_netlogon.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_netlogon.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
status = dcerpc_netr_DsRGetDCNameEx(b,
ctx,
r->in.server_name,
diff --git a/source3/lib/netapi/netapi_private.h b/source3/lib/netapi/netapi_private.h
index fe8d72e..7559c61 100644
--- a/source3/lib/netapi/netapi_private.h
+++ b/source3/lib/netapi/netapi_private.h
@@ -60,6 +60,10 @@ WERROR libnetapi_open_pipe(struct libnetapi_ctx *ctx,
const char *server_name,
const struct ndr_syntax_id *interface,
struct rpc_pipe_client **presult);
+WERROR libnetapi_get_binding_handle(struct libnetapi_ctx *ctx,
+ const char *server_name,
+ const struct ndr_syntax_id *interface,
+ struct dcerpc_binding_handle **binding_handle);
WERROR libnetapi_samr_open_domain(struct libnetapi_ctx *mem_ctx,
struct rpc_pipe_client *pipe_cli,
uint32_t connect_mask,
diff --git a/source3/lib/netapi/netlogon.c b/source3/lib/netapi/netlogon.c
index 0a15063..a046fb7 100644
--- a/source3/lib/netapi/netlogon.c
+++ b/source3/lib/netapi/netlogon.c
@@ -129,19 +129,16 @@ WERROR I_NetLogonControl_r(struct libnetapi_ctx *ctx,
{
WERROR werr;
NTSTATUS status;
- struct rpc_pipe_client *pipe_cli = NULL;
union netr_CONTROL_QUERY_INFORMATION query;
struct dcerpc_binding_handle *b;
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_netlogon.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_netlogon.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
status = dcerpc_netr_LogonControl(b, talloc_tos(),
r->in.server_name,
r->in.function_code,
@@ -183,7 +180,6 @@ WERROR I_NetLogonControl2_r(struct libnetapi_ctx *ctx,
{
WERROR werr;
NTSTATUS status;
- struct rpc_pipe_client *pipe_cli = NULL;
union netr_CONTROL_DATA_INFORMATION data;
union netr_CONTROL_QUERY_INFORMATION query;
struct dcerpc_binding_handle *b;
@@ -193,15 +189,13 @@ WERROR I_NetLogonControl2_r(struct libnetapi_ctx *ctx,
goto done;
}
- werr = libnetapi_open_pipe(ctx, r->in.server_name,
- &ndr_table_netlogon.syntax_id,
- &pipe_cli);
+ werr = libnetapi_get_binding_handle(ctx, r->in.server_name,
+ &ndr_table_netlogon.syntax_id,
+ &b);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
- b = pipe_cli->binding_handle;
-
switch (r->in.function_code) {
case NETLOGON_CONTROL_TC_VERIFY:
case NETLOGON_CONTROL_SET_DBFLAG:
diff --git a/source3/lib/netapi/samr.c b/source3/lib/netapi/samr.c
index f859c52..fb30d4d 100644
--- a/source3/lib/netapi/samr.c
+++ b/source3/lib/netapi/samr.c
@@ -81,13 +81,20 @@ WERROR libnetapi_samr_open_domain(struct libnetapi_ctx *mem_ctx,
}
if (!is_valid_policy_hnd(connect_handle)) {
- status = rpccli_try_samr_connects(pipe_cli, mem_ctx,
+ NTSTATUS result;
--
Samba Shared Repository
More information about the samba-cvs
mailing list