]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: net_helper: Add support for floats/doubles.
authorFrederic Lecaille <flecaille@haproxy.com>
Mon, 15 Apr 2024 07:52:25 +0000 (09:52 +0200)
committerFrederic Lecaille <flecaille@haproxy.com>
Tue, 16 Apr 2024 05:37:28 +0000 (07:37 +0200)
Implement (read|write)_flt() (resp. (read|write)_dbl()) to read/write floats
(resp. read/write doubles) from/to an unaligned buffer.

include/haproxy/net_helper.h

index f019d30ff1eb4fe10cdc9383d74a19234e0409a5..ee27ed483a2c4a34989d3247c3399c25d8a8964e 100644 (file)
@@ -91,6 +91,34 @@ static inline void write_ptr(void *p, const void *ptr)
                return write_u64(p, (uintptr_t)ptr);
 }
 
+/* Read a float in native host order */
+static inline float read_flt(const void *p)
+{
+       const union {  float flt; } __attribute__((packed))*u = p;
+       return u->flt;
+}
+
+/* Write a float in native host order */
+static inline void write_flt(void *p, const float flt)
+{
+       union {  float flt; } __attribute__((packed))*u = p;
+       u->flt = flt;
+}
+
+/* Read a double in native host order */
+static inline double read_dbl(const void *p)
+{
+       const union {  double dbl; } __attribute__((packed))*u = p;
+       return u->dbl;
+}
+
+/* Write a double in native host order */
+static inline void write_dbl(void *p, const double dbl)
+{
+       union {  double dbl; } __attribute__((packed))*u = p;
+       u->dbl = dbl;
+}
+
 /* Read a possibly wrapping number of bytes <bytes> into destination <dst>. The
  * first segment is composed of <s1> bytes at p1. The remaining byte(s), if any,
  * are read from <p2>. <s1> may be zero and may also be larger than <bytes>. The