diff options
author | Garrett Wollman <wollman@FreeBSD.org> | 1995-09-18 15:51:40 +0000 |
---|---|---|
committer | Garrett Wollman <wollman@FreeBSD.org> | 1995-09-18 15:51:40 +0000 |
commit | 5cbf3e086c556538a726bb9438b8e4ba0c960ff7 (patch) | |
tree | a92a58dd9752cf0410e2259213d11cb51ddbbe3f /sys/netinet/tcp_subr.c | |
parent | f24b54a614f03dfeacb6c7d0fa82a4ddf011072b (diff) | |
download | src-5cbf3e086c556538a726bb9438b8e4ba0c960ff7.tar.gz src-5cbf3e086c556538a726bb9438b8e4ba0c960ff7.zip |
Initial back-end support for IP MTU discovery, gated on MTUDISC. The support
for TCP has yet to be written.
Notes
Notes:
svn path=/head/; revision=10881
Diffstat (limited to 'sys/netinet/tcp_subr.c')
-rw-r--r-- | sys/netinet/tcp_subr.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index cf0fc40b54f7..be8488412a48 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.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 |