r1002: Add helper files for eparser output.
authorTim Potter <tpot@samba.org>
Fri, 4 Jun 2004 07:59:54 +0000 (07:59 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:56:25 +0000 (12:56 -0500)
source/build/pidl/packet-dcerpc-eparser.c [new file with mode: 0644]
source/build/pidl/packet-dcerpc-eparser.h [new file with mode: 0644]

diff --git a/source/build/pidl/packet-dcerpc-eparser.c b/source/build/pidl/packet-dcerpc-eparser.c
new file mode 100644 (file)
index 0000000..bafdf34
--- /dev/null
@@ -0,0 +1,67 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "packet-dcerpc.h"
+#include "packet-dcerpc-nt.h"
+#include "packet-dcerpc-eparser.h"
+
+/* Create a ndr_pull structure from data stored in a tvb at a given offset. */
+
+struct e_ndr_pull *ndr_pull_init(tvbuff_t *tvb, int offset, packet_info *pinfo,
+                                proto_tree *tree, guint8 *drep)
+{
+       struct e_ndr_pull *ndr;
+
+       ndr = (struct e_ndr_pull *)g_malloc(sizeof(*ndr));
+       
+       ndr->tvb = tvb;
+       ndr->offset = offset;
+       ndr->pinfo = pinfo;
+       ndr->tree = tree;
+       ndr->drep = drep;
+
+       return ndr;
+}
+
+/* Dispose of a dynamically allocated ndr_pull structure */
+
+void ndr_pull_free(struct e_ndr_pull *ndr)
+{
+       g_free(ndr);
+}
+
+void ndr_pull_ptr(struct e_ndr_pull *e_ndr, int hf, guint32 *ptr)
+{
+       e_ndr->offset = dissect_ndr_uint32(
+               e_ndr->tvb, e_ndr->offset, e_ndr->pinfo,
+               e_ndr->tree, e_ndr->drep, hf, ptr);
+}
+
+void ndr_pull_NTSTATUS(struct e_ndr_pull *e_ndr, int hf)
+{
+       e_ndr->offset = dissect_ntstatus(
+               e_ndr->tvb, e_ndr->offset, e_ndr->pinfo,
+               e_ndr->tree, e_ndr->drep, hf, NULL);
+}
+
+void ndr_pull_uint16(struct e_ndr_pull *e_ndr, int hf)
+{
+       e_ndr->offset = dissect_ndr_uint16(
+               e_ndr->tvb, e_ndr->offset, e_ndr->pinfo,
+               e_ndr->tree, e_ndr->drep, hf, NULL);
+}
+
+void ndr_pull_uint32(struct e_ndr_pull *e_ndr, int hf)
+{
+       e_ndr->offset = dissect_ndr_uint32(
+               e_ndr->tvb, e_ndr->offset, e_ndr->pinfo,
+               e_ndr->tree, e_ndr->drep, hf, NULL);
+}
+
+void ndr_pull_policy_handle(struct e_ndr_pull *e_ndr, int hf)
+{
+       e_ndr->offset = dissect_nt_policy_hnd(
+               e_ndr->tvb, e_ndr->offset, e_ndr->pinfo, e_ndr->tree, 
+               e_ndr->drep, hf, NULL, NULL, 0, 0);
+}
diff --git a/source/build/pidl/packet-dcerpc-eparser.h b/source/build/pidl/packet-dcerpc-eparser.h
new file mode 100644 (file)
index 0000000..0d181c9
--- /dev/null
@@ -0,0 +1,23 @@
+#define NDR_SCALARS 1
+#define NDR_BUFFERS 2
+
+/* Ethereal version of struct ndr_pull */
+
+struct e_ndr_pull {
+       tvbuff_t *tvb;
+       int offset;
+       packet_info *pinfo;
+       proto_tree *tree;
+       guint8 *drep;
+};
+
+/* Create a ndr_pull structure from data stored in a tvb at a given offset. */
+
+struct e_ndr_pull *ndr_pull_init(tvbuff_t *tvb, int offset, packet_info *pinfo,
+                                proto_tree *tree, guint8 *drep);
+void ndr_pull_free(struct e_ndr_pull *ndr);
+void ndr_pull_ptr(struct e_ndr_pull *ndr, int hf, guint32 *ptr);
+void ndr_pull_NTSTATUS(struct e_ndr_pull *ndr, int hf);
+void ndr_pull_uint16(struct e_ndr_pull *ndr, int hf);
+void ndr_pull_uint32(struct e_ndr_pull *ndr, int hf);
+void ndr_pull_policy_handle(struct e_ndr_pull *e_ndr, int hf);