]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Flock: misc
authorMaria Matejka <mq@ucw.cz>
Mon, 16 Sep 2024 21:10:41 +0000 (23:10 +0200)
committerMaria Matejka <mq@ucw.cz>
Sun, 23 Feb 2025 18:07:35 +0000 (19:07 +0100)
flock/flock.c
flock/hypervisor.c

index 786190037516600fda8f1fcf3f68f698132a0b2c..39c4e484387ab5b209b9290af89bb34ba8a9e8fb 100644 (file)
@@ -1,6 +1,7 @@
 #include "flock/flock.h"
 
 #include "lib/obstacle.h"
+#include "lib/runtime.h"
 #include "lib/string.h"
 #include "lib/timer.h"
 #include "sysdep/unix/unix.h"
@@ -11,6 +12,7 @@
 #include <poll.h>
 #include <sched.h>
 #include <signal.h>
+#include <stdatomic.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/mount.h>
@@ -160,6 +162,10 @@ main(int argc, char **argv, char **argh UNUSED)
 
   birdloop_init();
 
+  struct global_runtime gr = *atomic_load_explicit(&global_runtime, memory_order_relaxed);
+//  gr.latency_debug = ~0;
+  switch_runtime(&gr);
+
   ev_init_list(&global_event_list, &main_birdloop, "Global event list");
   ev_init_list(&global_work_list, &main_birdloop, "Global work list");
   ev_init_list(&main_birdloop.event_list, &main_birdloop, "Global fast event list");
index 2fa701c9d8be60ac36430d62055f488a1098ee52..9df38cdc62f0414fedd521c2084b5d1a36994794 100644 (file)
@@ -196,6 +196,13 @@ hypervisor_exposed_parent_rx(sock *sk, uint size UNUSED)
   };
 
   int e = recvmsg(sk->fd, &m, 0);
+  if (e < 3)
+  {
+    log(L_ERR "Exposed parent RX hangup, what the hell");
+    sk_close(sk);
+    ev_send_loop(&main_birdloop, &poweroff_event);
+    return 0;
+  }
 
   struct cmsghdr *c = CMSG_FIRSTHDR(&m);
   memcpy(&sfd, CMSG_DATA(c), sizeof sfd);