From: Donatas Abraitis Date: Wed, 12 Oct 2022 18:03:42 +0000 (+0300) Subject: lib: Add ptr_get_be64() function X-Git-Tag: base_8.5~283^2~2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=0c969118c70fec5289e557ad22a6653b0a02e80b;p=mirror%2Ffrr.git lib: Add ptr_get_be64() function Get a single uint64_t value from two uint32_t values. Signed-off-by: Donatas Abraitis --- diff --git a/lib/stream.h b/lib/stream.h index 35733e7438..a3c148c9c9 100644 --- a/lib/stream.h +++ b/lib/stream.h @@ -386,6 +386,18 @@ extern void stream_fifo_free(struct stream_fifo *fifo); * bit), for 64-bit values (you need to cast them anyway), and neither for * encoding (because it's downcasted.) */ +static inline const uint8_t *ptr_get_be64(const uint8_t *ptr, uint64_t *out) +{ + uint32_t tmp1, tmp2; + + memcpy(&tmp1, ptr, sizeof(tmp1)); + memcpy(&tmp2, ptr + sizeof(tmp1), sizeof(tmp1)); + + *out = (((uint64_t)ntohl(tmp1)) << 32) | ntohl(tmp2); + + return ptr + 8; +} + static inline const uint8_t *ptr_get_be32(const uint8_t *ptr, uint32_t *out) { uint32_t tmp;