git: 3c95262007ef - main - if_ovpn: only install tunnel callback once
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 12 Sep 2024 13:11:51 UTC
The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=3c95262007ef934c9e98b87460a48889bf42c1b9 commit 3c95262007ef934c9e98b87460a48889bf42c1b9 Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2024-09-12 08:37:41 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2024-09-12 13:11:36 +0000 if_ovpn: only install tunnel callback once Rather than attempt to install the tunnel callback every time we add a peer only do so the first time. Reviewed by: zlei Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D46651 --- sys/net/if_ovpn.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sys/net/if_ovpn.c b/sys/net/if_ovpn.c index e2c1dc7f7fc5..f1c2e1403d4b 100644 --- a/sys/net/if_ovpn.c +++ b/sys/net/if_ovpn.c @@ -511,6 +511,7 @@ ovpn_new_peer(struct ifnet *ifp, const nvlist_t *nvl) int fd; uint32_t peerid; int ret = 0; + bool setcb = false; if (nvl == NULL) return (EINVAL); @@ -631,6 +632,7 @@ ovpn_new_peer(struct ifnet *ifp, const nvlist_t *nvl) * we're destroying the ifp. */ soref(sc->so); + setcb = true; } /* Insert the peer into the list. */ @@ -638,9 +640,11 @@ ovpn_new_peer(struct ifnet *ifp, const nvlist_t *nvl) sc->peercount++; OVPN_WUNLOCK(sc); - ret = udp_set_kernel_tunneling(sc->so, ovpn_udp_input, NULL, sc); - MPASS(ret == 0 || ret == EBUSY); - ret = 0; + + if (setcb) { + ret = udp_set_kernel_tunneling(sc->so, ovpn_udp_input, NULL, sc); + MPASS(ret == 0); + } goto done;