svn commit: r317286 - stable/11/sys/netinet
Mike Karels
karels at FreeBSD.org
Sat Apr 22 18:55:27 UTC 2017
Author: karels
Date: Sat Apr 22 18:55:25 2017
New Revision: 317286
URL: https://svnweb.freebsd.org/changeset/base/317286
Log:
MFC r316065: 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
Modified:
stable/11/sys/netinet/tcp_output.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/netinet/tcp_output.c
==============================================================================
--- stable/11/sys/netinet/tcp_output.c Sat Apr 22 18:43:15 2017 (r317285)
+++ stable/11/sys/netinet/tcp_output.c Sat Apr 22 18:55:25 2017 (r317286)
@@ -1365,9 +1365,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.
@@ -1399,13 +1396,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)
More information about the svn-src-stable-11
mailing list