]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Add get_u64() and put_u64() into lib/unaligned.h
authorPavel Tvrdík <pawel.tvrdik@gmail.com>
Fri, 13 Nov 2015 15:10:33 +0000 (16:10 +0100)
committerPavel Tvrdík <pawel.tvrdik@gmail.com>
Fri, 13 Nov 2015 18:31:19 +0000 (19:31 +0100)
lib/unaligned.h

index af6552046830df3316d0724c4efba35519a9456e..a2dbae4f723e6c1d92fe7dec5a575796bcfc9816 100644 (file)
@@ -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