Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/nd6.c
Show First 20 Lines • Show All 2,498 Lines • ▼ Show 20 Lines | nd6_resolve_addr(struct ifnet *ifp, int flags, const struct sockaddr *dst, | ||||
return (error); | return (error); | ||||
} | } | ||||
int | int | ||||
nd6_flush_holdchain(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *chain, | nd6_flush_holdchain(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *chain, | ||||
struct sockaddr_in6 *dst) | struct sockaddr_in6 *dst) | ||||
{ | { | ||||
struct mbuf *m, *m_head; | struct mbuf *m, *m_head; | ||||
struct ifnet *outifp; | |||||
int error = 0; | int error = 0; | ||||
m_head = chain; | m_head = chain; | ||||
if ((ifp->if_flags & IFF_LOOPBACK) != 0) | |||||
outifp = origifp; | |||||
else | |||||
outifp = ifp; | |||||
while (m_head) { | while (m_head) { | ||||
m = m_head; | m = m_head; | ||||
m_head = m_head->m_nextpkt; | m_head = m_head->m_nextpkt; | ||||
error = nd6_output_ifp(ifp, origifp, m, dst, NULL); | error = nd6_output_ifp(ifp, origifp, m, dst, NULL); | ||||
vangyzen: I'm not familiar with this, but I wonder if `outifp` should be used here instead of `ifp`. Can… | |||||
} | } | ||||
/* | /* | ||||
* XXX | * XXX | ||||
* note that intermediate errors are blindly ignored | * note that intermediate errors are blindly ignored | ||||
*/ | */ | ||||
return (error); | return (error); | ||||
} | } | ||||
static int | static int | ||||
nd6_need_cache(struct ifnet *ifp) | nd6_need_cache(struct ifnet *ifp) | ||||
{ | { | ||||
/* | /* | ||||
* XXX: we currently do not make neighbor cache on any interface | * XXX: we currently do not make neighbor cache on any interface | ||||
* other than ARCnet, Ethernet, FDDI and GIF. | * other than ARCnet, Ethernet, FDDI and GIF. | ||||
* | * | ||||
▲ Show 20 Lines • Show All 228 Lines • Show Last 20 Lines |
I'm not familiar with this, but I wonder if outifp should be used here instead of ifp. Can someone from network comment?