Author: karels
Date: Mon Mar 27 23:48:36 2017
New Revision: 316065
URL: https://svnweb.freebsd.org/changeset/base/316065

Log:
  Enable route and LLE (ndp) caching in TCP/IPv6
  
  tcp_output.c was using a route on the stack for IPv6, which does not
  allow route caching or LLE/ndp caching. Switch to using the route
  (v6 flavor) in the in_pcb, which was already present, which caches
  both L3 and L2 lookups.
  
  Reviewed by:  gnn hiren
  MFC after:    2 weeks

Modified:
  head/sys/netinet/tcp_output.c

Modified: head/sys/netinet/tcp_output.c
==============================================================================
--- head/sys/netinet/tcp_output.c       Mon Mar 27 22:53:36 2017        
(r316064)
+++ head/sys/netinet/tcp_output.c       Mon Mar 27 23:48:36 2017        
(r316065)
@@ -1377,9 +1377,6 @@ send:
         */
 #ifdef INET6
        if (isipv6) {
-               struct route_in6 ro;
-
-               bzero(&ro, sizeof(ro));
                /*
                 * we separately set hoplimit for every segment, since the
                 * user might want to change the value via setsockopt.
@@ -1411,13 +1408,13 @@ send:
 #endif
 
                /* TODO: IPv6 IP6TOS_ECT bit on */
-               error = ip6_output(m, tp->t_inpcb->in6p_outputopts, &ro,
+               error = ip6_output(m, tp->t_inpcb->in6p_outputopts,
+                   &tp->t_inpcb->inp_route6,
                    ((so->so_options & SO_DONTROUTE) ?  IP_ROUTETOIF : 0),
                    NULL, NULL, tp->t_inpcb);
 
-               if (error == EMSGSIZE && ro.ro_rt != NULL)
-                       mtu = ro.ro_rt->rt_mtu;
-               RO_RTFREE(&ro);
+               if (error == EMSGSIZE && tp->t_inpcb->inp_route6.ro_rt != NULL)
+                       mtu = tp->t_inpcb->inp_route6.ro_rt->rt_mtu;
        }
 #endif /* INET6 */
 #if defined(INET) && defined(INET6)
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to