[Openvpn-devel,v2] dco linux: avoid redefining ovpn enums

Message ID 20250623140748.13960-1-gert@greenie.muc.de
State Accepted
Headers show
Series [Openvpn-devel,v2] dco linux: avoid redefining ovpn enums | expand

Commit Message

Gert Doering June 23, 2025, 2:07 p.m. UTC
From: Ralf Lici <ralf@mandelbit.com>

Starting with Linux kernel version 6.16, a couple of ovpn-related enum
definitions were introduced in the `include/uapi/linux/if_link.h`
header. Redefining them in openvpn when they are already present in the
system headers can lead to conflicts or build issues.

This commit ensures that enum redefinitions are avoided by conditionally
using the existing definitions from the system header when available.

Change-Id: I4fa2d578f9c0a5a8aa24ca1d396102ef2ed9a425
Signed-off-by: Ralf Lici <ralf@mandelbit.com>
---

This change was reviewed on Gerrit and approved by at least one
developer. I request to merge it to master.

Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1064
This mail reflects revision 2 of this Change.

Acked-by according to Gerrit (reflected above):

Comments

Gert Doering June 23, 2025, 2:34 p.m. UTC | #1
Patch looks good, and passes compile & smoke tests on Ubuntu 20.04
(with and without --disable-dco) & Gentoo.  No other platforms affected.

BB fails are due to infra issues (socks server refusing v6), unrelated
to this patch.

Your patch has been applied to the master branch.

commit 1d3c2b67a73a0aa011c13e62f876d24e49d41df0
Author: Ralf Lici
Date:   Mon Jun 23 16:07:43 2025 +0200

     dco linux: avoid redefining ovpn enums

     Signed-off-by: Ralf Lici <ralf@mandelbit.com>
     Message-Id: <20250623140748.13960-1-gert@greenie.muc.de>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg31961.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/src/openvpn/dco_linux.h b/src/openvpn/dco_linux.h
index 273a6ad..4e441ec 100644
--- a/src/openvpn/dco_linux.h
+++ b/src/openvpn/dco_linux.h
@@ -40,6 +40,8 @@ 
 
 /* OVPN section */
 
+#ifndef IFLA_OVPN_MAX
+
 enum ovpn_mode {
     OVPN_MODE_P2P,
     OVPN_MODE_MP,
@@ -49,10 +51,13 @@ 
     IFLA_OVPN_UNSPEC = 0,
     IFLA_OVPN_MODE,
 
-    __IFLA_OVPN_AFTER_LAST,
-    IFLA_OVPN_MAX = __IFLA_OVPN_AFTER_LAST - 1,
+    __IFLA_OVPN_MAX,
 };
 
+#define IFLA_OVPN_MAX (__IFLA_OVPN_MAX - 1)
+
+#endif /* ifndef IFLA_OVPN_MAX */
+
 typedef struct
 {
     struct nl_sock *nl_sock;