[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Tue Jan 4 14:22:01 MST 2011


The branch, master has been updated
       via  899adca s3:build: don't use cli_dssetup.c any more
       via  4c37257 s3:net_utils: use dcerpc_dssetup_DsRoleGetPrimaryDomainInformation()
       via  f016e4d s3:winbindd: use dcerpc_dssetup_DsRoleGetPrimaryDomainInformation()
       via  c6aedc9 s3:rpcclient: use dcerpc_binding_handle based client stubs in cmd_dssetup.c
       via  62aa019 s3:build: don't use cli_epmapper.c anymore
       via  6dd5ccd s3:rpcclient: improve "epmmap" output
       via  697d4ea s3:rpcclient: use dcerpc_binding_handle bases client stubs in cmd_epmapper.c
       via  fba2fdf s3:rpc_client: use dcerpc_epm_Map() and don't ignore 'result' anymore.
      from  8925b03 s3-rpcecho: Only register rpcecho in the developer build.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 899adcaec97f5f8781507a221d0ffcbe73e59b0c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 13:56:05 2011 +0100

    s3:build: don't use cli_dssetup.c any more
    
    metze
    
    Autobuild-User: Stefan Metzmacher <metze at samba.org>
    Autobuild-Date: Tue Jan  4 22:21:48 CET 2011 on sn-devel-104

commit 4c37257f16cf2b34550a993f5423ee772254870f
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 17:18:22 2011 +0100

    s3:net_utils: use dcerpc_dssetup_DsRoleGetPrimaryDomainInformation()
    
    metze

commit f016e4d4bd86d34a39822e9fdc0f83dbf67442b7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 13:55:15 2011 +0100

    s3:winbindd: use dcerpc_dssetup_DsRoleGetPrimaryDomainInformation()
    
    metze

commit c6aedc9750aff42a6d201addf0d4ed745743b9a2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 13:51:34 2011 +0100

    s3:rpcclient: use dcerpc_binding_handle based client stubs in cmd_dssetup.c
    
    metze

commit 62aa019a1b5b0ec17e0b4494de44e80ffc793fdd
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 13:36:24 2011 +0100

    s3:build: don't use cli_epmapper.c anymore
    
    metze

commit 6dd5ccd04130a7d33bebca1a2340d339ab7b34c9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 21:24:17 2011 +0100

    s3:rpcclient: improve "epmmap" output
    
    metze

commit 697d4ea8fff6fbc48aa59b17fa0ecc91bf1d233d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 13:33:46 2011 +0100

    s3:rpcclient: use dcerpc_binding_handle bases client stubs in cmd_epmapper.c
    
    metze

commit fba2fdf2651bd4ffaabb41d5e0506cbf3bcb0699
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Jan 4 13:32:28 2011 +0100

    s3:rpc_client: use dcerpc_epm_Map() and don't ignore 'result' anymore.
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source3/Makefile.in              |    6 +--
 source3/rpc_client/cli_pipe.c    |   13 ++++++-
 source3/rpcclient/cmd_dssetup.c  |    3 +-
 source3/rpcclient/cmd_epmapper.c |   72 +++++++++++++++++++++++++++++++-------
 source3/utils/net_util.c         |   10 ++++-
 source3/winbindd/winbindd_cm.c   |    5 ++-
 source3/wscript_build            |   16 ++------
 7 files changed, 90 insertions(+), 35 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index 968e2eb..cfcadce 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -363,8 +363,7 @@ LIBCLI_ECHO_OBJ = librpc/gen_ndr/cli_echo.o \
 LIBCLI_INITSHUTDOWN_OBJ = librpc/gen_ndr/cli_initshutdown.o \
 			  librpc/gen_ndr/ndr_initshutdown_c.o
 
-LIBCLI_DSSETUP_OBJ = librpc/gen_ndr/cli_dssetup.o \
-		     librpc/gen_ndr/ndr_dssetup_c.o
+LIBCLI_DSSETUP_OBJ = librpc/gen_ndr/ndr_dssetup_c.o
 
 LIBCLI_SVCCTL_OBJ = librpc/gen_ndr/cli_svcctl.o \
 		    librpc/gen_ndr/ndr_svcctl_c.o
@@ -388,8 +387,7 @@ LIBCLI_NETLOGON_OBJ = librpc/gen_ndr/cli_netlogon.o \
 		      librpc/gen_ndr/ndr_netlogon_c.o \
 		      rpc_client/cli_netlogon.o
 
-LIBCLI_EPMAPPER_OBJ = librpc/gen_ndr/cli_epmapper.o \
-		      librpc/gen_ndr/ndr_epmapper_c.o
+LIBCLI_EPMAPPER_OBJ = librpc/gen_ndr/ndr_epmapper_c.o
 
 LIBNDR_GEN_OBJ = librpc/gen_ndr/ndr_wkssvc.o \
 		 $(LIBNDR_GEN_OBJ0) \
diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c
index b59e9db..d7320c1 100644
--- a/source3/rpc_client/cli_pipe.c
+++ b/source3/rpc_client/cli_pipe.c
@@ -2464,6 +2464,7 @@ static NTSTATUS rpc_pipe_get_tcp_port(const char *host,
 {
 	NTSTATUS status;
 	struct rpc_pipe_client *epm_pipe = NULL;
+	struct dcerpc_binding_handle *epm_handle = NULL;
 	struct pipe_auth_data *auth = NULL;
 	struct dcerpc_binding *map_binding = NULL;
 	struct dcerpc_binding *res_binding = NULL;
@@ -2474,6 +2475,7 @@ static NTSTATUS rpc_pipe_get_tcp_port(const char *host,
 	uint32_t max_towers = 1;
 	struct epm_twr_p_t towers;
 	TALLOC_CTX *tmp_ctx = talloc_stackframe();
+	uint32_t result = 0;
 
 	if (pport == NULL) {
 		status = NT_STATUS_INVALID_PARAMETER;
@@ -2488,6 +2490,7 @@ static NTSTATUS rpc_pipe_get_tcp_port(const char *host,
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
 	}
+	epm_handle = epm_pipe->binding_handle;
 
 	status = rpccli_anon_bind_data(tmp_ctx, &auth);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -2541,7 +2544,7 @@ static NTSTATUS rpc_pipe_get_tcp_port(const char *host,
 
 	/* ask the endpoint mapper for the port */
 
-	status = rpccli_epm_Map(epm_pipe,
+	status = dcerpc_epm_Map(epm_handle,
 				tmp_ctx,
 				CONST_DISCARD(struct GUID *,
 					      &(abstract_syntax->uuid)),
@@ -2549,12 +2552,18 @@ static NTSTATUS rpc_pipe_get_tcp_port(const char *host,
 				entry_handle,
 				max_towers,
 				&num_towers,
-				&towers);
+				&towers,
+				&result);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		goto done;
 	}
 
+	if (result != EPMAPPER_STATUS_OK) {
+		status = NT_STATUS_UNSUCCESSFUL;
+		goto done;
+	}
+
 	if (num_towers != 1) {
 		status = NT_STATUS_UNSUCCESSFUL;
 		goto done;
diff --git a/source3/rpcclient/cmd_dssetup.c b/source3/rpcclient/cmd_dssetup.c
index 88f541b..198c010 100644
--- a/source3/rpcclient/cmd_dssetup.c
+++ b/source3/rpcclient/cmd_dssetup.c
@@ -29,11 +29,12 @@ static WERROR cmd_ds_dsrole_getprimarydominfo(struct rpc_pipe_client *cli,
 					      TALLOC_CTX *mem_ctx, int argc,
 					      const char **argv)
 {
+	struct dcerpc_binding_handle *b = cli->binding_handle;
 	NTSTATUS status;
 	WERROR werr;
 	union dssetup_DsRoleInfo info;
 
-	status = rpccli_dssetup_DsRoleGetPrimaryDomainInformation(cli, mem_ctx,
+	status = dcerpc_dssetup_DsRoleGetPrimaryDomainInformation(b, mem_ctx,
 								  DS_ROLE_BASIC_INFORMATION,
 								  &info,
 								  &werr);
diff --git a/source3/rpcclient/cmd_epmapper.c b/source3/rpcclient/cmd_epmapper.c
index 3ee0120..7ddd0bc 100644
--- a/source3/rpcclient/cmd_epmapper.c
+++ b/source3/rpcclient/cmd_epmapper.c
@@ -27,15 +27,17 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p,
 				 TALLOC_CTX *mem_ctx,
 				 int argc, const char **argv)
 {
+	struct dcerpc_binding_handle *b = p->binding_handle;
 	struct dcerpc_binding map_binding;
 	struct epm_twr_t map_tower;
-	struct epm_twr_t res_tower;
-	struct epm_twr_p_t towers;
+	struct epm_twr_p_t towers[500];
 	struct policy_handle entry_handle;
 	struct ndr_syntax_id abstract_syntax;
 	uint32_t num_towers;
 	TALLOC_CTX *tmp_ctx = talloc_stackframe();
 	NTSTATUS status;
+	uint32_t result;
+	uint32_t i;
 
 	abstract_syntax = ndr_table_lsarpc.syntax_id;
 
@@ -52,21 +54,52 @@ static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p,
 		return status;
 	}
 
-	towers.twr = &res_tower;
-
+	ZERO_STRUCT(towers);
 	ZERO_STRUCT(entry_handle);
-	status = rpccli_epm_Map(
-		p, tmp_ctx, &abstract_syntax.uuid,
-		&map_tower, &entry_handle, 1,
-		&num_towers, &towers);
 
-	return status;
+	status = dcerpc_epm_Map(
+		b, tmp_ctx, &abstract_syntax.uuid,
+		&map_tower, &entry_handle, ARRAY_SIZE(towers),
+		&num_towers, towers, &result);
+	if (!NT_STATUS_IS_OK(status)) {
+		d_fprintf(stderr, "dcerpc_epm_Map returned %s\n",
+			  nt_errstr(status));
+		return status;
+	}
+
+	if (result != EPMAPPER_STATUS_OK) {
+		d_fprintf(stderr, "epm_Map returned %u (0x%08X)\n",
+			  result, result);
+		return NT_STATUS_UNSUCCESSFUL;
+	}
+
+	d_printf("num_tower[%u]\n", num_towers);
+
+	for (i=0; i < num_towers; i++) {
+		struct dcerpc_binding *binding;
+
+		if (towers[i].twr == NULL) {
+			d_fprintf(stderr, "tower[%u] NULL\n", i);
+			break;
+		}
+
+		status = dcerpc_binding_from_tower(tmp_ctx, &towers[i].twr->tower,
+						   &binding);
+		if (!NT_STATUS_IS_OK(status)) {
+			break;
+		}
+
+		d_printf("tower[%u] %s\n", i, dcerpc_binding_string(tmp_ctx, binding));
+	}
+
+	return NT_STATUS_OK;
 }
 
 static NTSTATUS cmd_epmapper_lookup(struct rpc_pipe_client *p,
 				    TALLOC_CTX *mem_ctx,
 				    int argc, const char **argv)
 {
+	struct dcerpc_binding_handle *b = p->binding_handle;
 	struct policy_handle entry_handle;
 
 	ZERO_STRUCT(entry_handle);
@@ -78,23 +111,36 @@ static NTSTATUS cmd_epmapper_lookup(struct rpc_pipe_client *p,
 		NTSTATUS status;
 		char *guid_string;
 		struct dcerpc_binding *binding;
+		uint32_t result;
 
-		status = rpccli_epm_Lookup(p, tmp_ctx,
+		status = dcerpc_epm_Lookup(b, tmp_ctx,
 				   0, /* rpc_c_ep_all */
 				   NULL,
 				   NULL,
 				   0, /* rpc_c_vers_all */
 				   &entry_handle,
 				   1, /* max_ents */
-				   &num_entries, &entry);
+				   &num_entries, &entry,
+				   &result);
 		if (!NT_STATUS_IS_OK(status)) {
-			d_fprintf(stderr, "rpccli_epm_Lookup returned %s\n",
+			d_fprintf(stderr, "dcerpc_epm_Lookup returned %s\n",
 				  nt_errstr(status));
 			break;
 		}
 
+		if (result == EPMAPPER_STATUS_NO_MORE_ENTRIES) {
+			d_fprintf(stderr, "epm_Lookup no more entries\n");
+			break;
+		}
+
+		if (result != EPMAPPER_STATUS_OK) {
+			d_fprintf(stderr, "epm_Lookup returned %u (0x%08X)\n",
+				  result, result);
+			break;
+		}
+
 		if (num_entries != 1) {
-			d_fprintf(stderr, "rpccli_epm_Lookup returned %d "
+			d_fprintf(stderr, "epm_Lookup returned %d "
 				  "entries, expected one\n", (int)num_entries);
 			break;
 		}
diff --git a/source3/utils/net_util.c b/source3/utils/net_util.c
index 2f031c4..79d453f 100644
--- a/source3/utils/net_util.c
+++ b/source3/utils/net_util.c
@@ -627,8 +627,10 @@ NTSTATUS net_scan_dc(struct net_context *c,
 {
 	TALLOC_CTX *mem_ctx = talloc_tos();
 	struct rpc_pipe_client *dssetup_pipe = NULL;
+	struct dcerpc_binding_handle *dssetup_handle = NULL;
 	union dssetup_DsRoleInfo info;
 	NTSTATUS status;
+	WERROR werr;
 
 	ZERO_STRUCTP(dc_info);
 
@@ -637,13 +639,17 @@ NTSTATUS net_scan_dc(struct net_context *c,
         if (!NT_STATUS_IS_OK(status)) {
 		return status;
 	}
+	dssetup_handle = dssetup_pipe->binding_handle;
 
-	status = rpccli_dssetup_DsRoleGetPrimaryDomainInformation(dssetup_pipe, mem_ctx,
+	status = dcerpc_dssetup_DsRoleGetPrimaryDomainInformation(dssetup_handle, mem_ctx,
 								  DS_ROLE_BASIC_INFORMATION,
 								  &info,
-								  NULL);
+								  &werr);
 	TALLOC_FREE(dssetup_pipe);
 
+	if (NT_STATUS_IS_OK(status)) {
+		status = werror_to_ntstatus(werr);
+	}
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
 	}
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index d5642a3..6ec6861 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -1861,12 +1861,15 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
 		goto no_dssetup;
 	}
 
-	result = rpccli_dssetup_DsRoleGetPrimaryDomainInformation(cli, mem_ctx,
+	result = dcerpc_dssetup_DsRoleGetPrimaryDomainInformation(cli->binding_handle, mem_ctx,
 								  DS_ROLE_BASIC_INFORMATION,
 								  &info,
 								  &werr);
 	TALLOC_FREE(cli);
 
+	if (NT_STATUS_IS_OK(result)) {
+		result = werror_to_ntstatus(werr);
+	}
 	if (!NT_STATUS_IS_OK(result)) {
 		DEBUG(5, ("set_dc_type_and_flags_connect: rpccli_ds_getprimarydominfo "
 			  "on domain %s failed: (%s)\n",
diff --git a/source3/wscript_build b/source3/wscript_build
index 907335d..af7c6cb 100644
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -778,7 +778,7 @@ if bld.CONFIG_SET('HAVE_KRB5_LOCATE_PLUGIN_H'):
 bld.SAMBA_SUBSYSTEM('LIBMSRPC',
                     source='${LIBMSRPC_SRC}',
                     deps='''ndr NDR_SECURITY NDR_DCERPC NDR_SCHANNEL
-                    RPCCLI_EPMAPPER COMMON_SCHANNELDB LIBCLI_AUTH''',
+                    RPC_NDR_EPMAPPER COMMON_SCHANNELDB LIBCLI_AUTH''',
                     vars=locals())
 
 bld.SAMBA_SUBSYSTEM('LIBMSRPC_GEN',
@@ -1137,10 +1137,6 @@ bld.SAMBA_SUBSYSTEM('RPCCLI_SVCCTL',
 	source='../librpc/gen_ndr/cli_svcctl.c',
 	public_deps='RPC_NDR_SVCCTL')
 
-bld.SAMBA_SUBSYSTEM('RPCCLI_DSSETUP',
-	source='../librpc/gen_ndr/cli_dssetup.c',
-	public_deps='RPC_NDR_DSSETUP')
-
 bld.SAMBA_SUBSYSTEM('RPCCLI_DFS',
 	source='../librpc/gen_ndr/cli_dfs.c',
 	public_deps='RPC_NDR_DFS')
@@ -1153,10 +1149,6 @@ bld.SAMBA_SUBSYSTEM('RPCCLI_EVENTLOG',
 	source='../librpc/gen_ndr/cli_eventlog.c',
 	public_deps='RPC_NDR_EVENTLOG')
 
-bld.SAMBA_SUBSYSTEM('RPCCLI_EPMAPPER',
-	source='../librpc/gen_ndr/cli_epmapper.c',
-	public_deps='RPC_NDR_EPMAPPER')
-
 bld.SAMBA_SUBSYSTEM('RPCCLI_SPOOLSS',
 	source='../librpc/gen_ndr/cli_spoolss.c',
 	public_deps='RPC_NDR_SPOOLSS')
@@ -1215,7 +1207,7 @@ bld.SAMBA_BINARY('winbindd/winbindd',
                  LIBAFS_SETTOKEN PROFILE SLCACHE DCUTIL idmap nss_info
                  TOKEN_UTIL
                  LIBCLI_SAMR LIBCLI_LSA LIBCLI_NETLOGON
-                 RPCCLI_DSSETUP NAMED_PIPE_AUTH_TSTREAM INIT_NETLOGON
+                 RPC_NDR_DSSETUP NAMED_PIPE_AUTH_TSTREAM INIT_NETLOGON
                  RPC_NCACN_NP RPC_PIPE_REGISTER RPC_SAMR RPC_LSARPC
                  ''',
                  enabled=bld.env.build_winbind,
@@ -1239,7 +1231,7 @@ bld.SAMBA_BINARY('rpcclient/rpcclient',
                  LIBADS SMBREADLINE DCUTIL RPCCLI_WINREG RPCCLI_ECHO
                  RPC_CLIENT_SCHANNEL
                  LIBCLI_SAMR LIBCLI_LSA LIBCLI_NETLOGON LIBCLI_SPOOLSS
-                 RPCCLI_SRVSVC RPCCLI_WKSSVC RPCCLI_DSSETUP RPCCLI_DFS
+                 RPCCLI_SRVSVC RPCCLI_WKSSVC RPC_NDR_DSSETUP RPCCLI_DFS
                  RPCCLI_DRSUAPI RPC_NDR_NTSVCS RPCCLI_EVENTLOG INIT_NETLOGON
                  INIT_SAMR
                  ''',
@@ -1261,7 +1253,7 @@ bld.SAMBA_BINARY('net',
                  REGFIO NDR_NTPRINTING RPCCLI_WINREG
                  RPC_CLIENT_SCHANNEL TOKEN_UTIL
                  LIBCLI_SAMR LIBCLI_LSA LIBCLI_NETLOGON LIBCLI_SPOOLSS
-                 RPCCLI_SRVSVC RPCCLI_WKSSVC RPCCLI_SVCCTL RPCCLI_DSSETUP
+                 RPCCLI_SRVSVC RPCCLI_WKSSVC RPCCLI_SVCCTL RPC_NDR_DSSETUP
                  RPCCLI_INITSHUTDOWN RPCCLI_DRSUAPI INIT_NETLOGON INIT_SAMR
 		 ''',
                  vars=locals())


-- 
Samba Shared Repository


More information about the samba-cvs mailing list