[SCM] Samba Shared Repository - branch master updated - 07e1e30b96dc17c60604b55a3f2a50afc9c8d791

Günther Deschner gd at samba.org
Thu Jan 8 11:16:33 GMT 2009


The branch, master has been updated
       via  07e1e30b96dc17c60604b55a3f2a50afc9c8d791 (commit)
       via  3079e14f94c58be379474e20b488131cc2632497 (commit)
       via  5581637d2269f99075071ec5aade59b492bb9740 (commit)
       via  385316a09a6dbb790e5f7cb012614acd42bbbb00 (commit)
       via  b42cb4944a6c4c1509e175553c25b52f765bb3bb (commit)
       via  661eeb34b5079e053c821f6d637a5061e6ce6c5e (commit)
       via  4df1a491c5471b751835583471a0bb0f17d42616 (commit)
       via  6eb507e30d39e4adea96fcc67645595a36f0fce7 (commit)
       via  2a4f1ae1fb706c8589c4ef14c642498db119139d (commit)
       via  979c82ab43c9c09fd4835361217fdea043d3fddf (commit)
       via  ea7fa77bb2f2f17c3df2ed0069ab1d4746029df5 (commit)
       via  60c10a153a4e6c6cb2adf6c649b57a12f51dea26 (commit)
       via  55da3807d744c3e53e1cae6021357afd6fa0329d (commit)
       via  176bbcf90cd890111177aeebce3f0563ac2da584 (commit)
       via  550c64bef9cfc3f2aca6edcaeaf5e351aa4d8ee0 (commit)
      from  61a23c5eea2203721a70a4ad41bfdc6cd1d6a2a7 (commit)

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


- Log -----------------------------------------------------------------
commit 07e1e30b96dc17c60604b55a3f2a50afc9c8d791
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 7 15:05:28 2009 +0100

    s3-svcctl: remove old hand marshalling of svcctl_QueryServiceConfig2W.
    
    Guenther

commit 3079e14f94c58be379474e20b488131cc2632497
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 7 15:05:01 2009 +0100

    s3-svcctl: use pidl for _svcctl_QueryServiceConfig2W.
    
    Guenther

commit 5581637d2269f99075071ec5aade59b492bb9740
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 7 12:38:23 2009 +0100

    s3-svcctl: fix return code for _svcctl_QueryServiceStatusEx.
    
    Guenther

commit 385316a09a6dbb790e5f7cb012614acd42bbbb00
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 6 19:00:05 2009 +0100

    s3-svcctl: remove old hand marshalling of svcctl_QueryServiceStatusEx.
    
    Guenther

commit b42cb4944a6c4c1509e175553c25b52f765bb3bb
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 6 18:59:44 2009 +0100

    s3-svcctl: use pidl for _svcctl_QueryServiceStatusEx.
    
    Guenther

commit 661eeb34b5079e053c821f6d637a5061e6ce6c5e
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 14 13:49:36 2008 +0100

    s4-smbtorture: use names for info level in test_QueryServiceStatusEx.
    
    Guenther

commit 4df1a491c5471b751835583471a0bb0f17d42616
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 14 13:48:59 2008 +0100

    s4-smbtorture: add my copyright to svcctl test.
    
    Guenther

commit 6eb507e30d39e4adea96fcc67645595a36f0fce7
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 7 15:06:04 2009 +0100

    s3-svcctl: use pidl's ndr opcodes for NDR_SVCCTL_QUERYSERVICECONFIGW.
    
    Guenther

commit 2a4f1ae1fb706c8589c4ef14c642498db119139d
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 6 18:19:29 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit 979c82ab43c9c09fd4835361217fdea043d3fddf
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 7 17:50:09 2009 +0100

    svcctl: add svcctl_ServiceState.
    
    Guenther

commit ea7fa77bb2f2f17c3df2ed0069ab1d4746029df5
Author: Günther Deschner <gd at samba.org>
Date:   Wed Jan 7 15:03:45 2009 +0100

    svcctl: add SERVICE_FAILURE_ACTIONS and SERVICE_DESCRIPTION to IDL.
    
    Guenther

commit 60c10a153a4e6c6cb2adf6c649b57a12f51dea26
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 6 18:58:18 2009 +0100

    svcctl: add SERVICE_STATUS_PROCESS to idl.
    
    Guenther

commit 55da3807d744c3e53e1cae6021357afd6fa0329d
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jan 6 18:15:01 2009 +0100

    svcctl: add svcctl_ErrorControl and svcctl_Type (based on samba3) to IDL.
    
    Guenther

commit 176bbcf90cd890111177aeebce3f0563ac2da584
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 14 12:03:18 2008 +0100

    svcctl: add svcctl_ConfigLevel from samba 3.
    
    Guenther

commit 550c64bef9cfc3f2aca6edcaeaf5e351aa4d8ee0
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 14 11:58:12 2008 +0100

    svcctl: move SVC_STATUS_ to idl.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/cli_svcctl.c        |   32 +-
 librpc/gen_ndr/cli_svcctl.h        |   24 +-
 librpc/gen_ndr/ndr_svcctl.c        |  589 +++++++++++++++++++++++++++++++++---
 librpc/gen_ndr/ndr_svcctl.h        |   18 ++
 librpc/gen_ndr/svcctl.h            |  143 ++++++++-
 librpc/idl/svcctl.idl              |   92 +++++-
 source3/include/proto.h            |   12 -
 source3/include/rpc_svcctl.h       |   75 -----
 source3/rpc_parse/parse_svcctl.c   |  264 ----------------
 source3/rpc_server/srv_svcctl.c    |   39 +---
 source3/rpc_server/srv_svcctl_nt.c |   96 ++++---
 source4/torture/rpc/svcctl.c       |    5 +-
 12 files changed, 864 insertions(+), 525 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/cli_svcctl.c b/librpc/gen_ndr/cli_svcctl.c
index 3288e4a..28318b3 100644
--- a/librpc/gen_ndr/cli_svcctl.c
+++ b/librpc/gen_ndr/cli_svcctl.c
@@ -509,8 +509,8 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
 					    uint32_t type /* [in]  */,
-					    uint32_t start /* [in]  */,
-					    uint32_t error /* [in]  */,
+					    enum svcctl_StartType start_type /* [in]  */,
+					    enum svcctl_ErrorControl error_control /* [in]  */,
 					    const char *binary_path /* [in] [unique,charset(UTF16)] */,
 					    const char *load_order_group /* [in] [unique,charset(UTF16)] */,
 					    uint32_t *tag_id /* [out] [ref] */,
@@ -526,8 +526,8 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli,
 	/* In parameters */
 	r.in.handle = handle;
 	r.in.type = type;
-	r.in.start = start;
-	r.in.error = error;
+	r.in.start_type = start_type;
+	r.in.error_control = error_control;
 	r.in.binary_path = binary_path;
 	r.in.load_order_group = load_order_group;
 	r.in.dependencies = dependencies;
@@ -575,8 +575,8 @@ NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli,
 				      const char *DisplayName /* [in] [unique,charset(UTF16)] */,
 				      uint32_t desired_access /* [in]  */,
 				      uint32_t type /* [in]  */,
-				      uint32_t start_type /* [in]  */,
-				      uint32_t error_control /* [in]  */,
+				      enum svcctl_StartType start_type /* [in]  */,
+				      enum svcctl_ErrorControl error_control /* [in]  */,
 				      const char *binary_path /* [in] [charset(UTF16)] */,
 				      const char *LoadOrderGroupKey /* [in] [unique,charset(UTF16)] */,
 				      uint32_t *TagId /* [in,out] [unique] */,
@@ -701,7 +701,7 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,
 					   struct policy_handle *handle /* [in] [ref] */,
 					   uint32_t type /* [in]  */,
-					   uint32_t state /* [in]  */,
+					   enum svcctl_ServiceState state /* [in]  */,
 					   uint8_t *service /* [out] [ref,size_is(buf_size)] */,
 					   uint32_t buf_size /* [in] [range(0,262144)] */,
 					   uint32_t *bytes_needed /* [out] [ref,range(0,262144)] */,
@@ -1157,8 +1157,8 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
 					    uint32_t type /* [in]  */,
-					    uint32_t start /* [in]  */,
-					    uint32_t error /* [in]  */,
+					    enum svcctl_StartType start_type /* [in]  */,
+					    enum svcctl_ErrorControl error_control /* [in]  */,
 					    const char *binary_path /* [in] [unique,charset(UTF16)] */,
 					    const char *load_order_group /* [in] [unique,charset(UTF16)] */,
 					    uint32_t *tag_id /* [out] [ref] */,
@@ -1174,8 +1174,8 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli,
 	/* In parameters */
 	r.in.handle = handle;
 	r.in.type = type;
-	r.in.start = start;
-	r.in.error = error;
+	r.in.start_type = start_type;
+	r.in.error_control = error_control;
 	r.in.binary_path = binary_path;
 	r.in.load_order_group = load_order_group;
 	r.in.dependencies = dependencies;
@@ -1223,8 +1223,8 @@ NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli,
 				      const char *DisplayName /* [in] [unique,charset(UTF16)] */,
 				      uint32_t desired_access /* [in]  */,
 				      uint32_t type /* [in]  */,
-				      uint32_t start_type /* [in]  */,
-				      uint32_t error_control /* [in]  */,
+				      enum svcctl_StartType start_type /* [in]  */,
+				      enum svcctl_ErrorControl error_control /* [in]  */,
 				      const char *binary_path /* [in] [unique,charset(UTF16)] */,
 				      const char *LoadOrderGroupKey /* [in] [unique,charset(UTF16)] */,
 				      uint32_t *TagId /* [out] [unique] */,
@@ -1924,7 +1924,7 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
-					    uint32_t info_level /* [in]  */,
+					    enum svcctl_ConfigLevel info_level /* [in]  */,
 					    uint8_t *buffer /* [out]  */,
 					    uint32_t buf_size /* [in]  */,
 					    uint32_t *bytes_needed /* [out] [ref] */,
@@ -1975,7 +1975,7 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
-					    uint32_t info_level /* [in]  */,
+					    enum svcctl_ConfigLevel info_level /* [in]  */,
 					    uint8_t *buffer /* [out] [ref,size_is(buf_size)] */,
 					    uint32_t buf_size /* [in] [range(0,8192)] */,
 					    uint32_t *bytes_needed /* [out] [ref,range(0,8192)] */,
@@ -2026,7 +2026,7 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
-					    uint32_t info_level /* [in]  */,
+					    enum svcctl_StatusLevel info_level /* [in]  */,
 					    uint8_t *buffer /* [out] [ref,size_is(buf_size)] */,
 					    uint32_t buf_size /* [in] [range(0,8192)] */,
 					    uint32_t *bytes_needed /* [out] [ref,range(0,8192)] */,
diff --git a/librpc/gen_ndr/cli_svcctl.h b/librpc/gen_ndr/cli_svcctl.h
index fbd15b3..575256f 100644
--- a/librpc/gen_ndr/cli_svcctl.h
+++ b/librpc/gen_ndr/cli_svcctl.h
@@ -61,8 +61,8 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
 					    uint32_t type /* [in]  */,
-					    uint32_t start /* [in]  */,
-					    uint32_t error /* [in]  */,
+					    enum svcctl_StartType start_type /* [in]  */,
+					    enum svcctl_ErrorControl error_control /* [in]  */,
 					    const char *binary_path /* [in] [unique,charset(UTF16)] */,
 					    const char *load_order_group /* [in] [unique,charset(UTF16)] */,
 					    uint32_t *tag_id /* [out] [ref] */,
@@ -78,8 +78,8 @@ NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli,
 				      const char *DisplayName /* [in] [unique,charset(UTF16)] */,
 				      uint32_t desired_access /* [in]  */,
 				      uint32_t type /* [in]  */,
-				      uint32_t start_type /* [in]  */,
-				      uint32_t error_control /* [in]  */,
+				      enum svcctl_StartType start_type /* [in]  */,
+				      enum svcctl_ErrorControl error_control /* [in]  */,
 				      const char *binary_path /* [in] [charset(UTF16)] */,
 				      const char *LoadOrderGroupKey /* [in] [unique,charset(UTF16)] */,
 				      uint32_t *TagId /* [in,out] [unique] */,
@@ -103,7 +103,7 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,
 					   struct policy_handle *handle /* [in] [ref] */,
 					   uint32_t type /* [in]  */,
-					   uint32_t state /* [in]  */,
+					   enum svcctl_ServiceState state /* [in]  */,
 					   uint8_t *service /* [out] [ref,size_is(buf_size)] */,
 					   uint32_t buf_size /* [in] [range(0,262144)] */,
 					   uint32_t *bytes_needed /* [out] [ref,range(0,262144)] */,
@@ -169,8 +169,8 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
 					    uint32_t type /* [in]  */,
-					    uint32_t start /* [in]  */,
-					    uint32_t error /* [in]  */,
+					    enum svcctl_StartType start_type /* [in]  */,
+					    enum svcctl_ErrorControl error_control /* [in]  */,
 					    const char *binary_path /* [in] [unique,charset(UTF16)] */,
 					    const char *load_order_group /* [in] [unique,charset(UTF16)] */,
 					    uint32_t *tag_id /* [out] [ref] */,
@@ -186,8 +186,8 @@ NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli,
 				      const char *DisplayName /* [in] [unique,charset(UTF16)] */,
 				      uint32_t desired_access /* [in]  */,
 				      uint32_t type /* [in]  */,
-				      uint32_t start_type /* [in]  */,
-				      uint32_t error_control /* [in]  */,
+				      enum svcctl_StartType start_type /* [in]  */,
+				      enum svcctl_ErrorControl error_control /* [in]  */,
 				      const char *binary_path /* [in] [unique,charset(UTF16)] */,
 				      const char *LoadOrderGroupKey /* [in] [unique,charset(UTF16)] */,
 				      uint32_t *TagId /* [out] [unique] */,
@@ -283,7 +283,7 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
-					    uint32_t info_level /* [in]  */,
+					    enum svcctl_ConfigLevel info_level /* [in]  */,
 					    uint8_t *buffer /* [out]  */,
 					    uint32_t buf_size /* [in]  */,
 					    uint32_t *bytes_needed /* [out] [ref] */,
@@ -291,7 +291,7 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
-					    uint32_t info_level /* [in]  */,
+					    enum svcctl_ConfigLevel info_level /* [in]  */,
 					    uint8_t *buffer /* [out] [ref,size_is(buf_size)] */,
 					    uint32_t buf_size /* [in] [range(0,8192)] */,
 					    uint32_t *bytes_needed /* [out] [ref,range(0,8192)] */,
@@ -299,7 +299,7 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
 					    struct policy_handle *handle /* [in] [ref] */,
-					    uint32_t info_level /* [in]  */,
+					    enum svcctl_StatusLevel info_level /* [in]  */,
 					    uint8_t *buffer /* [out] [ref,size_is(buf_size)] */,
 					    uint32_t buf_size /* [in] [range(0,8192)] */,
 					    uint32_t *bytes_needed /* [out] [ref,range(0,8192)] */,
diff --git a/librpc/gen_ndr/ndr_svcctl.c b/librpc/gen_ndr/ndr_svcctl.c
index 590d493..54c49ad 100644
--- a/librpc/gen_ndr/ndr_svcctl.c
+++ b/librpc/gen_ndr/ndr_svcctl.c
@@ -119,6 +119,42 @@ _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name,
 	ndr->depth--;
 }
 
+_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
+{
+	ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
+	ndr->depth++;
+	ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
+	ndr_print_uint32(ndr, "process_id", r->process_id);
+	ndr_print_uint32(ndr, "service_flags", r->service_flags);
+	ndr->depth--;
+}
+
 static enum ndr_err_code ndr_push_ENUM_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUS *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
@@ -325,6 +361,87 @@ _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name,
 	ndr_print_enum(ndr, name, "ENUM", val, r);
 }
 
+static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
+		case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
+		case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
+		case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
+		case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
+		case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
+		case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
+		case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SVCCTL_STATE_ACTIVE: val = "SVCCTL_STATE_ACTIVE"; break;
+		case SVCCTL_STATE_INACTIVE: val = "SVCCTL_STATE_INACTIVE"; break;
+		case SVCCTL_STATE_ALL: val = "SVCCTL_STATE_ALL"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
 {
 	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
@@ -387,8 +504,8 @@ _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, i
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->start_type));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->error_control));
+		NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
+		NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
 		NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
 		NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
@@ -446,8 +563,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, i
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->start_type));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->error_control));
+		NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
+		NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
 		if (_ptr_executablepath) {
 			NDR_PULL_ALLOC(ndr, r->executablepath);
@@ -550,8 +667,8 @@ _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *
 	ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
 	ndr->depth++;
 	ndr_print_uint32(ndr, "service_type", r->service_type);
-	ndr_print_uint32(ndr, "start_type", r->start_type);
-	ndr_print_uint32(ndr, "error_control", r->error_control);
+	ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
+	ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
 	ndr_print_ptr(ndr, "executablepath", r->executablepath);
 	ndr->depth++;
 	if (r->executablepath) {
@@ -591,6 +708,394 @@ _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG
 	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
 }
 
+static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
+		case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
+			ndr->flags = _flags_save_string;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->description) {
+				NDR_CHECK(ndr_push_relative_ptr2(ndr, r->description));
+				NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
+			}
+			ndr->flags = _flags_save_string;
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
+{
+	uint32_t _ptr_description;
+	TALLOC_CTX *_mem_save_description_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
+			if (_ptr_description) {
+				NDR_PULL_ALLOC(ndr, r->description);
+				NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
+			} else {
+				r->description = NULL;
+			}
+			ndr->flags = _flags_save_string;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+			if (r->description) {
+				uint32_t _relative_save_offset;
+				_relative_save_offset = ndr->offset;
+				NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
+				_mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
+				NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
+				NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
+				ndr->offset = _relative_save_offset;
+			}
+			ndr->flags = _flags_save_string;
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
+{
+	ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
+	ndr->depth++;
+	ndr_print_ptr(ndr, "description", r->description);
+	ndr->depth++;
+	if (r->description) {
+		ndr_print_string(ndr, "description", r->description);
+	}
+	ndr->depth--;
+	ndr->depth--;
+}
+
+_PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
+{
+	return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
+}
+
+static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
+		case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
+		case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
+		case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list