Cygwin: tcp: Support TCP_KEEPIDLE, TCP_KEEPCNT, TCP_KEEPINTVL

Use WSAIoctl(SIO_KEEPALIVE_VALS) on older systems.

Make sure that keep-alive timeout is equivalent to
TCP_KEEPIDLE + TCP_KEEPCNT * TCP_KEEPINTVL on older systems,
even with TCP_KEEPCNT being a fixed value on those systems.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen
2020-07-01 20:27:10 +02:00
parent 0feb77c260
commit 8ccffddc91
5 changed files with 180 additions and 14 deletions

View File

@ -123,8 +123,11 @@ struct tcphdr {
/*
* User-settable options (used with setsockopt).
*/
#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
#define TCP_MAXSEG 0x04 /* get maximum segment size (r/o on windows) */
#define TCP_FASTOPEN 0x0f /* enable FastOpen on listeners */
#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
#define TCP_KEEPIDLE 0x03 /* start keepalives after this period */
#define TCP_MAXSEG 0x04 /* get maximum segment size (r/o on windows) */
#define TCP_FASTOPEN 0x0f /* enable FastOpen on listeners */
#define TCP_KEEPCNT 0x10 /* number of keepalives before death */
#define TCP_KEEPINTVL 0x11 /* interval between keepalives */
#endif