summaryrefslogtreecommitdiff
path: root/source4/libnet
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-12-27 14:28:01 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:47:48 -0500
commitacd6a086b341096fcbea1775ce748587fcc8020a (patch)
tree202c9407be50a6fe215c4e6ab7ccaf843807b6c3 /source4/libnet
parent1f8bb5bd8552bb02204225e312ab36e7844920c1 (diff)
downloadsamba-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/libnet')
-rw-r--r--source4/libnet/libnet_join.c12
-rw-r--r--source4/libnet/libnet_passwd.c8
-rw-r--r--source4/libnet/libnet_rpc.c8
-rw-r--r--source4/libnet/libnet_rpc.h4
-rw-r--r--source4/libnet/libnet_share.c12
-rw-r--r--source4/libnet/libnet_time.c4
-rw-r--r--source4/libnet/libnet_user.c4
-rw-r--r--source4/libnet/libnet_vampire.c3
8 files changed, 16 insertions, 39 deletions
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index 28d12247c9..11e1dfc175 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -274,8 +274,7 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
status = dcerpc_pipe_connect_b(tmp_ctx,
&drsuapi_pipe,
drsuapi_binding,
- DCERPC_DRSUAPI_UUID,
- DCERPC_DRSUAPI_VERSION,
+ &dcerpc_table_drsuapi,
ctx->cred,
ctx->event_ctx);
if (!NT_STATUS_IS_OK(status)) {
@@ -644,9 +643,7 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
c->level = LIBNET_RPC_CONNECT_BINDING;
c->in.binding = r->in.binding;
}
- c->in.dcerpc_iface_name = DCERPC_LSARPC_NAME;
- c->in.dcerpc_iface_uuid = DCERPC_LSARPC_UUID;
- c->in.dcerpc_iface_version = DCERPC_LSARPC_VERSION;
+ c->in.dcerpc_iface = &dcerpc_table_lsarpc;
/* connect to the LSA pipe of the PDC */
@@ -761,7 +758,7 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
/* Make binding string for samr, not the other pipe */
status = dcerpc_epm_map_binding(tmp_ctx, samr_binding,
- DCERPC_SAMR_UUID, DCERPC_SAMR_VERSION,
+ &dcerpc_table_samr,
lsa_pipe->conn->event_ctx);
if (!NT_STATUS_IS_OK(status)) {
r->out.error_string = talloc_asprintf(mem_ctx,
@@ -782,8 +779,7 @@ NTSTATUS libnet_JoinDomain(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
return status;
}
- status = dcerpc_pipe_auth(samr_pipe, samr_binding, DCERPC_SAMR_UUID,
- DCERPC_SAMR_VERSION, ctx->cred);
+ status = dcerpc_pipe_auth(samr_pipe, samr_binding, &dcerpc_table_samr, ctx->cred);
if (!NT_STATUS_IS_OK(status)) {
r->out.error_string = talloc_asprintf(mem_ctx,
"SAMR bind failed: %s",
diff --git a/source4/libnet/libnet_passwd.c b/source4/libnet/libnet_passwd.c
index cdd5043cb8..db54935a78 100644
--- a/source4/libnet/libnet_passwd.c
+++ b/source4/libnet/libnet_passwd.c
@@ -54,9 +54,7 @@ static NTSTATUS libnet_ChangePassword_samr(struct libnet_context *ctx, TALLOC_CT
/* prepare connect to the SAMR pipe of the users domain PDC */
c.level = LIBNET_RPC_CONNECT_PDC;
c.in.domain_name = r->samr.in.domain_name;
- c.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
- c.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
- c.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
+ c.in.dcerpc_iface = &dcerpc_table_samr;
/* 1. connect to the SAMR pipe of users domain PDC (maybe a standalone server or workstation) */
status = libnet_RpcConnect(ctx, mem_ctx, &c);
@@ -517,9 +515,7 @@ static NTSTATUS libnet_SetPassword_samr(struct libnet_context *ctx, TALLOC_CTX *
/* prepare connect to the SAMR pipe of users domain PDC */
c.level = LIBNET_RPC_CONNECT_PDC;
c.in.domain_name = r->samr.in.domain_name;
- c.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
- c.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
- c.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
+ c.in.dcerpc_iface = &dcerpc_table_samr;
/* 1. connect to the SAMR pipe of users domain PDC (maybe a standalone server or workstation) */
status = libnet_RpcConnect(ctx, mem_ctx, &c);
diff --git a/source4/libnet/libnet_rpc.c b/source4/libnet/libnet_rpc.c
index e926fc3778..6b94734f9b 100644
--- a/source4/libnet/libnet_rpc.c
+++ b/source4/libnet/libnet_rpc.c
@@ -51,13 +51,13 @@ static NTSTATUS libnet_RpcConnectSrv(struct libnet_context *ctx, TALLOC_CTX *mem
/* connect to remote dcerpc pipe */
status = dcerpc_pipe_connect(mem_ctx, &r->out.dcerpc_pipe,
- binding, r->in.dcerpc_iface_uuid, r->in.dcerpc_iface_version,
+ binding, r->in.dcerpc_iface,
ctx->cred, ctx->event_ctx);
if (!NT_STATUS_IS_OK(status)) {
r->out.error_string = talloc_asprintf(mem_ctx,
"dcerpc_pipe_connect to pipe %s failed with %s\n",
- r->in.dcerpc_iface_name, binding);
+ r->in.dcerpc_iface->name, binding);
return status;
}
@@ -98,9 +98,7 @@ static NTSTATUS libnet_RpcConnectPdc(struct libnet_context *ctx, TALLOC_CTX *mem
/* ok, pdc has been found so do attempt to rpc connect */
r2.level = LIBNET_RPC_CONNECT_SERVER;
r2.in.domain_name = talloc_strdup(mem_ctx, f.out.address[0]);
- r2.in.dcerpc_iface_name = r->in.dcerpc_iface_name;
- r2.in.dcerpc_iface_uuid = r->in.dcerpc_iface_uuid;
- r2.in.dcerpc_iface_version = r->in.dcerpc_iface_version;
+ r2.in.dcerpc_iface = r->in.dcerpc_iface;
status = libnet_RpcConnect(ctx, mem_ctx, &r2);
diff --git a/source4/libnet/libnet_rpc.h b/source4/libnet/libnet_rpc.h
index 708084cf58..d2a83bf642 100644
--- a/source4/libnet/libnet_rpc.h
+++ b/source4/libnet/libnet_rpc.h
@@ -36,9 +36,7 @@ struct libnet_RpcConnect {
struct {
const char *domain_name;
const char *binding;
- const char *dcerpc_iface_name;
- const char *dcerpc_iface_uuid;
- uint32_t dcerpc_iface_version;
+ const struct dcerpc_interface_table *dcerpc_iface;
} in;
struct {
struct dcerpc_pipe *dcerpc_pipe;
diff --git a/source4/libnet/libnet_share.c b/source4/libnet/libnet_share.c
index 4b473436e1..0473658da8 100644
--- a/source4/libnet/libnet_share.c
+++ b/source4/libnet/libnet_share.c
@@ -34,9 +34,7 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx,
c.level = LIBNET_RPC_CONNECT_SERVER;
c.in.domain_name = r->in.server_name;
- c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
- c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
- c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
+ c.in.dcerpc_iface = &dcerpc_table_srvsvc;
status = libnet_RpcConnect(ctx, mem_ctx, &c);
if (!NT_STATUS_IS_OK(status)) {
@@ -87,9 +85,7 @@ NTSTATUS libnet_AddShare(struct libnet_context *ctx,
c.level = LIBNET_RPC_CONNECT_SERVER;
c.in.domain_name = r->in.server_name;
- c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
- c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
- c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
+ c.in.dcerpc_iface = &dcerpc_table_srvsvc;
status = libnet_RpcConnect(ctx, mem_ctx, &c);
if (!NT_STATUS_IS_OK(status)) {
@@ -128,9 +124,7 @@ NTSTATUS libnet_DelShare(struct libnet_context *ctx,
c.level = LIBNET_RPC_CONNECT_SERVER;
c.in.domain_name = r->in.server_name;
- c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
- c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
- c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
+ c.in.dcerpc_iface = &dcerpc_table_srvsvc;
status = libnet_RpcConnect(ctx, mem_ctx, &c);
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/libnet/libnet_time.c b/source4/libnet/libnet_time.c
index 63d63e104f..655a475503 100644
--- a/source4/libnet/libnet_time.c
+++ b/source4/libnet/libnet_time.c
@@ -36,9 +36,7 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX *
/* prepare connect to the SRVSVC pipe of a timeserver */
c.level = LIBNET_RPC_CONNECT_SERVER;
c.in.domain_name = r->srvsvc.in.server_name;
- c.in.dcerpc_iface_name = DCERPC_SRVSVC_NAME;
- c.in.dcerpc_iface_uuid = DCERPC_SRVSVC_UUID;
- c.in.dcerpc_iface_version = DCERPC_SRVSVC_VERSION;
+ c.in.dcerpc_iface = &dcerpc_table_srvsvc;
/* 1. connect to the SRVSVC pipe of a timeserver */
status = libnet_RpcConnect(ctx, mem_ctx, &c);
diff --git a/source4/libnet/libnet_user.c b/source4/libnet/libnet_user.c
index 379989dd2b..c8e497a08e 100644
--- a/source4/libnet/libnet_user.c
+++ b/source4/libnet/libnet_user.c
@@ -44,9 +44,7 @@ NTSTATUS libnet_CreateUser(struct libnet_context *ctx, TALLOC_CTX *mem_ctx, stru
/* connect rpc service of remote server */
cn.level = LIBNET_RPC_CONNECT_SERVER;
cn.in.domain_name = talloc_strdup(mem_ctx, *fp.out.address);
- cn.in.dcerpc_iface_name = DCERPC_SAMR_NAME;
- cn.in.dcerpc_iface_uuid = DCERPC_SAMR_UUID;
- cn.in.dcerpc_iface_version = DCERPC_SAMR_VERSION;
+ cn.in.dcerpc_iface = &dcerpc_table_samr;
status = libnet_RpcConnect(ctx, mem_ctx, &cn);
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c
index 80da646200..d0b7722c08 100644
--- a/source4/libnet/libnet_vampire.c
+++ b/source4/libnet/libnet_vampire.c
@@ -212,8 +212,7 @@ NTSTATUS libnet_SamSync_netlogon(struct libnet_context *ctx, TALLOC_CTX *mem_ctx
/* Setup schannel */
nt_status = dcerpc_pipe_connect_b(samsync_ctx, &p, b,
- DCERPC_NETLOGON_UUID,
- DCERPC_NETLOGON_VERSION,
+ &dcerpc_table_netlogon,
machine_account, ctx->event_ctx);
if (!NT_STATUS_IS_OK(nt_status)) {