diff options
-rw-r--r-- | librpc/gen_ndr/cli_svcctl.c | 26 | ||||
-rw-r--r-- | librpc/gen_ndr/cli_svcctl.h | 18 | ||||
-rw-r--r-- | librpc/gen_ndr/ndr_svcctl.c | 522 | ||||
-rw-r--r-- | librpc/gen_ndr/ndr_svcctl.h | 16 | ||||
-rw-r--r-- | librpc/gen_ndr/svcctl.h | 113 |
5 files changed, 629 insertions, 66 deletions
diff --git a/librpc/gen_ndr/cli_svcctl.c b/librpc/gen_ndr/cli_svcctl.c index 175a4fe5c5..28318b31b1 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] */, diff --git a/librpc/gen_ndr/cli_svcctl.h b/librpc/gen_ndr/cli_svcctl.h index 2dcb7447ea..575256f62a 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] */, diff --git a/librpc/gen_ndr/ndr_svcctl.c b/librpc/gen_ndr/ndr_svcctl.c index afbb4fe39d..54c49adef4 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) { @@ -616,6 +733,345 @@ _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *na 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)); + NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r) +{ + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay)); + } + if (ndr_flags & NDR_BUFFERS) { + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r) +{ + ndr_print_struct(ndr, name, "SC_ACTION"); + ndr->depth++; + ndr_print_SC_ACTION_TYPE(ndr, "type", r->type); + ndr_print_uint32(ndr, "delay", r->delay); + ndr->depth--; +} + +_PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r) +{ + uint32_t cntr_actions_1; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 4)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period)); + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg)); + ndr->flags = _flags_save_string; + } + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command)); + ndr->flags = _flags_save_string; + } + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions)); + NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions)); + } + if (ndr_flags & NDR_BUFFERS) { + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + if (r->rebootmsg) { + NDR_CHECK(ndr_push_relative_ptr2(ndr, r->rebootmsg)); + NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg)); + } + ndr->flags = _flags_save_string; + } + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + if (r->command) { + NDR_CHECK(ndr_push_relative_ptr2(ndr, r->command)); + NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command)); + } + ndr->flags = _flags_save_string; + } + if (r->actions) { + NDR_CHECK(ndr_push_relative_ptr2(ndr, r->actions)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions)); + for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) { + NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1])); + } + } + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r) +{ + uint32_t _ptr_rebootmsg; + TALLOC_CTX *_mem_save_rebootmsg_0; + uint32_t _ptr_command; + TALLOC_CTX *_mem_save_command_0; + uint32_t _ptr_actions; + uint32_t cntr_actions_1; + TALLOC_CTX *_mem_save_actions_0; + TALLOC_CTX *_mem_save_actions_1; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period)); + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg)); + if (_ptr_rebootmsg) { + NDR_PULL_ALLOC(ndr, r->rebootmsg); + NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg)); + } else { + r->rebootmsg = NULL; + } + ndr->flags = _flags_save_string; + } + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command)); + if (_ptr_command) { + NDR_PULL_ALLOC(ndr, r->command); + NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command)); + } else { + r->command = NULL; + } + ndr->flags = _flags_save_string; + } + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions)); + if (r->num_actions < 0 || r->num_actions > 1024) { + return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); + } + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions)); + if (_ptr_actions) { + NDR_PULL_ALLOC(ndr, r->actions); + NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions)); + } else { + r->actions = NULL; + } + } + if (ndr_flags & NDR_BUFFERS) { + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + if (r->rebootmsg) { + uint32_t _relative_save_offset; + _relative_save_offset = ndr->offset; + NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg)); + _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0); + NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0); + ndr->offset = _relative_save_offset; + } + ndr->flags = _flags_save_string; + } + { + uint32_t _flags_save_string = ndr->flags; + ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); + if (r->command) { + uint32_t _relative_save_offset; + _relative_save_offset = ndr->offset; + NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command)); + _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->command, 0); + NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0); + ndr->offset = _relative_save_offset; + } + ndr->flags = _flags_save_string; + } + if (r->actions) { + uint32_t _relative_save_offset; + _relative_save_offset = ndr->offset; + NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions)); + _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0); + NDR_CHECK(ndr_pull_array_size(ndr, &r->actions)); + NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions)); + _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0); + for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) { + NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1])); + } + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0); + ndr->offset = _relative_save_offset; + } + if (r->actions) { + NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions)); + } + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r) +{ + uint32_t cntr_actions_1; + ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS"); + ndr->depth++; + ndr_print_uint32(ndr, "reset_period", r->reset_period); + ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg); + ndr->depth++; + if (r->rebootmsg) { + ndr_print_string(ndr, "rebootmsg", r->rebootmsg); + } + ndr->depth--; + ndr_print_ptr(ndr, "command", r->command); + ndr->depth++; + if (r->command) { + ndr_print_string(ndr, "command", r->command); + } + ndr->depth--; + ndr_print_uint32(ndr, "num_actions", r->num_actions); + ndr_print_ptr(ndr, "actions", r->actions); + ndr->depth++; + if (r->actions) { + ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions); + ndr->depth++; + for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) { + char *idx_1=NULL; + if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) { + ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]); + free(idx_1); + } + } + ndr->depth--; + } + ndr->depth--; + ndr->depth--; +} + +_PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags) +{ + return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic); +} + static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); @@ -1427,8 +1883,8 @@ static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *n } NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error)); + NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); + NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path)); if (r->in.binary_path) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); @@ -1509,8 +1965,8 @@ static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *n NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error)); + NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); + NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path)); if (_ptr_binary_path) { NDR_PULL_ALLOC(ndr, r->in.binary_path); @@ -1650,8 +2106,8 @@ _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const ndr_print_policy_handle(ndr, "handle", r->in.handle); ndr->depth--; ndr_print_uint32(ndr, "type", r->in.type); - ndr_print_uint32(ndr, "start", r->in.start); - ndr_print_uint32(ndr, "error", r->in.error); + ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); + ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); ndr_print_ptr(ndr, "binary_path", r->in.binary_path); ndr->depth++; if (r->in.binary_path) { @@ -1723,8 +2179,8 @@ static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, in } NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control)); + NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); + NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); @@ -1827,8 +2283,8 @@ static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, in } NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control)); + NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); + NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path)); NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path)); if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) { @@ -1971,8 +2427,8 @@ _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char ndr->depth--; ndr_print_uint32(ndr, "desired_access", r->in.desired_access); ndr_print_uint32(ndr, "type", r->in.type); - ndr_print_uint32(ndr, "start_type", r->in.start_type); - ndr_print_uint32(ndr, "error_control", r->in.error_control); + ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); + ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); ndr_print_string(ndr, "binary_path", r->in.binary_path); ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey); ndr->depth++; @@ -2164,7 +2620,7 @@ static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *nd } NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.state)); + NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle)); if (r->in.resume_handle) { @@ -2212,7 +2668,7 @@ static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *nd NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state)); + NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size)); if (r->in.buf_size < 0 || r->in.buf_size > 262144) { return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range"); @@ -2297,7 +2753,7 @@ _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const ndr_print_policy_handle(ndr, "handle", r->in.handle); ndr->depth--; ndr_print_uint32(ndr, "type", r->in.type); - ndr_print_uint32(ndr, "state", r->in.state); + ndr_print_svcctl_ServiceState(ndr, "state", r->in.state); ndr_print_uint32(ndr, "buf_size", r->in.buf_size); ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); ndr->depth++; @@ -3297,8 +3753,8 @@ static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *n } NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error)); + NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); + NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path)); if (r->in.binary_path) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); @@ -3379,8 +3835,8 @@ static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *n NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error)); + NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); + NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path)); if (_ptr_binary_path) { NDR_PULL_ALLOC(ndr, r->in.binary_path); @@ -3520,8 +3976,8 @@ _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const ndr_print_policy_handle(ndr, "handle", r->in.handle); ndr->depth--; ndr_print_uint32(ndr, "type", r->in.type); - ndr_print_uint32(ndr, "start", r->in.start); - ndr_print_uint32(ndr, "error", r->in.error); + ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); + ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); ndr_print_ptr(ndr, "binary_path", r->in.binary_path); ndr->depth++; if (r->in.binary_path) { @@ -3596,8 +4052,8 @@ static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, in } NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.start_type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.error_control)); + NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type)); + NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path)); if (r->in.binary_path) { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16))); @@ -3711,8 +4167,8 @@ static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, in } NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.start_type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.error_control)); + NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type)); + NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control)); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path)); if (_ptr_binary_path) { NDR_PULL_ALLOC(ndr, r->in.binary_path); @@ -3850,8 +4306,8 @@ _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char ndr->depth--; ndr_print_uint32(ndr, "desired_access", r->in.desired_access); ndr_print_uint32(ndr, "type", r->in.type); - ndr_print_uint32(ndr, "start_type", r->in.start_type); - ndr_print_uint32(ndr, "error_control", r->in.error_control); + ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type); + ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control); ndr_print_ptr(ndr, "binary_path", r->in.binary_path); ndr->depth++; if (r->in.binary_path) { diff --git a/librpc/gen_ndr/ndr_svcctl.h b/librpc/gen_ndr/ndr_svcctl.h index 3108cbd6e3..4b47161973 100644 --- a/librpc/gen_ndr/ndr_svcctl.h +++ b/librpc/gen_ndr/ndr_svcctl.h @@ -102,11 +102,17 @@ extern const struct ndr_interface_table ndr_table_svcctl; #define NDR_SVCCTL_CALL_COUNT (44) void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r); void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r); +enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r); +enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r); +void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r); void ndr_print_ENUM_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUS *r); enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r); enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r); void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r); void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r); +void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r); +void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r); +void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r); void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r); void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r); enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r); @@ -114,6 +120,16 @@ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_fl void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r); size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags); void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r); +enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r); +enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r); +void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r); +size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags); +void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r); +void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r); +enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r); +enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r); +void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r); +size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags); void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r); void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r); void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r); diff --git a/librpc/gen_ndr/svcctl.h b/librpc/gen_ndr/svcctl.h index 66be271383..c36f578101 100644 --- a/librpc/gen_ndr/svcctl.h +++ b/librpc/gen_ndr/svcctl.h @@ -43,6 +43,12 @@ struct SERVICE_STATUS { uint32_t wait_hint; }; +struct SERVICE_STATUS_PROCESS { + struct SERVICE_STATUS status; + uint32_t process_id; + uint32_t service_flags; +}/* [public] */; + struct ENUM_SERVICE_STATUS { const char * service_name;/* [relative,flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */ const char * display_name;/* [relative,flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */ @@ -97,6 +103,57 @@ enum SERVICE_CONTROL #endif ; +enum svcctl_ErrorControl +#ifndef USE_UINT_ENUMS + { + SVCCTL_SVC_ERROR_IGNORE=0x00000000, + SVCCTL_SVC_ERROR_NORMAL=0x00000001, + SVCCTL_SVC_ERROR_CRITICAL=0x00000002, + SVCCTL_SVC_ERROR_SEVERE=0x00000003 +} +#else + { __donnot_use_enum_svcctl_ErrorControl=0x7FFFFFFF} +#define SVCCTL_SVC_ERROR_IGNORE ( 0x00000000 ) +#define SVCCTL_SVC_ERROR_NORMAL ( 0x00000001 ) +#define SVCCTL_SVC_ERROR_CRITICAL ( 0x00000002 ) +#define SVCCTL_SVC_ERROR_SEVERE ( 0x00000003 ) +#endif +; + +enum svcctl_StartType +#ifndef USE_UINT_ENUMS + { + SVCCTL_BOOT_START=0x00000000, + SVCCTL_SYSTEM_START=0x00000001, + SVCCTL_AUTO_START=0x00000002, + SVCCTL_DEMAND_START=0x00000003, + SVCCTL_DISABLED=0x00000004 +} +#else + { __donnot_use_enum_svcctl_StartType=0x7FFFFFFF} +#define SVCCTL_BOOT_START ( 0x00000000 ) +#define SVCCTL_SYSTEM_START ( 0x00000001 ) +#define SVCCTL_AUTO_START ( 0x00000002 ) +#define SVCCTL_DEMAND_START ( 0x00000003 ) +#define SVCCTL_DISABLED ( 0x00000004 ) +#endif +; + +enum svcctl_ServiceState +#ifndef USE_UINT_ENUMS + { + SVCCTL_STATE_ACTIVE=0x00000001, + SVCCTL_STATE_INACTIVE=0x00000002, + SVCCTL_STATE_ALL=(SVCCTL_STATE_ACTIVE|SVCCTL_STATE_INACTIVE) +} +#else + { __donnot_use_enum_svcctl_ServiceState=0x7FFFFFFF} +#define SVCCTL_STATE_ACTIVE ( 0x00000001 ) +#define SVCCTL_STATE_INACTIVE ( 0x00000002 ) +#define SVCCTL_STATE_ALL ( (SVCCTL_STATE_ACTIVE|SVCCTL_STATE_INACTIVE) ) +#endif +; + /* bitmap svcctl_MgrAccessMask */ #define SC_RIGHT_MGR_CONNECT ( 0x0001 ) #define SC_RIGHT_MGR_CREATE_SERVICE ( 0x0002 ) @@ -118,8 +175,8 @@ enum SERVICE_CONTROL struct QUERY_SERVICE_CONFIG { uint32_t service_type; - uint32_t start_type; - uint32_t error_control; + enum svcctl_StartType start_type; + enum svcctl_ErrorControl error_control; const char *executablepath;/* [unique,range(0,8192),charset(UTF16)] */ const char *loadordergroup;/* [unique,range(0,8192),charset(UTF16)] */ uint32_t tag_id; @@ -141,6 +198,40 @@ enum svcctl_ConfigLevel #endif ; +struct SERVICE_DESCRIPTION { + const char * description;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */ +}/* [gensize,public] */; + +enum SC_ACTION_TYPE +#ifndef USE_UINT_ENUMS + { + SC_ACTION_NONE=0, + SC_ACTION_RESTART=1, + SC_ACTION_REBOOT=2, + SC_ACTION_RUN_COMMAND=3 +} +#else + { __donnot_use_enum_SC_ACTION_TYPE=0x7FFFFFFF} +#define SC_ACTION_NONE ( 0 ) +#define SC_ACTION_RESTART ( 1 ) +#define SC_ACTION_REBOOT ( 2 ) +#define SC_ACTION_RUN_COMMAND ( 3 ) +#endif +; + +struct SC_ACTION { + enum SC_ACTION_TYPE type; + uint32_t delay; +}; + +struct SERVICE_FAILURE_ACTIONS { + uint32_t reset_period; + const char * rebootmsg;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */ + const char * command;/* [relative,flag(LIBNDR_FLAG_STR_NULLTERM)] */ + uint32_t num_actions;/* [range(0,1024)] */ + struct SC_ACTION *actions;/* [relative,size_is(num_actions)] */ +}/* [gensize,public] */; + enum svcctl_StatusLevel #ifndef USE_UINT_ENUMS { @@ -297,8 +388,8 @@ struct svcctl_ChangeServiceConfigW { struct { struct policy_handle *handle;/* [ref] */ uint32_t type; - uint32_t start; - uint32_t error; + enum svcctl_StartType start_type; + enum svcctl_ErrorControl error_control; const char *binary_path;/* [unique,charset(UTF16)] */ const char *load_order_group;/* [unique,charset(UTF16)] */ const char *dependencies;/* [unique,charset(UTF16)] */ @@ -322,8 +413,8 @@ struct svcctl_CreateServiceW { const char *DisplayName;/* [unique,charset(UTF16)] */ uint32_t desired_access; uint32_t type; - uint32_t start_type; - uint32_t error_control; + enum svcctl_StartType start_type; + enum svcctl_ErrorControl error_control; const char *binary_path;/* [charset(UTF16)] */ const char *LoadOrderGroupKey;/* [unique,charset(UTF16)] */ uint8_t *dependencies;/* [unique,size_is(dependencies_size)] */ @@ -364,7 +455,7 @@ struct svcctl_EnumServicesStatusW { struct { struct policy_handle *handle;/* [ref] */ uint32_t type; - uint32_t state; + enum svcctl_ServiceState state; uint32_t buf_size;/* [range(0,262144)] */ uint32_t *resume_handle;/* [unique] */ } in; @@ -505,8 +596,8 @@ struct svcctl_ChangeServiceConfigA { struct { struct policy_handle *handle;/* [ref] */ uint32_t type; - uint32_t start; - uint32_t error; + enum svcctl_StartType start_type; + enum svcctl_ErrorControl error_control; const char *binary_path;/* [unique,charset(UTF16)] */ const char *load_order_group;/* [unique,charset(UTF16)] */ const char *dependencies;/* [unique,charset(UTF16)] */ @@ -530,8 +621,8 @@ struct svcctl_CreateServiceA { const char *DisplayName;/* [unique,charset(UTF16)] */ uint32_t desired_access; uint32_t type; - uint32_t start_type; - uint32_t error_control; + enum svcctl_StartType start_type; + enum svcctl_ErrorControl error_control; const char *binary_path;/* [unique,charset(UTF16)] */ const char *LoadOrderGroupKey;/* [unique,charset(UTF16)] */ const char *dependencies;/* [unique,charset(UTF16)] */ |