diff options
author | Renato Botelho <renato@netgate.com> | 2016-09-23 08:13:13 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2016-09-23 08:13:13 -0300 |
commit | d28ed6dad4ec5b92e6814ad0e35363797ff4e5fc (patch) | |
tree | 9479c74c340b7aa161821ad20c16214b1bcc8736 /sys/netinet6 | |
parent | 4f13960fb31cfa7bc3bc3c32ee15aa549835e257 (diff) | |
parent | 770fd2290bb6cf4a2d04e3565c90a4ca036bf546 (diff) | |
download | FreeBSD-src-d28ed6dad4ec5b92e6814ad0e35363797ff4e5fc.zip FreeBSD-src-d28ed6dad4ec5b92e6814ad0e35363797ff4e5fc.tar.gz |
Merge remote-tracking branch 'origin/stable/11' into devel-11
Diffstat (limited to 'sys/netinet6')
-rw-r--r-- | sys/netinet6/ip6_output.c | 10 | ||||
-rw-r--r-- | sys/netinet6/udp6_usrreq.c | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c index f31679e..2b0e50d 100644 --- a/sys/netinet6/ip6_output.c +++ b/sys/netinet6/ip6_output.c @@ -87,6 +87,7 @@ __FBSDID("$FreeBSD$"); #include <net/if.h> #include <net/if_var.h> +#include <net/if_llatbl.h> #include <net/netisr.h> #include <net/route.h> #include <net/pfil.h> @@ -552,6 +553,9 @@ again: rt = ro->ro_rt; ifp = ro->ro_rt->rt_ifp; } else { + if (ro->ro_lle) + LLE_FREE(ro->ro_lle); /* zeros ro_lle */ + ro->ro_lle = NULL; if (fwd_tag == NULL) { bzero(&dst_sa, sizeof(dst_sa)); dst_sa.sin6_family = AF_INET6; @@ -821,6 +825,9 @@ again: } else { RO_RTFREE(ro); needfiblookup = 1; /* Redo the routing table lookup. */ + if (ro->ro_lle) + LLE_FREE(ro->ro_lle); /* zeros ro_lle */ + ro->ro_lle = NULL; } } /* See if fib was changed by packet filter. */ @@ -829,6 +836,9 @@ again: fibnum = M_GETFIB(m); RO_RTFREE(ro); needfiblookup = 1; + if (ro->ro_lle) + LLE_FREE(ro->ro_lle); /* zeros ro_lle */ + ro->ro_lle = NULL; } if (needfiblookup) goto again; diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c index 0904e86..b44fb9e 100644 --- a/sys/netinet6/udp6_usrreq.c +++ b/sys/netinet6/udp6_usrreq.c @@ -898,7 +898,7 @@ udp6_output(struct inpcb *inp, struct mbuf *m, struct sockaddr *addr6, UDP_PROBE(send, NULL, inp, ip6, inp, udp6); UDPSTAT_INC(udps_opackets); - error = ip6_output(m, optp, NULL, flags, + error = ip6_output(m, optp, &inp->inp_route6, flags, inp->in6p_moptions, NULL, inp); break; case AF_INET: |