aboutsummaryrefslogtreecommitdiffstats
path: root/packet-dcerpc-wkssvc.c
diff options
context:
space:
mode:
authorRichard Sharpe <sharpe@ns.aus.com>2003-04-30 23:53:42 +0000
committerRichard Sharpe <sharpe@ns.aus.com>2003-04-30 23:53:42 +0000
commit164ad9ed091df5f0f6ef5518a3b0b81f5c53e779 (patch)
treee7fff497d1d16c05bade524d6355ca6a0e52a857 /packet-dcerpc-wkssvc.c
parent0242a26c591b1bf55fb5971adf9ce8369684ca99 (diff)
Complete the dissection of NetWkstaSetInfo, wheeee, this is fun, plonk.
There are still some info levels that are not dissected, so I will fill those in over the next few days, unless someone else gets to it first. svn path=/trunk/; revision=7619
Diffstat (limited to 'packet-dcerpc-wkssvc.c')
-rw-r--r--packet-dcerpc-wkssvc.c53
1 files changed, 50 insertions, 3 deletions
diff --git a/packet-dcerpc-wkssvc.c b/packet-dcerpc-wkssvc.c
index 5e905f582c..fe0b9abe5e 100644
--- a/packet-dcerpc-wkssvc.c
+++ b/packet-dcerpc-wkssvc.c
@@ -3,7 +3,7 @@
* Copyright 2001, Tim Potter <tpot@samba.org>
* Copyright 2003, Richard Sharpe <rsharpe@richardsharpe.com>
*
- * $Id: packet-dcerpc-wkssvc.c,v 1.19 2003/04/30 23:31:51 sharpe Exp $
+ * $Id: packet-dcerpc-wkssvc.c,v 1.20 2003/04/30 23:53:42 sharpe Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -90,6 +90,7 @@ static int hf_wkssvc_buf_files_deny_write = -1;
static int hf_wkssvc_buf_read_only_files = -1;
static int hf_wkssvc_force_core_create_mode = -1;
static int hf_wkssvc_use_512_byte_max_transfer = -1;
+static int hf_wkssvc_parm_err = -1;
static gint ett_dcerpc_wkssvc = -1;
extern const value_string platform_id_vals[];
@@ -430,6 +431,49 @@ static int wkssvc_dissect_netwkstagetinfo_reply(tvbuff_t *tvb, int offset,
}
/*
+ * IDL long NetWkstaSetInfo(
+ * IDL [in] [string] [unique] wchar_t *ServerName,
+ * IDL [in] long level,
+ * IDL [in] [ref] WKS_INFO_UNION *wks,
+ * IDL [out] long parm_err
+ * IDL );
+ */
+static int wkssvc_dissect_netwkstasetinfo_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo,
+ proto_tree *tree,
+ char *drep)
+{
+ offset = dissect_ndr_str_pointer_item(tvb, offset, pinfo, tree, drep,
+ NDR_POINTER_UNIQUE, "Server",
+ hf_wkssvc_server, 0);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_wkssvc_info_level, 0);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ wkssvc_dissect_WKS_GETINFO_UNION,
+ NDR_POINTER_REF, "Server Info", -1);
+
+ return offset;
+
+}
+
+static int wkssvc_dissect_netwkstasetinfo_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo,
+ proto_tree *tree,
+ char *drep)
+{
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_wkssvc_parm_err, 0);
+
+ offset = dissect_doserror(tvb, offset, pinfo, tree, drep,
+ hf_wkssvc_rc, NULL);
+
+ return offset;
+
+}
+
+/*
* IDL typedef struct {
* IDL [string] [unique] wchar_t *dev;
* IDL } USER_INFO_0;
@@ -656,8 +700,8 @@ static dcerpc_sub_dissector dcerpc_wkssvc_dissectors[] = {
wkssvc_dissect_netwkstagetinfo_rqst,
wkssvc_dissect_netwkstagetinfo_reply},
{ WKS_NetWkstaSetInfo, "NetWkstaSetInfo",
- NULL,
- NULL},
+ wkssvc_dissect_netwkstasetinfo_rqst,
+ wkssvc_dissect_netwkstasetinfo_reply},
{ WKS_NetWkstaEnumUsers, "NetWkstaEnumUsers",
wkssvc_dissect_netwkstaenumusers_rqst,
wkssvc_dissect_netwkstaenumusers_reply},
@@ -831,6 +875,9 @@ proto_register_dcerpc_wkssvc(void)
{ &hf_wkssvc_use_512_byte_max_transfer,
{ "Use 512 Byte Max Transfer", "wkssvc.use.512.byte.max.transfer", FT_INT32,
BASE_DEC, NULL, 0x0, "Use 512 Byte Maximum Transfer", HFILL}},
+ { &hf_wkssvc_parm_err,
+ { "Parameter Error Offset", "wkssvc.parm.err", FT_INT32,
+ BASE_DEC, NULL, 0x0, "Parameter Error Offset", HFILL}},
};
static gint *ett[] = {
&ett_dcerpc_wkssvc