summaryrefslogtreecommitdiff
path: root/lib/unaligned.h
diff options
context:
space:
mode:
authorPavel Tvrdík <pawel.tvrdik@gmail.com>2015-11-13 16:10:33 +0100
committerPavel Tvrdík <pawel.tvrdik@gmail.com>2015-11-13 19:31:19 +0100
commit75ff08022ea58fe3efa96639f080ce375e997675 (patch)
tree327b59873bb6b5e325139100e33ad6cb2ff26d23 /lib/unaligned.h
parentfce764f90e8331d1adb6a85ec00136dfeae1a398 (diff)
Add get_u64() and put_u64() into lib/unaligned.h
Diffstat (limited to 'lib/unaligned.h')
-rw-r--r--lib/unaligned.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/unaligned.h b/lib/unaligned.h
index af655204..a2dbae4f 100644
--- a/lib/unaligned.h
+++ b/lib/unaligned.h
@@ -35,6 +35,15 @@ get_u32(void *p)
return ntohl(x);
}
+static inline u64
+get_u64(const void *p)
+{
+ u32 xh, xl;
+ memcpy(&xh, p, 4);
+ memcpy(&xl, p+4, 4);
+ return (((u64) ntohl(xh)) << 32) | ntohl(xl);
+}
+
static inline void
put_u16(void *p, u16 x)
{
@@ -49,4 +58,14 @@ put_u32(void *p, u32 x)
memcpy(p, &x, 4);
}
+static inline void
+put_u64(void *p, u64 x)
+{
+ u32 xh, xl;
+ xh = htonl(x >> 32);
+ xl = htonl((u32) x);
+ memcpy(p, &xh, 4);
+ memcpy(p+4, &xl, 4);
+}
+
#endif