strongswan/src/libcharon/plugins/kernel_netlink
Tobias Brunner 030e80957d kernel-netlink: Don't wait for VIPs to disappear during de-initialization
This can happen if an IKE_SA is terminated forcefully shortly before
terminating the daemon.  The thread that handles the terminate command
will call checkin_and_destroy(), which unregisters the IKE_SA from the
manager before destroying it.  The main thread that calls flush() on the
IKE_SA manager won't wait for this SA (its entry is already gone), so
the processor and in turn the watcher job/thread might get canceled
before the first thread started deleting the VIP.  It would then wait
indefinitely for a signal that can never be sent.

There is still a small chance the thread hangs in wait() if the state check
happens right before the watcher is canceled and it wasn't yet able to
deliver the event from the kernel, we counter that by rechecking the state
after a while.
2021-06-21 09:59:06 +02:00
..
suites libhydra: Move all kernel plugins to libcharon 2016-03-03 17:36:11 +01:00
.gitignore xfrmi: Move to a separate directory to fix monolithic build 2019-04-04 09:31:38 +02:00
Makefile.am xfrmi: Move to a separate directory to fix monolithic build 2019-04-04 09:31:38 +02:00
kernel_netlink_ipsec.c kernel-netlink: Add support for full-length HMAC-SHA2 algorithms 2021-02-23 17:28:46 +01:00
kernel_netlink_ipsec.h Unify format of HSR copyright statements 2018-05-23 16:32:53 +02:00
kernel_netlink_net.c kernel-netlink: Don't wait for VIPs to disappear during de-initialization 2021-06-21 09:59:06 +02:00
kernel_netlink_net.h Unify format of HSR copyright statements 2018-05-23 16:32:53 +02:00
kernel_netlink_plugin.c Unify format of HSR copyright statements 2018-05-23 16:32:53 +02:00
kernel_netlink_plugin.h Unify format of HSR copyright statements 2018-05-23 16:32:53 +02:00
kernel_netlink_shared.c kernel-netlink: Extract shared route handling code in net/ipsec 2020-03-10 10:30:39 +01:00
kernel_netlink_shared.h kernel-netlink: Extract shared route handling code in net/ipsec 2020-03-10 10:30:39 +01:00
tests.c libhydra: Move kernel interface to libcharon 2016-03-03 17:36:11 +01:00
tests.h libhydra: Move all kernel plugins to libcharon 2016-03-03 17:36:11 +01:00