From: Pavel TvrdĂ­k Date: Fri, 13 Nov 2015 15:10:33 +0000 (+0100) Subject: Add get_u64() and put_u64() into lib/unaligned.h X-Git-Tag: v1.6.0~27^2~3^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=75ff08022ea58fe3efa96639f080ce375e997675;p=thirdparty%2Fbird.git Add get_u64() and put_u64() into lib/unaligned.h --- diff --git a/lib/unaligned.h b/lib/unaligned.h index af6552046..a2dbae4f7 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