summaryrefslogtreecommitdiff
path: root/source3/rpc_parse/parse_prs.c
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2009-03-18 15:05:44 +0100
committerGünther Deschner <gd@samba.org>2009-03-18 16:43:28 +0100
commit9ab8953d74491d7ab4a30c242aa0935efb38f857 (patch)
tree1b5fee351eb76226eed45fd1cd5bb62123bec8cc /source3/rpc_parse/parse_prs.c
parent9fdeb7f7b319dca5dbd1fdaf24f01fb19e124fe6 (diff)
downloadsamba-9ab8953d74491d7ab4a30c242aa0935efb38f857.tar.gz
samba-9ab8953d74491d7ab4a30c242aa0935efb38f857.tar.bz2
samba-9ab8953d74491d7ab4a30c242aa0935efb38f857.zip
s3-rpc_parse: move prs_uint64 to rpc_parse/parse_prs.c.
Guenther
Diffstat (limited to 'source3/rpc_parse/parse_prs.c')
-rw-r--r--source3/rpc_parse/parse_prs.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c
index bc9202cccc..c42018947f 100644
--- a/source3/rpc_parse/parse_prs.c
+++ b/source3/rpc_parse/parse_prs.c
@@ -760,6 +760,30 @@ bool prs_int32(const char *name, prs_struct *ps, int depth, int32 *data32)
}
/*******************************************************************
+ Stream a uint64_struct
+ ********************************************************************/
+bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64)
+{
+ if (UNMARSHALLING(ps)) {
+ uint32 high, low;
+
+ if (!prs_uint32(name, ps, depth+1, &low))
+ return False;
+
+ if (!prs_uint32(name, ps, depth+1, &high))
+ return False;
+
+ *data64 = ((uint64_t)high << 32) + low;
+
+ return True;
+ } else {
+ uint32 high = (*data64) >> 32, low = (*data64) & 0xFFFFFFFF;
+ return prs_uint32(name, ps, depth+1, &low) &&
+ prs_uint32(name, ps, depth+1, &high);
+ }
+}
+
+/*******************************************************************
Stream a NTSTATUS
********************************************************************/