aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/contrib/examples
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--contrib/examples/embeddable-wg-library/wireguard.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/contrib/examples/embeddable-wg-library/wireguard.c b/contrib/examples/embeddable-wg-library/wireguard.c
index a32fd50..b8368e9 100644
--- a/contrib/examples/embeddable-wg-library/wireguard.c
+++ b/contrib/examples/embeddable-wg-library/wireguard.c
@@ -998,8 +998,15 @@ another:
goto cleanup;
}
if ((len = mnl_cb_run(rtnl_buffer, len, seq, portid, read_devices_cb, buffer)) < 0) {
- ret = -errno;
- goto cleanup;
+ /* Netlink returns NLM_F_DUMP_INTR if the set of all tunnels changed
+ * during the dump. That's unfortunate, but is pretty common on busy
+ * systems that are adding and removing tunnels all the time. Rather
+ * than retrying, potentially indefinitely, we just work with the
+ * partial results. */
+ if (errno != EINTR) {
+ ret = -errno;
+ goto cleanup;
+ }
}
if (len == MNL_CB_OK + 1)
goto another;