aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2015-11-15 16:02:22 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2015-11-15 16:02:22 +0000
commit637670e77eadf1a2d658bfecc235eddd501457ba (patch)
tree2007ca470fccad475eebaf359ac3472a41e3b39d
parentc1c9ab670703ff3f857a2c6913793aa500bad826 (diff)
downloadsrc-637670e77eadf1a2d658bfecc235eddd501457ba.tar.gz
src-637670e77eadf1a2d658bfecc235eddd501457ba.zip
Bring back the ability of passing cached route via nd6_output_ifp().
Notes
Notes: svn path=/head/; revision=290867
-rw-r--r--sys/netinet6/ip6_forward.c2
-rw-r--r--sys/netinet6/ip6_output.c4
-rw-r--r--sys/netinet6/nd6.c6
-rw-r--r--sys/netinet6/nd6.h2
-rw-r--r--sys/netpfil/pf/pf.c2
5 files changed, 8 insertions, 8 deletions
diff --git a/sys/netinet6/ip6_forward.c b/sys/netinet6/ip6_forward.c
index 9df8e4c9dc04..5f794db3a003 100644
--- a/sys/netinet6/ip6_forward.c
+++ b/sys/netinet6/ip6_forward.c
@@ -571,7 +571,7 @@ pass:
goto bad;
}
- error = nd6_output_ifp(rt->rt_ifp, origifp, m, dst);
+ error = nd6_output_ifp(rt->rt_ifp, origifp, m, dst, NULL);
if (error) {
in6_ifstat_inc(rt->rt_ifp, ifs6_out_discard);
IP6STAT_INC(ip6s_cantforward);
diff --git a/sys/netinet6/ip6_output.c b/sys/netinet6/ip6_output.c
index 181340f0c771..778f39dab438 100644
--- a/sys/netinet6/ip6_output.c
+++ b/sys/netinet6/ip6_output.c
@@ -935,7 +935,7 @@ passout:
m->m_pkthdr.len);
ifa_free(&ia6->ia_ifa);
}
- error = nd6_output_ifp(ifp, origifp, m, dst);
+ error = nd6_output_ifp(ifp, origifp, m, dst, NULL);
goto done;
}
@@ -1034,7 +1034,7 @@ sendorfree:
counter_u64_add(ia->ia_ifa.ifa_obytes,
m->m_pkthdr.len);
}
- error = nd6_output_ifp(ifp, origifp, m, dst);
+ error = nd6_output_ifp(ifp, origifp, m, dst, NULL);
} else
m_freem(m);
}
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c
index b3fe0025e1f8..8ead8732454b 100644
--- a/sys/netinet6/nd6.c
+++ b/sys/netinet6/nd6.c
@@ -1905,7 +1905,7 @@ nd6_grab_holdchain(struct llentry *ln, struct mbuf **chain,
int
nd6_output_ifp(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *m,
- struct sockaddr_in6 *dst)
+ struct sockaddr_in6 *dst, struct route *ro)
{
int error;
int ip6len;
@@ -1944,7 +1944,7 @@ nd6_output_ifp(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *m,
if ((ifp->if_flags & IFF_LOOPBACK) == 0)
origifp = ifp;
- error = (*ifp->if_output)(origifp, m, (struct sockaddr *)dst, NULL);
+ error = (*ifp->if_output)(origifp, m, (struct sockaddr *)dst, ro);
return (error);
}
@@ -2192,7 +2192,7 @@ nd6_flush_holdchain(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *chain
while (m_head) {
m = m_head;
m_head = m_head->m_nextpkt;
- error = nd6_output_ifp(ifp, origifp, m, dst);
+ error = nd6_output_ifp(ifp, origifp, m, dst, NULL);
}
/*
diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h
index 4c39a09ca0be..8a0a56e1b7f0 100644
--- a/sys/netinet6/nd6.h
+++ b/sys/netinet6/nd6.h
@@ -422,7 +422,7 @@ int nd6_flush_holdchain(struct ifnet *, struct ifnet *, struct mbuf *,
int nd6_add_ifa_lle(struct in6_ifaddr *);
void nd6_rem_ifa_lle(struct in6_ifaddr *, int);
int nd6_output_ifp(struct ifnet *, struct ifnet *, struct mbuf *,
- struct sockaddr_in6 *);
+ struct sockaddr_in6 *, struct route *);
/* nd6_nbr.c */
void nd6_na_input(struct mbuf *, int, int);
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
index 762b82edc8ac..57e78e8498d6 100644
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -5588,7 +5588,7 @@ pf_route6(struct mbuf **m, struct pf_rule *r, int dir, struct ifnet *oifp,
if (IN6_IS_SCOPE_EMBED(&dst.sin6_addr))
dst.sin6_addr.s6_addr16[1] = htons(ifp->if_index);
if ((u_long)m0->m_pkthdr.len <= ifp->if_mtu)
- nd6_output_ifp(ifp, ifp, m0, &dst);
+ nd6_output_ifp(ifp, ifp, m0, &dst, NULL);
else {
in6_ifstat_inc(ifp, ifs6_in_toobig);
if (r->rt != PF_DUPTO)