diff options
author | ume <ume@FreeBSD.org> | 2003-10-20 15:27:48 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2003-10-20 15:27:48 +0000 |
commit | 1bfb4986099befab26dc0c1e40e47e89f92f62fb (patch) | |
tree | 9f0a5ced322cdbe6ab2dbce0993f3b61ac529326 /sys/netinet/tcp_input.c | |
parent | 1ebf2012445124bd775073056a9019ead10872fa (diff) | |
download | FreeBSD-src-1bfb4986099befab26dc0c1e40e47e89f92f62fb.zip FreeBSD-src-1bfb4986099befab26dc0c1e40e47e89f92f62fb.tar.gz |
correct linkmtu handling.
Obtained from: KAME
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r-- | sys/netinet/tcp_input.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 9d8d733..a72906a 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -2711,12 +2711,16 @@ tcp_mss(tp, offer) if (rt->rt_rmx.rmx_mtu) mss = rt->rt_rmx.rmx_mtu - min_protoh; else { +#ifdef INET6 + mss = (isipv6 ? IN6_LINKMTU(rt->rt_ifp) : ifp->if_mtu) + - min_protoh; +#else + mss = ifp->if_mtu - min_protoh; +#endif if (isipv6) { - mss = ND_IFINFO(rt->rt_ifp)->linkmtu - min_protoh; if (!in6_localaddr(&inp->in6p_faddr)) mss = min(mss, tcp_v6mssdflt); } else { - mss = ifp->if_mtu - min_protoh; if (!in_localaddr(inp->inp_faddr)) mss = min(mss, tcp_mssdflt); } @@ -2834,7 +2838,12 @@ tcp_mssopt(tp) if (rt == NULL) return (isipv6 ? tcp_v6mssdflt : tcp_mssdflt); +#ifdef INET6 + return (isipv6 ? IN6_LINKMTU(rt->rt_ifp) : + rt->rt_ifp->if_mtu - min_protoh); +#else return (rt->rt_ifp->if_mtu - min_protoh); +#endif } |