Am 09.03.23 um 10:26 schrieb Kristof Provost via Openvpn-devel:
From: Kristof Provost <k...@freebsd.org>
Implement dco_version_string() for FreeBSD.
Unlike Linux and Windows the DCO driver is built into the operating
system itself, so we log the OS version as a proxy for the DCO version.
---
src/openvpn/dco_freebsd.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/openvpn/dco_freebsd.c b/src/openvpn/dco_freebsd.c
index 2b94b2a2..a5e96bb2 100644
--- a/src/openvpn/dco_freebsd.c
+++ b/src/openvpn/dco_freebsd.c
@@ -31,6 +31,8 @@
#include <sys/param.h>
#include <sys/linker.h>
#include <sys/nv.h>
+#include <sys/utsname.h>
+
#include <netinet/in.h>
#include "dco_freebsd.h"
@@ -627,7 +629,17 @@ out:
const char *
dco_version_string(struct gc_arena *gc)
{
- return "v0";
+ struct utsname name;
+ struct buffer out = alloc_buf_gc(256, gc);
+ int ret;
+
+ ret = uname(&name);
+ if (ret != 0)
+ return "N/A";
There should be { around the return
+
+ buf_printf(&out, "%s", name.version);
+
+ return (char *)out.data;
This should use BSTR(data) instead. Instead of copying/printf, you could
also just do:
struct utsname* uts;
ALLOC_OBJ_GC(uts, struct utsname, gc);
if (uname(&name) != 0)
{
return "N/A";
}
return uts->name;
Arne
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel