Attention is currently required from: plaisthos, stipa.
Hello plaisthos,
I'd like you to reexamine a change. Please visit
http://gerrit.openvpn.net/c/openvpn/+/1740?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Code-Review-1 by plaisthos
Change subject: buffer: Add buf_read_u64() and buf_write_u64()
......................................................................
buffer: Add buf_read_u64() and buf_write_u64()
Add 64-bit big-endian buffer accessors alongside the existing 8/16/32-bit
helpers. There is no portable 64-bit byte-order primitive, so the value is
handled as two big-endian 32-bit halves (most significant first).
buf_read_u64() reports success via a bool out-parameter, mirroring
buf_read_u32(): every 64-bit value is a legal result, leaving no room for
an in-band sentinel.
Change-Id: Ic677f43fc3eb0052f8e80d9a7f098d34ad03dfe1
Signed-off-by: Lev Stipakov <[email protected]>
---
M src/openvpn/buffer.h
1 file changed, 32 insertions(+), 0 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/40/1740/2
diff --git a/src/openvpn/buffer.h b/src/openvpn/buffer.h
index fcc923b..1db9367 100644
--- a/src/openvpn/buffer.h
+++ b/src/openvpn/buffer.h
@@ -25,6 +25,7 @@
#include "basic.h"
#include "error.h"
+#include "integer.h"
#define BUF_SIZE_MAX 1000000
@@ -702,6 +703,13 @@
}
static inline bool
+buf_write_u64(struct buffer *dest, uint64_t data)
+{
+ uint64_t u64 = htonll(data);
+ return buf_write(dest, &u64, sizeof(uint64_t));
+}
+
+static inline bool
buf_copy(struct buffer *dest, const struct buffer *src)
{
return buf_write(dest, BPTR(src), BLENZ(src));
@@ -827,6 +835,30 @@
}
}
+/* Read a 64-bit big-endian value (see buf_write_u64()). Sets *good to indicate
+ * success, like buf_read_u32(). */
+static inline uint64_t
+buf_read_u64(struct buffer *buf, bool *good)
+{
+ uint64_t ret;
+ if (!buf_read(buf, &ret, sizeof(uint64_t)))
+ {
+ if (good)
+ {
+ *good = false;
+ }
+ return 0;
+ }
+ else
+ {
+ if (good)
+ {
+ *good = true;
+ }
+ return ntohll(ret);
+ }
+}
+
/** Return true if buffer contents are equal */
static inline bool
buf_equal(const struct buffer *a, const struct buffer *b)
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1740?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings?usp=email
Gerrit-MessageType: newpatchset
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: Ic677f43fc3eb0052f8e80d9a7f098d34ad03dfe1
Gerrit-Change-Number: 1740
Gerrit-PatchSet: 2
Gerrit-Owner: stipa <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: stipa <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel