--- src/util.c.orig 2011-12-07 15:04:13.000000000 +0400 +++ src/util.c 2011-12-07 15:04:07.000000000 +0400 @@ -126,7 +126,7 @@ res = setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)); if (res < 0) goto fail; -#ifdef __linux__ +#ifdef TCP_KEEPCNT /* set count of keepalive packets */ if (cf_tcp_keepcnt > 0) { val = cf_tcp_keepcnt; @@ -134,6 +134,8 @@ if (res < 0) goto fail; } +#endif +#ifdef TCP_KEEPIDLE /* how long the connection can stay idle before sending keepalive pkts */ if (cf_tcp_keepidle) { val = cf_tcp_keepidle; @@ -141,6 +143,8 @@ if (res < 0) goto fail; } +#endif +#ifdef TCP_KEEPINTVL /* time between packets */ if (cf_tcp_keepintvl) { val = cf_tcp_keepintvl; @@ -148,7 +152,7 @@ if (res < 0) goto fail; } -#else +#endif #ifdef TCP_KEEPALIVE if (cf_tcp_keepidle) { val = cf_tcp_keepidle; @@ -157,7 +161,6 @@ goto fail; } #endif -#endif } /* set in-kernel socket buffer size */