[OSKITTCP]
authorCameron Gutman <aicommander@gmail.com>
Wed, 16 Dec 2009 04:45:43 +0000 (04:45 +0000)
committerCameron Gutman <aicommander@gmail.com>
Wed, 16 Dec 2009 04:45:43 +0000 (04:45 +0000)
 - 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

index 175cea4..1811476 100644 (file)
@@ -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 */