BUILD: tcp: condition TCP keepalive settings to platforms providing them

Previous commit b24bc0d ("MINOR: tcp: Support TCP keepalive parameters
customization") broke non-Linux builds as TCP_KEEP{CNT,IDLE,INTVL} are
not necessarily defined elsewhere.

This patch adds the required #ifdefs to condition the visibility of the
keywords, and adds a mention in the doc about their dependency on Linux.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 0fdb944..b772c88 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -382,14 +382,20 @@
 	if (be->options & PR_O_TCP_SRV_KA) {
 		setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof(one));
 
+#ifdef TCP_KEEPCNT
 		if (be->srvtcpka_cnt)
 			setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &be->srvtcpka_cnt, sizeof(be->srvtcpka_cnt));
+#endif
 
+#ifdef TCP_KEEPIDLE
 		if (be->srvtcpka_idle)
 			setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &be->srvtcpka_idle, sizeof(be->srvtcpka_idle));
+#endif
 
+#ifdef TCP_KEEPINTVL
 		if (be->srvtcpka_intvl)
 			setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &be->srvtcpka_intvl, sizeof(be->srvtcpka_intvl));
+#endif
 	}
 
 	/* allow specific binding :
diff --git a/src/proxy.c b/src/proxy.c
index a03cbd0..3e42370 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -570,6 +570,7 @@
 	return 0;
 }
 
+#ifdef TCP_KEEPCNT
 /* This function parses "{cli|srv}tcpka-cnt" statements */
 static int proxy_parse_tcpka_cnt(char **args, int section, struct proxy *proxy,
                                     struct proxy *defpx, const char *file, int line,
@@ -614,7 +615,9 @@
 
 	return retval;
 }
+#endif
 
+#ifdef TCP_KEEPIDLE
 /* This function parses "{cli|srv}tcpka-idle" statements */
 static int proxy_parse_tcpka_idle(char **args, int section, struct proxy *proxy,
                                   struct proxy *defpx, const char *file, int line,
@@ -668,7 +671,9 @@
 
 	return retval;
 }
+#endif
 
+#ifdef TCP_KEEPINTVL
 /* This function parses "{cli|srv}tcpka-intvl" statements */
 static int proxy_parse_tcpka_intvl(char **args, int section, struct proxy *proxy,
 		                   struct proxy *defpx, const char *file, int line,
@@ -722,6 +727,7 @@
 
 	return retval;
 }
+#endif
 
 /* This function inserts proxy <px> into the tree of known proxies. The proxy's
  * name is used as the storing key so it must already have been initialized.
@@ -1828,12 +1834,18 @@
 	{ CFG_LISTEN, "max-keep-alive-queue", proxy_parse_max_ka_queue },
 	{ CFG_LISTEN, "declare", proxy_parse_declare },
 	{ CFG_LISTEN, "retry-on", proxy_parse_retry_on },
+#ifdef TCP_KEEPCNT
 	{ CFG_LISTEN, "clitcpka-cnt", proxy_parse_tcpka_cnt },
-	{ CFG_LISTEN, "clitcpka-idle", proxy_parse_tcpka_idle },
-	{ CFG_LISTEN, "clitcpka-intvl", proxy_parse_tcpka_intvl },
 	{ CFG_LISTEN, "srvtcpka-cnt", proxy_parse_tcpka_cnt },
+#endif
+#ifdef TCP_KEEPIDLE
+	{ CFG_LISTEN, "clitcpka-idle", proxy_parse_tcpka_idle },
 	{ CFG_LISTEN, "srvtcpka-idle", proxy_parse_tcpka_idle },
+#endif
+#ifdef TCP_KEEPINTVL
+	{ CFG_LISTEN, "clitcpka-intvl", proxy_parse_tcpka_intvl },
 	{ CFG_LISTEN, "srvtcpka-intvl", proxy_parse_tcpka_intvl },
+#endif
 	{ 0, NULL, NULL },
 }};
 
diff --git a/src/session.c b/src/session.c
index 51380d6..4fad934 100644
--- a/src/session.c
+++ b/src/session.c
@@ -227,14 +227,20 @@
 		if (p->options & PR_O_TCP_CLI_KA) {
 			setsockopt(cfd, SOL_SOCKET, SO_KEEPALIVE, (char *) &one, sizeof(one));
 
+#ifdef TCP_KEEPCNT
 			if (p->clitcpka_cnt)
 				setsockopt(cfd, IPPROTO_TCP, TCP_KEEPCNT, &p->clitcpka_cnt, sizeof(p->clitcpka_cnt));
+#endif
 
+#ifdef TCP_KEEPIDLE
 			if (p->clitcpka_idle)
 				setsockopt(cfd, IPPROTO_TCP, TCP_KEEPIDLE, &p->clitcpka_idle, sizeof(p->clitcpka_idle));
+#endif
 
+#ifdef TCP_KEEPINTVL
 			if (p->clitcpka_intvl)
 				setsockopt(cfd, IPPROTO_TCP, TCP_KEEPINTVL, &p->clitcpka_intvl, sizeof(p->clitcpka_intvl));
+#endif
 		}
 
 		if (p->options & PR_O_TCP_NOLING)