Hi! I've been looking at the keepalive option today, after having discussed it a bit on IRC. It seems some vital information is missing here.
The man page says: ------------------------------------------------------------------------ --keepalive n m A helper directive designed to simplify the expression of --ping and --ping-restart in server mode configurations. For example, --keepalive 10 60 expands as follows: if mode server: ping 10 ping-restart 120 push "ping 10" push "ping-restart 60" else ping 10 ping-restart 60 ------------------------------------------------------------------------ The ping-restart in the server mode is in this example set to 120. It do not come clear out that this is 60*2, as I see in the source code. A normal user might even understand it as 120 seconds is a hard coded value. >From helper.c ------------------------------------------------------------------------ if (o->mode == MODE_POINT_TO_POINT) { o->ping_rec_timeout_action = PING_RESTART; o->ping_send_timeout = o->keepalive_ping; o->ping_rec_timeout = o->keepalive_timeout; } #if P2MP_SERVER else if (o->mode == MODE_SERVER) { o->ping_rec_timeout_action = PING_RESTART; o->ping_send_timeout = o->keepalive_ping; o->ping_rec_timeout = o->keepalive_timeout * 2; push_option (o, print_str_int ("ping", o->keepalive_ping, &o->gc), M_USAGE); push_option (o, print_str_int ("ping-restart", o->keepalive_timeout, &o->gc), M_USAGE); } #endif ------------------------------------------------------------------------ Would a better explanation be like this? For example, --keepalive XX YY expands as follows: if mode server: ping XX ping-restart YY*2 push "ping XX" push "ping-restart YY" else ping XX ping-restart YY The XX and YY markers must be integer values, defining the ping time and ping-restart values in seconds. This is to highlight more where those variables are used and how they are used. kind regards, David Sommerseth