Author: cgutman Date: Wed Dec 16 05:45:43 2009 New Revision: 44619
URL: http://svn.reactos.org/svn/reactos?rev=44619&view=rev Log: [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
Modified: branches/aicom-network-branch/lib/drivers/oskittcp/oskittcp/tcp_input.c
Modified: branches/aicom-network-branch/lib/drivers/oskittcp/oskittcp/tcp_input.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-branch/lib/drivers... ============================================================================== --- branches/aicom-network-branch/lib/drivers/oskittcp/oskittcp/tcp_input.c [iso-8859-1] (original) +++ branches/aicom-network-branch/lib/drivers/oskittcp/oskittcp/tcp_input.c [iso-8859-1] Wed Dec 16 05:45:43 2009 @@ -1961,7 +1961,14 @@
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 @@ 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 */