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

Reply via email to