[SCM] Samba Shared Repository - branch v3-2-test updated -
initial-v3-2-test-2362-g8971afa
Günther Deschner
gd at samba.org
Sun Feb 17 22:46:22 GMT 2008
The branch, v3-2-test has been updated
via 8971afaf744e5124d4b82cad76e368ccd05be394 (commit)
via 7973a103aa91497807cb0e3bf19dba172ae613b8 (commit)
via a2e6727ff7d75b50a33c4186f48477ca35b3fbb9 (commit)
via 6f396608bda65c98dfbb13f6e8661a8246c649a2 (commit)
via 3ebece24eb7c1898963fd95b4ab4d66d3c5d1d49 (commit)
via 58970cc6a8761c30bc4b772b28bb25a112cb684f (commit)
from 5300ff01b9098ccd78cb38b4d6abc85b2d340a55 (commit)
http://gitweb.samba.org/?samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 8971afaf744e5124d4b82cad76e368ccd05be394
Author: Günther Deschner <gd at samba.org>
Date: Sun Feb 17 23:42:52 2008 +0100
Remove unused marshalling for NTSVCS_VALIDATE_DEVICE_INSTANCE.
Guenther
commit 7973a103aa91497807cb0e3bf19dba172ae613b8
Author: Günther Deschner <gd at samba.org>
Date: Sun Feb 17 23:42:20 2008 +0100
Use pidl for _PNP_ValidateDeviceInstance().
Guenther
commit a2e6727ff7d75b50a33c4186f48477ca35b3fbb9
Author: Günther Deschner <gd at samba.org>
Date: Sun Feb 17 23:41:31 2008 +0100
Add ValidateDeviceInstance command to rpcclient.
Guenther
commit 6f396608bda65c98dfbb13f6e8661a8246c649a2
Author: Günther Deschner <gd at samba.org>
Date: Sun Feb 17 23:44:50 2008 +0100
Re-run make idl.
Guenther
commit 3ebece24eb7c1898963fd95b4ab4d66d3c5d1d49
Author: Günther Deschner <gd at samba.org>
Date: Sun Feb 17 23:40:14 2008 +0100
Fill in IDL for PNP_ValidateDeviceInstance (based on samba3).
Guenther
commit 58970cc6a8761c30bc4b772b28bb25a112cb684f
Author: Günther Deschner <gd at samba.org>
Date: Sun Feb 17 23:37:45 2008 +0100
Remove unused marshalling for NTSVCS_GET_VERSION.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/include/rpc_ntsvcs.h | 24 -----------
source/librpc/gen_ndr/cli_ntsvcs.c | 4 ++
source/librpc/gen_ndr/cli_ntsvcs.h | 2 +
source/librpc/gen_ndr/ndr_ntsvcs.c | 21 +++++++++
source/librpc/gen_ndr/ntsvcs.h | 5 ++
source/librpc/idl/ntsvcs.idl | 5 ++-
source/rpc_parse/parse_ntsvcs.c | 80 ------------------------------------
source/rpc_server/srv_ntsvcs.c | 18 +--------
source/rpc_server/srv_ntsvcs_nt.c | 13 +-----
source/rpcclient/cmd_ntsvcs.c | 33 +++++++++++++++
10 files changed, 72 insertions(+), 133 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/include/rpc_ntsvcs.h b/source/include/rpc_ntsvcs.h
index 045d9b4..12224fe 100644
--- a/source/include/rpc_ntsvcs.h
+++ b/source/include/rpc_ntsvcs.h
@@ -36,19 +36,6 @@
/**************************/
typedef struct {
- /* nothing in the request */
- uint32 dummy;
-} NTSVCS_Q_GET_VERSION;
-
-typedef struct {
- uint32 version;
- WERROR status;
-} NTSVCS_R_GET_VERSION;
-
-
-/**************************/
-
-typedef struct {
UNISTR2 *devicename;
uint32 flags;
} NTSVCS_Q_GET_DEVICE_LIST_SIZE;
@@ -75,17 +62,6 @@ typedef struct {
/**************************/
-typedef struct {
- UNISTR2 devicepath;
- uint32 flags;
-} NTSVCS_Q_VALIDATE_DEVICE_INSTANCE;
-
-typedef struct {
- WERROR status;
-} NTSVCS_R_VALIDATE_DEVICE_INSTANCE;
-
-/**************************/
-
#define DEV_REGPROP_DESC 1
typedef struct {
diff --git a/source/librpc/gen_ndr/cli_ntsvcs.c b/source/librpc/gen_ndr/cli_ntsvcs.c
index da43d45..c21910c 100644
--- a/source/librpc/gen_ndr/cli_ntsvcs.c
+++ b/source/librpc/gen_ndr/cli_ntsvcs.c
@@ -262,12 +262,16 @@ NTSTATUS rpccli_PNP_ReportLogOn(struct rpc_pipe_client *cli,
NTSTATUS rpccli_PNP_ValidateDeviceInstance(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
+ const char *devicepath,
+ uint32_t flags,
WERROR *werror)
{
struct PNP_ValidateDeviceInstance r;
NTSTATUS status;
/* In parameters */
+ r.in.devicepath = devicepath;
+ r.in.flags = flags;
if (DEBUGLEVEL >= 10) {
NDR_PRINT_IN_DEBUG(PNP_ValidateDeviceInstance, &r);
diff --git a/source/librpc/gen_ndr/cli_ntsvcs.h b/source/librpc/gen_ndr/cli_ntsvcs.h
index 852cc81..666ea9b 100644
--- a/source/librpc/gen_ndr/cli_ntsvcs.h
+++ b/source/librpc/gen_ndr/cli_ntsvcs.h
@@ -22,6 +22,8 @@ NTSTATUS rpccli_PNP_ReportLogOn(struct rpc_pipe_client *cli,
WERROR *werror);
NTSTATUS rpccli_PNP_ValidateDeviceInstance(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
+ const char *devicepath,
+ uint32_t flags,
WERROR *werror);
NTSTATUS rpccli_PNP_GetRootDeviceInstance(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
diff --git a/source/librpc/gen_ndr/ndr_ntsvcs.c b/source/librpc/gen_ndr/ndr_ntsvcs.c
index 73dd4d3..be55319 100644
--- a/source/librpc/gen_ndr/ndr_ntsvcs.c
+++ b/source/librpc/gen_ndr/ndr_ntsvcs.c
@@ -272,6 +272,14 @@ _PUBLIC_ void ndr_print_PNP_ReportLogOn(struct ndr_print *ndr, const char *name,
static enum ndr_err_code ndr_push_PNP_ValidateDeviceInstance(struct ndr_push *ndr, int flags, const struct PNP_ValidateDeviceInstance *r)
{
if (flags & NDR_IN) {
+ if (r->in.devicepath == NULL) {
+ return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+ }
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.devicepath, CH_UTF16)));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.devicepath, CH_UTF16)));
+ NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.devicepath, ndr_charset_length(r->in.devicepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
}
if (flags & NDR_OUT) {
NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
@@ -282,6 +290,14 @@ static enum ndr_err_code ndr_push_PNP_ValidateDeviceInstance(struct ndr_push *nd
static enum ndr_err_code ndr_pull_PNP_ValidateDeviceInstance(struct ndr_pull *ndr, int flags, struct PNP_ValidateDeviceInstance *r)
{
if (flags & NDR_IN) {
+ NDR_CHECK(ndr_pull_array_size(ndr, &r->in.devicepath));
+ NDR_CHECK(ndr_pull_array_length(ndr, &r->in.devicepath));
+ if (ndr_get_array_length(ndr, &r->in.devicepath) > ndr_get_array_size(ndr, &r->in.devicepath)) {
+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.devicepath), ndr_get_array_length(ndr, &r->in.devicepath));
+ }
+ NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.devicepath), sizeof(uint16_t)));
+ NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.devicepath, ndr_get_array_length(ndr, &r->in.devicepath), sizeof(uint16_t), CH_UTF16));
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
}
if (flags & NDR_OUT) {
NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
@@ -299,6 +315,11 @@ _PUBLIC_ void ndr_print_PNP_ValidateDeviceInstance(struct ndr_print *ndr, const
if (flags & NDR_IN) {
ndr_print_struct(ndr, "in", "PNP_ValidateDeviceInstance");
ndr->depth++;
+ ndr_print_ptr(ndr, "devicepath", r->in.devicepath);
+ ndr->depth++;
+ ndr_print_string(ndr, "devicepath", r->in.devicepath);
+ ndr->depth--;
+ ndr_print_uint32(ndr, "flags", r->in.flags);
ndr->depth--;
}
if (flags & NDR_OUT) {
diff --git a/source/librpc/gen_ndr/ntsvcs.h b/source/librpc/gen_ndr/ntsvcs.h
index 571b746..477d6ad 100644
--- a/source/librpc/gen_ndr/ntsvcs.h
+++ b/source/librpc/gen_ndr/ntsvcs.h
@@ -57,6 +57,11 @@ struct PNP_ReportLogOn {
struct PNP_ValidateDeviceInstance {
struct {
+ const char *devicepath;/* [ref,charset(UTF16)] */
+ uint32_t flags;
+ } in;
+
+ struct {
WERROR result;
} out;
diff --git a/source/librpc/idl/ntsvcs.idl b/source/librpc/idl/ntsvcs.idl
index 3c38bc3..a9c41cc 100644
--- a/source/librpc/idl/ntsvcs.idl
+++ b/source/librpc/idl/ntsvcs.idl
@@ -44,7 +44,10 @@ interface ntsvcs
/******************/
/* Function: 0x06 */
- WERROR PNP_ValidateDeviceInstance();
+ WERROR PNP_ValidateDeviceInstance(
+ [in,ref] [string,charset(UTF16)] uint16 *devicepath,
+ [in] uint32 flags
+ );
/******************/
/* Function: 0x07 */
diff --git a/source/rpc_parse/parse_ntsvcs.c b/source/rpc_parse/parse_ntsvcs.c
index 5758517..86e8d9d 100644
--- a/source/rpc_parse/parse_ntsvcs.c
+++ b/source/rpc_parse/parse_ntsvcs.c
@@ -25,43 +25,6 @@
/*******************************************************************
********************************************************************/
-bool ntsvcs_io_q_get_version(const char *desc, NTSVCS_Q_GET_VERSION *q_u, prs_struct *ps, int depth)
-{
- if (q_u == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "ntsvcs_io_q_get_version");
- depth++;
-
- /* there is nothing to parse in this PDU */
-
- return True;
-
-}
-
-/*******************************************************************
-********************************************************************/
-
-bool ntsvcs_io_r_get_version(const char *desc, NTSVCS_R_GET_VERSION *r_u, prs_struct *ps, int depth)
-{
- if ( !r_u )
- return False;
-
- prs_debug(ps, depth, desc, "ntsvcs_io_r_get_version");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint32("version", ps, depth, &r_u->version))
- return False;
-
- if(!prs_werror("status", ps, depth, &r_u->status))
- return False;
-
- return True;
-}
-
/*******************************************************************
********************************************************************/
@@ -171,49 +134,6 @@ bool ntsvcs_io_r_get_device_list(const char *desc, NTSVCS_R_GET_DEVICE_LIST *r_u
/*******************************************************************
********************************************************************/
-bool ntsvcs_io_q_validate_device_instance(const char *desc, NTSVCS_Q_VALIDATE_DEVICE_INSTANCE *q_u, prs_struct *ps, int depth)
-{
- if (q_u == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "ntsvcs_io_q_validate_device_instance");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if ( !prs_io_unistr2("devicepath", ps, depth, &q_u->devicepath) )
- return False;
- if( !prs_align(ps) )
- return False;
-
- if ( !prs_uint32("flags", ps, depth, &q_u->flags) )
- return False;
-
- return True;
-
-}
-
-/*******************************************************************
-********************************************************************/
-
-bool ntsvcs_io_r_validate_device_instance(const char *desc, NTSVCS_R_VALIDATE_DEVICE_INSTANCE *r_u, prs_struct *ps, int depth)
-{
- if ( !r_u )
- return False;
-
- prs_debug(ps, depth, desc, "ntsvcs_io_r_validate_device_instance");
- depth++;
-
- if(!prs_werror("status", ps, depth, &r_u->status))
- return False;
-
- return True;
-}
-
-/*******************************************************************
-********************************************************************/
-
bool ntsvcs_io_q_get_device_reg_property(const char *desc, NTSVCS_Q_GET_DEVICE_REG_PROPERTY *q_u, prs_struct *ps, int depth)
{
if (q_u == NULL)
diff --git a/source/rpc_server/srv_ntsvcs.c b/source/rpc_server/srv_ntsvcs.c
index ec65919..cd22489 100644
--- a/source/rpc_server/srv_ntsvcs.c
+++ b/source/rpc_server/srv_ntsvcs.c
@@ -104,23 +104,7 @@ static bool api_ntsvcs_get_device_list(pipes_struct *p)
static bool api_ntsvcs_validate_device_instance(pipes_struct *p)
{
- NTSVCS_Q_VALIDATE_DEVICE_INSTANCE q_u;
- NTSVCS_R_VALIDATE_DEVICE_INSTANCE r_u;
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- if(!ntsvcs_io_q_validate_device_instance("", &q_u, data, 0))
- return False;
-
- r_u.status = _ntsvcs_validate_device_instance(p, &q_u, &r_u);
-
- if(!ntsvcs_io_r_validate_device_instance("", &r_u, rdata, 0))
- return False;
-
- return True;
+ return proxy_ntsvcs_call(p, NDR_PNP_VALIDATEDEVICEINSTANCE);
}
/*******************************************************************
diff --git a/source/rpc_server/srv_ntsvcs_nt.c b/source/rpc_server/srv_ntsvcs_nt.c
index 0cf2e5c..b6e0126 100644
--- a/source/rpc_server/srv_ntsvcs_nt.c
+++ b/source/rpc_server/srv_ntsvcs_nt.c
@@ -144,7 +144,8 @@ WERROR _ntsvcs_get_device_reg_property( pipes_struct *p, NTSVCS_Q_GET_DEVICE_REG
/********************************************************************
********************************************************************/
-WERROR _ntsvcs_validate_device_instance( pipes_struct *p, NTSVCS_Q_VALIDATE_DEVICE_INSTANCE *q_u, NTSVCS_R_VALIDATE_DEVICE_INSTANCE *r_u )
+WERROR _PNP_ValidateDeviceInstance(pipes_struct *p,
+ struct PNP_ValidateDeviceInstance *r)
{
/* whatever dude */
return WERR_OK;
@@ -228,16 +229,6 @@ WERROR _PNP_ReportLogOn(pipes_struct *p,
/****************************************************************
****************************************************************/
-WERROR _PNP_ValidateDeviceInstance(pipes_struct *p,
- struct PNP_ValidateDeviceInstance *r)
-{
- p->rng_fault_state = true;
- return WERR_NOT_SUPPORTED;
-}
-
-/****************************************************************
-****************************************************************/
-
WERROR _PNP_GetRootDeviceInstance(pipes_struct *p,
struct PNP_GetRootDeviceInstance *r)
{
diff --git a/source/rpcclient/cmd_ntsvcs.c b/source/rpcclient/cmd_ntsvcs.c
index a595948..f764806 100644
--- a/source/rpcclient/cmd_ntsvcs.c
+++ b/source/rpcclient/cmd_ntsvcs.c
@@ -43,9 +43,42 @@ static WERROR cmd_ntsvcs_get_version(struct rpc_pipe_client *cli,
return werr;
}
+static WERROR cmd_ntsvcs_validate_dev_inst(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ int argc,
+ const char **argv)
+{
+ NTSTATUS status;
+ WERROR werr;
+ const char *devicepath = NULL;
+ uint32_t flags = 0;
+
+ if (argc < 2 || argc > 3) {
+ printf("usage: %s [devicepath] <flags>\n", argv[0]);
+ return WERR_OK;
+ }
+
+ devicepath = argv[1];
+
+ if (argc >= 3) {
+ flags = atoi(argv[2]);
+ }
+
+ status = rpccli_PNP_ValidateDeviceInstance(cli, mem_ctx,
+ devicepath,
+ flags,
+ &werr);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
+
+ return werr;
+}
+
struct cmd_set ntsvcs_commands[] = {
{ "NTSVCS" },
{ "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_version, PI_NTSVCS, NULL, "Query NTSVCS version", "" },
+ { "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_validate_dev_inst, PI_NTSVCS, NULL, "Query NTSVCS device instance", "" },
{ NULL }
};
--
Samba Shared Repository
More information about the samba-cvs
mailing list