summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_timewait.c
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1995-09-18 15:51:40 +0000
committerwollman <wollman@FreeBSD.org>1995-09-18 15:51:40 +0000
commitea496cc61fd7886ad990ab3876ac97ea2530a3bd (patch)
treea92a58dd9752cf0410e2259213d11cb51ddbbe3f /sys/netinet/tcp_timewait.c
parent6b2ee7716a791402c70fcb7985e3e55f11fda156 (diff)
downloadFreeBSD-src-ea496cc61fd7886ad990ab3876ac97ea2530a3bd.zip
FreeBSD-src-ea496cc61fd7886ad990ab3876ac97ea2530a3bd.tar.gz
Initial back-end support for IP MTU discovery, gated on MTUDISC. The support
for TCP has yet to be written.
Diffstat (limited to 'sys/netinet/tcp_timewait.c')
-rw-r--r--sys/netinet/tcp_timewait.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index cf0fc40..be84884 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_subr.c 8.1 (Berkeley) 6/10/93
- * $Id: tcp_subr.c,v 1.12 1995/06/19 16:45:33 wollman Exp $
+ * $Id: tcp_subr.c,v 1.13 1995/06/29 18:11:23 wollman Exp $
*/
#include <sys/param.h>
@@ -429,6 +429,10 @@ tcp_notify(inp, error)
sowwakeup(so);
}
+#ifdef MTUDISC
+static void tcp_mtudisc __P((struct inpcb *, int));
+#endif /* MTUDISC */
+
void
tcp_ctlinput(cmd, sa, ip)
int cmd;
@@ -440,6 +444,10 @@ tcp_ctlinput(cmd, sa, ip)
if (cmd == PRC_QUENCH)
notify = tcp_quench;
+#ifdef MTUDISC
+ else if (cmd == PRC_MSGSIZE)
+ notify = tcp_mtudisc;
+#endif /* MTUDISC */
else if (!PRC_IS_REDIRECT(cmd) &&
((unsigned)cmd > PRC_NCMDS || inetctlerrmap[cmd] == 0))
return;
@@ -466,6 +474,26 @@ tcp_quench(inp, errno)
tp->snd_cwnd = tp->t_maxseg;
}
+#ifdef MTUDISC
+/*
+ * When `need fragmentation' ICMP is received, update our idea of the MSS
+ * based on the new value in the route. Also nudge TCP to send something,
+ * since we know the packet we just sent was dropped.
+ */
+static void
+tcp_mtudisc(inp, errno)
+ struct inpcb *inp;
+ int errno;
+{
+ struct tcpcb *tp = intotcpcb(inp);
+
+#if 0
+ if (tp)
+ ; /* XXX implement */
+#endif
+}
+#endif /* MTUDISC */
+
/*
* Look-up the routing entry to the peer of this inpcb. If no route
* is found and it cannot be allocated the return NULL. This routine
OpenPOWER on IntegriCloud