diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-12-27 14:28:01 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:47:48 -0500 |
commit | acd6a086b341096fcbea1775ce748587fcc8020a (patch) | |
tree | 202c9407be50a6fe215c4e6ab7ccaf843807b6c3 /source4/lib | |
parent | 1f8bb5bd8552bb02204225e312ab36e7844920c1 (diff) | |
download | samba-acd6a086b341096fcbea1775ce748587fcc8020a.tar.gz samba-acd6a086b341096fcbea1775ce748587fcc8020a.tar.bz2 samba-acd6a086b341096fcbea1775ce748587fcc8020a.zip |
r12510: Change the DCE/RPC interfaces to take a pointer to a
dcerpc_interface_table struct rather then a tuple of interface
name, UUID and version.
This removes the requirement for having a global list of DCE/RPC interfaces,
except for these parts of the code that use that list explicitly
(ndrdump and the scanner torture test).
This should also allow us to remove the hack that put the authservice parameter
in the dcerpc_binding struct as it can now be read directly from
dcerpc_interface_table.
I will now modify some of these functions to take a dcerpc_syntax_id
structure rather then a full dcerpc_interface_table.
(This used to be commit 8aae0f168e54c01d0866ad6e0da141dbd828574f)
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/com/dcom/main.c | 26 | ||||
-rw-r--r-- | source4/lib/registry/reg_backend_rpc.c | 3 |
2 files changed, 13 insertions, 16 deletions
diff --git a/source4/lib/com/dcom/main.c b/source4/lib/com/dcom/main.c index 1ee5608895..4a3dde86ec 100644 --- a/source4/lib/com/dcom/main.c +++ b/source4/lib/com/dcom/main.c @@ -82,17 +82,15 @@ static NTSTATUS dcom_connect_host(struct com_context *ctx, struct dcerpc_pipe ** if (server == NULL) { return dcerpc_pipe_connect(ctx, p, "ncalrpc", - DCERPC_IREMOTEACTIVATION_UUID, - DCERPC_IREMOTEACTIVATION_VERSION, - ctx->dcom->credentials, ctx->event_ctx); + &dcerpc_table_IRemoteActivation, + ctx->dcom->credentials, ctx->event_ctx); } /* Allow server name to contain a binding string */ if (NT_STATUS_IS_OK(dcerpc_parse_binding(mem_ctx, server, &bd))) { status = dcerpc_pipe_connect_b(ctx, p, bd, - DCERPC_IREMOTEACTIVATION_UUID, - DCERPC_IREMOTEACTIVATION_VERSION, - ctx->dcom->credentials, ctx->event_ctx); + &dcerpc_table_IRemoteActivation, + ctx->dcom->credentials, ctx->event_ctx); talloc_free(mem_ctx); return status; @@ -107,8 +105,7 @@ static NTSTATUS dcom_connect_host(struct com_context *ctx, struct dcerpc_pipe ** } status = dcerpc_pipe_connect(ctx, p, binding, - DCERPC_IREMOTEACTIVATION_UUID, - DCERPC_IREMOTEACTIVATION_VERSION, + &dcerpc_table_IRemoteActivation, ctx->dcom->credentials, ctx->event_ctx); if (NT_STATUS_IS_OK(status)) { @@ -282,7 +279,11 @@ NTSTATUS dcom_get_pipe(struct IUnknown *iface, struct dcerpc_pipe **pp) if (!GUID_equal(&p->syntax.uuid, &iid)) { struct dcerpc_pipe *p2; ox->pipe->syntax.uuid = iid; - status = dcerpc_secondary_context(p, &p2, uuid, 0); + + /* interface will always be present, so + * idl_iface_by_uuid can't return NULL */ + status = dcerpc_secondary_context(p, &p2, idl_iface_by_uuid(uuid)); + if (NT_STATUS_IS_OK(status)) { p = p2; } @@ -301,13 +302,10 @@ NTSTATUS dcom_get_pipe(struct IUnknown *iface, struct dcerpc_pipe **pp) if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("Error parsing string binding")); } else { - /* TODO: jelmer, please look at this. The - "NULL" here should be a real event - context */ status = dcerpc_pipe_connect_b(NULL, &p, binding, - uuid, 0.0, + idl_iface_by_uuid(uuid), iface->ctx->dcom->credentials, - NULL); + iface->ctx->event_ctx); } talloc_free(binding); i++; diff --git a/source4/lib/registry/reg_backend_rpc.c b/source4/lib/registry/reg_backend_rpc.c index 81f002daa2..e799b3a8e4 100644 --- a/source4/lib/registry/reg_backend_rpc.c +++ b/source4/lib/registry/reg_backend_rpc.c @@ -371,8 +371,7 @@ WERROR reg_open_remote(struct registry_context **ctx, struct cli_credentials *cr status = dcerpc_pipe_connect(*ctx /* TALLOC_CTX */, &p, location, - DCERPC_WINREG_UUID, - DCERPC_WINREG_VERSION, + &dcerpc_table_winreg, credentials, ev); (*ctx)->backend_data = p; |