[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2386-g1162b8a

Günther Deschner gd at samba.org
Mon Feb 18 11:17:38 GMT 2008


The branch, v3-2-test has been updated
       via  1162b8a02d365b79f5a3e86c936bae80092f1869 (commit)
       via  275ce92e277c0d30cfa098e62674111c994aeb4c (commit)
      from  1131e914df9c69b046f335999b7b62063e92fb9d (commit)

http://gitweb.samba.org/?samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 1162b8a02d365b79f5a3e86c936bae80092f1869
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 18 12:12:43 2008 +0100

    Remove unused marshalling for SVCCTL_OPEN_SCMANAGER.
    
    Guenther

commit 275ce92e277c0d30cfa098e62674111c994aeb4c
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 18 12:10:54 2008 +0100

    Use rpccli_svcctl_OpenSCManagerW() in net.
    
    Guenther

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

Summary of changes:
 source/include/rpc_svcctl.h     |   13 ------
 source/rpc_client/cli_svcctl.c  |   42 ------------------
 source/rpc_parse/parse_svcctl.c |   53 ----------------------
 source/utils/net_rpc_service.c  |   92 +++++++++++++++++++++++++++++++-------
 4 files changed, 75 insertions(+), 125 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_svcctl.h b/source/include/rpc_svcctl.h
index 1e42aef..17e2590 100644
--- a/source/include/rpc_svcctl.h
+++ b/source/include/rpc_svcctl.h
@@ -197,19 +197,6 @@ typedef struct _ServiceInfo {
 /**************************/
 
 typedef struct {
-	UNISTR2 *servername;
-	UNISTR2 *database; 
-	uint32 access;
-} SVCCTL_Q_OPEN_SCMANAGER;
-
-typedef struct {
-	POLICY_HND handle;
-	WERROR status;
-} SVCCTL_R_OPEN_SCMANAGER;
-
-/**************************/
-
-typedef struct {
 	POLICY_HND handle;
 	UNISTR2 servicename;
 	uint32  display_name_len;
diff --git a/source/rpc_client/cli_svcctl.c b/source/rpc_client/cli_svcctl.c
index 95673c1..699db6c 100644
--- a/source/rpc_client/cli_svcctl.c
+++ b/source/rpc_client/cli_svcctl.c
@@ -60,48 +60,6 @@ const char* svc_status_string( uint32 state )
 /********************************************************************
 ********************************************************************/
 
-WERROR rpccli_svcctl_open_scm(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
-                              POLICY_HND *hSCM, uint32 access_desired )
-{
-	SVCCTL_Q_OPEN_SCMANAGER in;
-	SVCCTL_R_OPEN_SCMANAGER out;
-	prs_struct qbuf, rbuf;
-	fstring server;
-	
-	ZERO_STRUCT(in);
-	ZERO_STRUCT(out);
-	
-	/* leave the database name NULL to get the default service db */
-
-	in.database = NULL;
-
-	/* set the server name */
-
-	if ( !(in.servername = TALLOC_P( mem_ctx, UNISTR2 )) )
-		return WERR_NOMEM;
-	fstr_sprintf( server, "\\\\%s", cli->cli->desthost );
-	init_unistr2( in.servername, server, UNI_STR_TERMINATE );
-
-	in.access = access_desired;
-	
-	CLI_DO_RPC_WERR( cli, mem_ctx, PI_SVCCTL, SVCCTL_OPEN_SCMANAGER_W, 
-	            in, out, 
-	            qbuf, rbuf,
-	            svcctl_io_q_open_scmanager,
-	            svcctl_io_r_open_scmanager, 
-	            WERR_GENERAL_FAILURE );
-	
-	if ( !W_ERROR_IS_OK( out.status ) )
-		return out.status;
-
-	memcpy( hSCM, &out.handle, sizeof(POLICY_HND) );
-	
-	return out.status;
-}
-
-/********************************************************************
-********************************************************************/
-
 WERROR rpccli_svcctl_open_service( struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 
                                 POLICY_HND *hSCM, POLICY_HND *hService, 
 				const char *servicename, uint32 access_desired )
diff --git a/source/rpc_parse/parse_svcctl.c b/source/rpc_parse/parse_svcctl.c
index 18e12ef..488f060 100644
--- a/source/rpc_parse/parse_svcctl.c
+++ b/source/rpc_parse/parse_svcctl.c
@@ -198,59 +198,6 @@ uint32 svcctl_sizeof_service_config( SERVICE_CONFIG *config )
 /*******************************************************************
 ********************************************************************/
 
-bool svcctl_io_q_open_scmanager(const char *desc, SVCCTL_Q_OPEN_SCMANAGER *q_u, prs_struct *ps, int depth)
-{
-	if (q_u == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "svcctl_io_q_open_scmanager");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_pointer("servername", ps, depth, (void*)&q_u->servername, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
-		return False;
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_pointer("database", ps, depth, (void*)&q_u->database, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
-		return False;
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("access", ps, depth, &q_u->access))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/
-
-bool svcctl_io_r_open_scmanager(const char *desc, SVCCTL_R_OPEN_SCMANAGER *r_u, prs_struct *ps, int depth)
-{
-	if (r_u == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "svcctl_io_r_open_scmanager");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!smb_io_pol_hnd("scm_pol", &r_u->handle, ps, depth))
-		return False;
-
-	if(!prs_werror("status", ps, depth, &r_u->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
-********************************************************************/
-
 bool svcctl_io_q_get_display_name(const char *desc, SVCCTL_Q_GET_DISPLAY_NAME *q_u, prs_struct *ps, int depth)
 {
 	if (q_u == NULL)
diff --git a/source/utils/net_rpc_service.c b/source/utils/net_rpc_service.c
index 5ad907e..789afe2 100644
--- a/source/utils/net_rpc_service.c
+++ b/source/utils/net_rpc_service.c
@@ -20,6 +20,9 @@
 #include "utils/net.h"
 
 
+#define CLI_SERVER_NAME_SLASH(_ctx, _p, _cli) \
+	_p = talloc_asprintf(_ctx, "\\\\%s", _cli->cli->desthost);
+
 /********************************************************************
 ********************************************************************/
 
@@ -149,9 +152,11 @@ static NTSTATUS rpc_service_list_internal(const DOM_SID *domain_sid,
 	POLICY_HND hSCM;
 	ENUM_SERVICES_STATUS *services;
 	WERROR result = WERR_GENERAL_FAILURE;
+	NTSTATUS status;
 	fstring servicename;
 	fstring displayname;
 	uint32 num_services = 0;
+	const char *server_name;
 	int i;
 
 	if (argc != 0 ) {
@@ -159,8 +164,16 @@ static NTSTATUS rpc_service_list_internal(const DOM_SID *domain_sid,
 		return NT_STATUS_OK;
 	}
 
-	result = rpccli_svcctl_open_scm(pipe_hnd, mem_ctx, &hSCM, SC_RIGHT_MGR_ENUMERATE_SERVICE  );
-	if ( !W_ERROR_IS_OK(result) ) {
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
+	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
+					      server_name,
+					      NULL,
+					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
+					      &hSCM,
+					      &result);
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to open Service Control Manager.  [%s]\n", dos_errstr(result));
 		return werror_to_ntstatus(result);
 	}
@@ -202,10 +215,12 @@ static NTSTATUS rpc_service_status_internal(const DOM_SID *domain_sid,
 {
 	POLICY_HND hSCM, hService;
 	WERROR result = WERR_GENERAL_FAILURE;
+	NTSTATUS status;
 	fstring servicename;
 	SERVICE_STATUS service_status;
 	SERVICE_CONFIG config;
 	fstring ascii_string;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -215,9 +230,16 @@ static NTSTATUS rpc_service_status_internal(const DOM_SID *domain_sid,
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
-
-	result = rpccli_svcctl_open_scm(pipe_hnd, mem_ctx, &hSCM, SC_RIGHT_MGR_ENUMERATE_SERVICE  );
-	if ( !W_ERROR_IS_OK(result) ) {
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
+	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
+					      server_name,
+					      NULL,
+					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
+					      &hSCM,
+					      &result);
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to open Service Control Manager.  [%s]\n", dos_errstr(result));
 		return werror_to_ntstatus(result);
 	}
@@ -304,7 +326,9 @@ static NTSTATUS rpc_service_stop_internal(const DOM_SID *domain_sid,
 {
 	POLICY_HND hSCM;
 	WERROR result = WERR_GENERAL_FAILURE;
+	NTSTATUS status;
 	fstring servicename;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -314,9 +338,16 @@ static NTSTATUS rpc_service_stop_internal(const DOM_SID *domain_sid,
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
-
-	result = rpccli_svcctl_open_scm(pipe_hnd, mem_ctx, &hSCM, SC_RIGHT_MGR_ENUMERATE_SERVICE  );
-	if ( !W_ERROR_IS_OK(result) ) {
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
+	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
+					      server_name,
+					      NULL,
+					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
+					      &hSCM,
+					      &result);
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to open Service Control Manager.  [%s]\n", dos_errstr(result));
 		return werror_to_ntstatus(result);
 	}
@@ -342,7 +373,9 @@ static NTSTATUS rpc_service_pause_internal(const DOM_SID *domain_sid,
 {
 	POLICY_HND hSCM;
 	WERROR result = WERR_GENERAL_FAILURE;
+	NTSTATUS status;
 	fstring servicename;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -352,9 +385,16 @@ static NTSTATUS rpc_service_pause_internal(const DOM_SID *domain_sid,
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
-
-	result = rpccli_svcctl_open_scm(pipe_hnd, mem_ctx, &hSCM, SC_RIGHT_MGR_ENUMERATE_SERVICE  );
-	if ( !W_ERROR_IS_OK(result) ) {
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
+	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
+					      server_name,
+					      NULL,
+					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
+					      &hSCM,
+					      &result);
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to open Service Control Manager.  [%s]\n", dos_errstr(result));
 		return werror_to_ntstatus(result);
 	}
@@ -380,7 +420,9 @@ static NTSTATUS rpc_service_resume_internal(const DOM_SID *domain_sid,
 {
 	POLICY_HND hSCM;
 	WERROR result = WERR_GENERAL_FAILURE;
+	NTSTATUS status;
 	fstring servicename;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -390,9 +432,16 @@ static NTSTATUS rpc_service_resume_internal(const DOM_SID *domain_sid,
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
-
-	result = rpccli_svcctl_open_scm(pipe_hnd, mem_ctx, &hSCM, SC_RIGHT_MGR_ENUMERATE_SERVICE  );
-	if ( !W_ERROR_IS_OK(result) ) {
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
+	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
+					      server_name,
+					      NULL,
+					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
+					      &hSCM,
+					      &result);
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to open Service Control Manager.  [%s]\n", dos_errstr(result));
 		return werror_to_ntstatus(result);
 	}
@@ -418,8 +467,10 @@ static NTSTATUS rpc_service_start_internal(const DOM_SID *domain_sid,
 {
 	POLICY_HND hSCM, hService;
 	WERROR result = WERR_GENERAL_FAILURE;
+	NTSTATUS status;
 	fstring servicename;
 	uint32 state = 0;
+	const char *server_name;
 
 	if (argc != 1 ) {
 		d_printf("Usage: net rpc service status <service>\n");
@@ -429,9 +480,16 @@ static NTSTATUS rpc_service_start_internal(const DOM_SID *domain_sid,
 	fstrcpy( servicename, argv[0] );
 
 	/* Open the Service Control Manager */
-
-	result = rpccli_svcctl_open_scm( pipe_hnd, mem_ctx, &hSCM, SC_RIGHT_MGR_ENUMERATE_SERVICE  );
-	if ( !W_ERROR_IS_OK(result) ) {
+	CLI_SERVER_NAME_SLASH(mem_ctx, server_name, pipe_hnd);
+	NT_STATUS_HAVE_NO_MEMORY(server_name);
+
+	status = rpccli_svcctl_OpenSCManagerW(pipe_hnd, mem_ctx,
+					      server_name,
+					      NULL,
+					      SC_RIGHT_MGR_ENUMERATE_SERVICE,
+					      &hSCM,
+					      &result);
+	if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(result)) {
 		d_fprintf(stderr, "Failed to open Service Control Manager.  [%s]\n", dos_errstr(result));
 		return werror_to_ntstatus(result);
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list