[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