diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2002-06-22 06:27:36 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2002-06-22 06:27:36 +0000 |
commit | eb7f8890ff8e1c08deddfc1b29a2945474272581 (patch) | |
tree | f3c06f49f65975de6a1a6f0ac20d1522eab59693 | |
parent | bf2c26e0b966742e488de8d3a05612f006d52b3d (diff) | |
download | wireshark-eb7f8890ff8e1c08deddfc1b29a2945474272581.tar.gz wireshark-eb7f8890ff8e1c08deddfc1b29a2945474272581.tar.bz2 wireshark-eb7f8890ff8e1c08deddfc1b29a2945474272581.zip |
Added some reply dissectors.
svn path=/trunk/; revision=5733
-rw-r--r-- | packet-dcerpc-srvsvc.c | 84 |
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}, |