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 <[email protected]>
Date:   Tue Jan 4 13:56:05 2011 +0100

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

commit 4c37257f16cf2b34550a993f5423ee772254870f
Author: Stefan Metzmacher <[email protected]>
Date:   Tue Jan 4 17:18:22 2011 +0100

    s3:net_utils: use dcerpc_dssetup_DsRoleGetPrimaryDomainInformation()
    
    metze

commit f016e4d4bd86d34a39822e9fdc0f83dbf67442b7
Author: Stefan Metzmacher <[email protected]>
Date:   Tue Jan 4 13:55:15 2011 +0100

    s3:winbindd: use dcerpc_dssetup_DsRoleGetPrimaryDomainInformation()
    
    metze

commit c6aedc9750aff42a6d201addf0d4ed745743b9a2
Author: Stefan Metzmacher <[email protected]>
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 <[email protected]>
Date:   Tue Jan 4 13:36:24 2011 +0100

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

commit 6dd5ccd04130a7d33bebca1a2340d339ab7b34c9
Author: Stefan Metzmacher <[email protected]>
Date:   Tue Jan 4 21:24:17 2011 +0100

    s3:rpcclient: improve "epmmap" output
    
    metze

commit 697d4ea8fff6fbc48aa59b17fa0ecc91bf1d233d
Author: Stefan Metzmacher <[email protected]>
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 <[email protected]>
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

Reply via email to