- * Saying tp->rcv_nxt-1 lies about what
- * we have received, and by the protocol spec
- * requires the correspondent TCP to respond.
- * Saying tp->snd_una-1 causes the transmitted
- * byte to lie outside the receive window; this
- * is important because we don't necessarily
- * have a byte in the window to send (consider
- * a one-way stream!)
+ * Send a packet designed to force a response
+ * if the peer is up and reachable:
+ * either an ACK if the connection is still alive,
+ * or an RST if the peer has closed the connection
+ * due to timeout or reboot.
+ * Using sequence number tp->snd_una-1
+ * causes the transmitted zero-length segment
+ * to lie outside the receive window;
+ * by the protocol spec, this requires the
+ * correspondent TCP to respond.
+ */
+ tcpstat.tcps_keepprobe++;
+#ifdef TCP_COMPAT_42
+ /*
+ * The keepalive packet must have nonzero length
+ * to get a 4.2 host to respond.