static void out_bind_cb(void *st, errval_t err, struct terminal_binding *b) { struct term_client *client = st; if (err_is_fail(err)) { /* call async error callback */ err = err_push(err, TERM_ERR_BIND_OUT_INTERFACE); client->err_cb(client->st, err); return; } client->out_binding = b; b->st = client; b->rx_vtbl.characters = out_characters_handler; /* Check if all connections are already established. */ check_connection_established(client); }
/* * Coarse timers work to 1 second resolution. */ static void process_coarse_timers (struct context *c) { #ifdef ENABLE_CRYPTO /* flush current packet-id to file once per 60 seconds if --replay-persist was specified */ check_packet_id_persist_flush (c); #endif /* should we update status file? */ check_status_file (c); /* process connection establishment items */ check_connection_established (c); #if P2MP /* see if we should send a push_request in response to --pull */ check_push_request (c); #endif #ifdef PLUGIN_PF pf_check_reload (c); #endif /* process --route options */ check_add_routes (c); /* possibly exit due to --inactive */ check_inactivity_timeout (c); if (c->sig->signal_received) return; /* restart if ping not received */ check_ping_restart (c); if (c->sig->signal_received) return; #if P2MP check_server_poll_timeout (c); if (c->sig->signal_received) return; check_scheduled_exit (c); if (c->sig->signal_received) return; #endif #ifdef ENABLE_OCC /* Should we send an OCC_REQUEST message? */ check_send_occ_req (c); /* Should we send an MTU load test? */ check_send_occ_load_test (c); /* Should we send an OCC_EXIT message to remote? */ if (c->c2.explicit_exit_notification_time_wait) process_explicit_exit_notification_timer_wakeup (c); #endif /* Should we ping the remote? */ check_ping_send (c); }