aboutsummaryrefslogtreecommitdiffstats
path: root/packet-dcerpc-srvsvc.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2002-06-22 06:27:36 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2002-06-22 06:27:36 +0000
commiteb7f8890ff8e1c08deddfc1b29a2945474272581 (patch)
treef3c06f49f65975de6a1a6f0ac20d1522eab59693 /packet-dcerpc-srvsvc.c
parentbf2c26e0b966742e488de8d3a05612f006d52b3d (diff)
downloadwireshark-eb7f8890ff8e1c08deddfc1b29a2945474272581.tar.gz
wireshark-eb7f8890ff8e1c08deddfc1b29a2945474272581.tar.bz2
wireshark-eb7f8890ff8e1c08deddfc1b29a2945474272581.zip
Added some reply dissectors.
svn path=/trunk/; revision=5733
Diffstat (limited to 'packet-dcerpc-srvsvc.c')
-rw-r--r--packet-dcerpc-srvsvc.c84
1 files changed, 69 insertions, 15 deletions
diff --git a/packet-dcerpc-srvsvc.c b/packet-dcerpc-srvsvc.c
index 5f8c61f1ae..4187f304c8 100644
--- a/packet-dcerpc-srvsvc.c
+++ b/packet-dcerpc-srvsvc.c
@@ -6,7 +6,7 @@
* Copyright 2002, Ronnie Sahlberg
* rewrote entire dissector
*
- * $Id: packet-dcerpc-srvsvc.c,v 1.33 2002/06/21 14:27:46 sahlberg Exp $
+ * $Id: packet-dcerpc-srvsvc.c,v 1.34 2002/06/22 06:27:36 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -421,13 +421,13 @@ srvsvc_dissect_CHARDEV_ENUM_STRUCT(tvbuff_t *tvb, int offset,
return offset;
}
-/* XXX dont know the out parameters. only the in parameters.
- *
+/*
* IDL long NetrCharDevEnum(
* IDL [in] [string] [unique] wchar_t *ServerName,
- * IDL [in] [ref] CHARDEV_ENUM_STRUCT *devs,
+ * IDL [in] [out] [ref] CHARDEV_ENUM_STRUCT *devs,
* IDL [in] long PreferredMaximumLength,
- * IDL [in] [unique] long *ResumeHandle
+ * IDL [out] long num_entries,
+ * IDL [in] [out] [unique] long *ResumeHandle
* IDL );
*/
static int
@@ -454,11 +454,33 @@ srvsvc_dissect_netrchardevenum_rqst(tvbuff_t *tvb, int offset,
return offset;
}
+static int
+srvsvc_dissect_netrchardevenum_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ char *drep)
+{
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ srvsvc_dissect_CHARDEV_ENUM_STRUCT,
+ NDR_POINTER_REF, "CHARDEV_ENUM_STRUCT",
+ -1, 0);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_srvsvc_num_entries, NULL);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ srvsvc_dissect_ENUM_HANDLE,
+ NDR_POINTER_UNIQUE, "Enum Handle", -1, 0);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_srvsvc_rc, NULL);
+
+ return offset;
+}
/* XXX dont know the out parameters. only the in parameters.
*
- * IDL long NetrCharDevEnum(
+ * IDL long NetrCharDevGetInfo(
* IDL [in] [string] [unique] wchar_t *ServerName,
* IDL [in] [string] [ref] wchar_t *DevName,
* IDL [in] long Level
@@ -484,8 +506,8 @@ srvsvc_dissect_netrchardevgetinfo_rqst(tvbuff_t *tvb, int offset,
return offset;
}
-/* XXX dont know the out parameters. only the in parameters.
- *
+
+/*
* IDL long NetrCharDevControl(
* IDL [in] [string] [unique] wchar_t *ServerName,
* IDL [in] [string] [ref] wchar_t *DevName,
@@ -512,6 +534,16 @@ srvsvc_dissect_netrchardevcontrol_rqst(tvbuff_t *tvb, int offset,
return offset;
}
+static int
+srvsvc_dissect_netrchardevcontrol_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ char *drep)
+{
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_srvsvc_rc, NULL);
+
+ return offset;
+}
@@ -721,14 +753,14 @@ srvsvc_dissect_CHARDEVQ_INFO(tvbuff_t *tvb, int offset,
}
-/* XXX dont know the out parameters. only the in parameters.
- *
+/*
* IDL long NetrCharDevQEnum(
* IDL [in] [string] [unique] wchar_t *ServerName,
* IDL [in] [string] [unique] wchar_t *UserName,
- * IDL [in] [ref] CHARDEVQ_ENUM_STRUCT *devs,
+ * IDL [in] [out] [ref] CHARDEVQ_ENUM_STRUCT *devs,
* IDL [in] long PreferredMaximumLength,
- * IDL [in] [unique] long *ResumeHandle
+ * IDL [out] long num_entries,
+ * IDL [in] [out] [unique] long *ResumeHandle
* IDL );
*/
static int
@@ -760,6 +792,28 @@ srvsvc_dissect_netrchardevqenum_rqst(tvbuff_t *tvb, int offset,
return offset;
}
+static int
+srvsvc_dissect_netrchardevqenum_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ char *drep)
+{
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ srvsvc_dissect_CHARDEVQ_ENUM_STRUCT,
+ NDR_POINTER_REF, "CHARDEVQ_ENUM_STRUCT",
+ -1, 0);
+
+ offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
+ hf_srvsvc_num_entries, NULL);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ srvsvc_dissect_ENUM_HANDLE,
+ NDR_POINTER_UNIQUE, "Enum Handle", -1, 0);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_srvsvc_rc, NULL);
+
+ return offset;
+}
/* XXX dont know the out parameters. only the in parameters.
*
@@ -5967,16 +6021,16 @@ srvsvc_dissect_netrserversetservicebits2_rqst(tvbuff_t *tvb, int offset,
static dcerpc_sub_dissector dcerpc_srvsvc_dissectors[] = {
{SRV_NETRCHARDEVENUM, "NetrCharDevEnum",
srvsvc_dissect_netrchardevenum_rqst,
- NULL},
+ srvsvc_dissect_netrchardevenum_reply},
{SRV_NETRCHARDEVGETINFO, "NetrCharDevGetInfo",
srvsvc_dissect_netrchardevgetinfo_rqst,
NULL},
{SRV_NETRCHARDEVCONTROL, "NetrCharDevControl",
srvsvc_dissect_netrchardevcontrol_rqst,
- NULL},
+ srvsvc_dissect_netrchardevcontrol_reply},
{SRV_NETRCHARDEVQENUM, "NetrCharDevQEnum",
srvsvc_dissect_netrchardevqenum_rqst,
- NULL},
+ srvsvc_dissect_netrchardevqenum_reply},
{SRV_NETRCHARDEVQGETINFO, "NetrCharDevQGetInfo",
srvsvc_dissect_netrchardevqgetinfo_rqst,
NULL},