From 94b49d77a3dc75cff88d041db7e3857201b4b14e Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 16 Dec 2009 04:45:43 +0000 Subject: [PATCH] [OSKITTCP] - Add ROS-specific MSS code - We don't mirror our route cache with oskittcp so we can't rely on routes to get the MTU svn path=/branches/aicom-network-branch/; revision=44619 --- lib/drivers/oskittcp/oskittcp/tcp_input.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/drivers/oskittcp/oskittcp/tcp_input.c b/lib/drivers/oskittcp/oskittcp/tcp_input.c index 175cea40877..1811476e9cf 100644 --- a/lib/drivers/oskittcp/oskittcp/tcp_input.c +++ b/lib/drivers/oskittcp/oskittcp/tcp_input.c @@ -1961,7 +1961,14 @@ tcp_mss(tp, offer) inp = tp->t_inpcb; if ((rt = tcp_rtlookup(inp)) == NULL) { +#ifndef __REACTOS__ tp->t_maxopd = tp->t_maxseg = tcp_mssdflt; +#else + if (offer < tcp_mssdflt) + tp->t_maxopd = tp->t_maxseg = tcp_mssdflt; + else + tp->t_maxopd = tp->t_maxseg = min(offer, tcp_mssopt(tp)); +#endif return; } #ifndef __REACTOS__ @@ -2116,15 +2123,20 @@ int tcp_mssopt(tp) struct tcpcb *tp; { +#ifndef __REACTOS__ struct rtentry *rt; rt = tcp_rtlookup(tp->t_inpcb); if (rt == NULL) return tcp_mssdflt; -#ifndef __REACTOS__ + return rt->rt_ifp->if_mtu - sizeof(struct tcpiphdr); #else - return tcp_mssdflt; + struct ifaddr *ifa = ifa_ifwithnet((struct sockaddr *)&tp->t_inpcb->inp_faddr); + if (ifa == NULL) + return tcp_mssdflt; + + return ifa->ifa_mtu - sizeof(struct tcpiphdr); #endif } #endif /* TUBA_INCLUDE */