OpenVPN / OpenVPN/openvpn

linux dco: restructure peer-counter-at-instance-exit logic

Open
#918 5 comments 0 reactions 2 assignees View on GitHub

@ordex is already working on this.

Since Nov 27, 2025.

bug DCO
Dominant language
C
Stars
14.6k
Forks
3.4k
PR merge metrics
No merged PRs in 30d

Description

So I'm testing gerrit 1403, and I have this nice script which is based on the "gremlin" config, which fires up 50 client instances and kills them 20 seconds later, simultaneously

AMI=$$
mkdir g$AMI || exit 1

N=50
SLEEPTIMER=25

i=1
PIDLIST=""
PASS=good
while [ $i -le $N ]
do
    echo "gremlin$AMI-$i" >g$AMI/aup-$i.txt
    echo $PASS >>g$AMI/aup-$i.txt

    openvpn --config gremlin.conf \
            --auth-user-pass g$AMI/aup-$i.txt \
            --log-append g$AMI/openvpn-$i.log \
            --connect-retry-max 3 &
    PIDLIST="$PIDLIST $!"
    i=$(( $i + 1 ))
done
echo "$N instances started, sleeping $SLEEPTIMER..."
sleep $SLEEPTIMER
kill -INT $PIDLIST
echo "killed$PIDLIST, wait.."
wait

(the username dance is only there so I can get away with --duplicate-cn and still see different clients in the server log)

so it works (thanks), but I get a lot of these

Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: ovpn_handle_peer: parsing message for peer 28...
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_update_peer_stat / dco_read_bytes(28): 656
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_update_peer_stat / dco_write_bytes(28): 320
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_update_peer_stat / tun_read_bytes(28): 0
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_update_peer_stat / tun_write_bytes(28): 0
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process: netlink reports error (-25): Object busy
Nov 27 18:33:41 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=-25)

(the START/END lines are my own doing, to better see if something was handled "in one call" or "multiple calls"), and also this, after the last client has been killed

Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process START
Nov 27 18:33:42 ubuntu2004 tun-udp-p2mp-username-cn[1566721]: dco_read_and_process END (ret=0)

... that is, 10+ events in the same second, with "nothing to do".

Both seem to be harmless (= the server has 0 pending clients, so nothing got lost, and behaves normally) but it looks not like it should behave...

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.