[PATCH] better FSRVP error reporting
Jeremy Allison
jra at samba.org
Fri Mar 7 17:49:12 MST 2014
On Thu, Mar 06, 2014 at 09:20:34PM +0000, Noel Power wrote:
> Hi,
> These patch(s) output more user friendly error by replacing hard error
> codes with text.
LGTM. Pushed to autobuild. Only (very tiny) nit is we usually
use i++ instead of ++i.
Jeremy.
> >From bfae19ee63a0150f521bf25d68d5cacbef1545f0 Mon Sep 17 00:00:00 2001
> From: Noel Power <noel.power at suse.com>
> Date: Thu, 6 Mar 2014 11:57:45 +0000
> Subject: [PATCH 2/2] For FSRVP use textual error messages instead of hex error
> codes
>
> Signed-off-by: Noel Power <noel.power at suse.com>
> Reviewed-by: David Disseldorp <ddiss at samba.org>
> ---
> source3/rpcclient/cmd_fss.c | 52 +++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 50 insertions(+), 2 deletions(-)
>
> diff --git a/source3/rpcclient/cmd_fss.c b/source3/rpcclient/cmd_fss.c
> index af194e2..238bd79 100644
> --- a/source3/rpcclient/cmd_fss.c
> +++ b/source3/rpcclient/cmd_fss.c
> @@ -24,6 +24,40 @@
> #include "../librpc/gen_ndr/ndr_fsrvp.h"
> #include "../librpc/gen_ndr/ndr_fsrvp_c.h"
>
> +static const struct {
> + uint32_t error_code;
> + const char *error_str;
> +} fss_errors[] = {
> + {
> + FSRVP_E_BAD_STATE,
> + "A method call was invalid because of the state of the server."
> + },
> + {
> + FSRVP_E_SHADOW_COPY_SET_IN_PROGRESS,
> + "A call was made to either \'SetContext\' or \'StartShadowCopySet\' while the creation of another shadow copy set is in progress."
> + },
> + {
> + FSRVP_E_NOT_SUPPORTED,
> + "The file store which contains the share to be shadow copied is not supported by the server."
> + },
> + {
> + FSRVP_E_WAIT_TIMEOUT,
> + "The wait for a shadow copy commit or expose operation has timed out."
> + },
> + {
> + FSRVP_E_WAIT_FAILED,
> + "The wait for a shadow copy commit expose operation has failed."
> + },
> + {
> + FSRVP_E_OBJECT_NOT_FOUND,
> + "The specified object does not exist."
> + },
> + {
> + FSRVP_E_UNSUPPORTED_CONTEXT,
> + "The specified context value is invalid."
> + }
> +};
> +
> struct fss_context_map {
> uint32_t ctx_val;
> const char *ctx_str;
> @@ -55,6 +89,20 @@ struct fss_context_map ctx_map[] = {
> { 0, NULL, NULL },
> };
>
> +static const char *get_error_str(uint32_t code)
> +{
> + static const char *default_err = "Unknown Error";
> + const char *result = default_err;
> + int i;
> + for (i = 0; i < ARRAY_SIZE(fss_errors); ++i) {
> + if (code == fss_errors[i].error_code) {
> + result = fss_errors[i].error_str;
> + break;
> + }
> + }
> + return result;
> +};
> +
> static bool map_fss_ctx_str(const char *ctx_str,
> uint32_t *ctx_val)
> {
> @@ -100,8 +148,8 @@ static NTSTATUS cmd_fss_is_path_sup(struct rpc_pipe_client *cli,
> r.in.ShareName));
> return NT_STATUS_UNSUCCESSFUL;
> } else if (r.out.result) {
> - DEBUG(0, ("failed IsPathSupported response: 0x%x\n",
> - r.out.result));
> + DEBUG(0, ("failed IsPathSupported response: 0x%x - \"%s\"\n",
> + r.out.result, get_error_str(r.out.result)));
> return NT_STATUS_UNSUCCESSFUL;
> }
> printf("UNC %s %s shadow copy requests\n", r.in.ShareName,
> --
> 1.8.1.4
>
> >From af91dd05278f7471bd9b53c918b311de3bad9b2c Mon Sep 17 00:00:00 2001
> From: Noel Power <noel.power at suse.com>
> Date: Thu, 6 Mar 2014 14:02:26 +0000
> Subject: [PATCH 1/2] Add missing FSRVP_E_UNSUPPORTED_CONTEXT constant
>
> Signed-off-by: Noel Power <noel.power at suse.com>
> Reviewed-by: David Disseldorp <ddiss at samba.org>
> ---
> librpc/idl/fsrvp.idl | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/librpc/idl/fsrvp.idl b/librpc/idl/fsrvp.idl
> index d61545b..3a11b87 100644
> --- a/librpc/idl/fsrvp.idl
> +++ b/librpc/idl/fsrvp.idl
> @@ -20,6 +20,7 @@ import "misc.idl";
> const uint32 FSRVP_E_WAIT_FAILED = 0xFFFFFFFF;
> const uint32 FSRVP_E_OBJECT_ALREADY_EXISTS = 0x8004230D;
> const uint32 FSRVP_E_OBJECT_NOT_FOUND = 0x80042308;
> + const uint32 FSRVP_E_UNSUPPORTED_CONTEXT = 0x8004231B;
> const uint32 FSRVP_E_BAD_ID = 0x80042302; /* wire, not documented */
>
> /* TODO move these to generic herror defines or COM in orpc.idl */
> --
> 1.8.1.4
>
More information about the samba-technical
mailing list