-int main_loop(void)
-{
- struct timeval tv;
- int r;
- time_t last_ping_check;
- struct event timeout;
- struct event sighup_event;
- struct event sigint_event;
- struct event sigterm_event;
- struct event sigquit_event;
- struct event sigusr1_event;
- struct event sigusr2_event;
- struct event sigwinch_event;
- struct event sigalrm_event;
- struct event keyexpire_event;
-
- cp();
-
- signal_set(&sighup_event, SIGHUP, sighup_handler, NULL);
- signal_add(&sighup_event, NULL);
- signal_set(&sigint_event, SIGINT, sigint_handler, NULL);
- signal_add(&sigint_event, NULL);
- signal_set(&sigterm_event, SIGTERM, sigterm_handler, NULL);
- signal_add(&sigterm_event, NULL);
- signal_set(&sigquit_event, SIGQUIT, sigterm_handler, NULL);
- signal_add(&sigquit_event, NULL);
- signal_set(&sigusr1_event, SIGUSR1, sigusr1_handler, NULL);
- signal_add(&sigusr1_event, NULL);
- signal_set(&sigusr2_event, SIGUSR2, sigusr2_handler, NULL);
- signal_add(&sigusr2_event, NULL);
- signal_set(&sigwinch_event, SIGWINCH, sigwinch_handler, NULL);
- signal_add(&sigwinch_event, NULL);
- signal_set(&sigalrm_event, SIGALRM, sigalrm_handler, NULL);
- signal_add(&sigalrm_event, NULL);
- timeout_set(&keyexpire_event, keyexpire_handler, &keyexpire_event);
- event_add(&keyexpire_event, &(struct timeval){keylifetime, 0});
-
- last_ping_check = now;
-
- srand(now);
-
- running = true;
+int main_loop(meshlink_handle_t *mesh) {
+ timeout_add(&mesh->loop, &mesh->pingtimer, timeout_handler, &mesh->pingtimer, &(struct timeval){mesh->pingtimeout, rand() % 100000});
+ timeout_add(&mesh->loop, &mesh->periodictimer, periodic_handler, &mesh->periodictimer, &(struct timeval){mesh->pingtimeout, rand() % 100000});