summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_reass.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2003-10-20 15:27:48 +0000
committerume <ume@FreeBSD.org>2003-10-20 15:27:48 +0000
commit1bfb4986099befab26dc0c1e40e47e89f92f62fb (patch)
tree9f0a5ced322cdbe6ab2dbce0993f3b61ac529326 /sys/netinet/tcp_reass.c
parent1ebf2012445124bd775073056a9019ead10872fa (diff)
downloadFreeBSD-src-1bfb4986099befab26dc0c1e40e47e89f92f62fb.zip
FreeBSD-src-1bfb4986099befab26dc0c1e40e47e89f92f62fb.tar.gz
correct linkmtu handling.
Obtained from: KAME
Diffstat (limited to 'sys/netinet/tcp_reass.c')
-rw-r--r--sys/netinet/tcp_reass.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index 9d8d733..a72906a 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.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
}
OpenPOWER on IntegriCloud