linux dco: restructure peer-counter-at-instance-exit logic
@ordex is already working on this.
Since Nov 27, 2025.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.