OpenVPN / OpenVPN/openvpn

DCO: feature negotiation with kernel

Open
#865 0 comments 0 reactions 5 assignees View on GitHub

@schwabe is already working on this.

Since Oct 11, 2025.

DCO enhancement FreeBSD linux Windows
Dominant language
C
Stars
14.6k
Forks
3.4k
PR merge metrics
No merged PRs in 30d

Description

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=289303

"--- Comment #35 from Kristof Provost kp@freebsd.org ---
(In reply to Gert Doering from comment #34)
At some point we're going to be forced to add a feature flag negotiation
feature to the kernel/userspace interface. I've had a quick look at dco_linux
and dco_win. As far as I can see there's no generic mechanism yet. Ideally we'd
come up with something that works for everyone, so it might be best for that to
be driven from OpenVPN's side. I'm sure I can implement whatever you come up
with for FreeBSD fairly easily.
"

so, opening an issue here that we do not forget.

So far Windows managed to avoid a true "feature negotiation" by only adding things and increasing the dco-win version number.

Linux managed to avoid this by having a fully incompatible "new DCO" module which wants a fully new "userland" - but at this point we're frozen with what the "new ovpn.ko" can do at birth. When Linux adds epoch data format, we're at the point where we need to query the kernel and ask it "what can you do?"

FreeBSD bit us because the kernel grew "float notification" support without any other changes to the API, so old 2.6 OpenVPN received messages it did not expect and killed the peer ("I do not understand this message from DCO, SIGUSR1 to the rescue").

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.