MFC r282578:

Mark data checksum as valid for multicast packets, that we send back
  to myself via simloop.
  Also remove duplicate check under #ifdef DIAGNOSTIC.

  PR:		180065
This commit is contained in:
ae 2015-05-14 11:47:18 +00:00
parent c595c29b97
commit d29714b5d5

View File

@ -2816,14 +2816,6 @@ ip6_mloopback(struct ifnet *ifp, struct mbuf *m, struct sockaddr_in6 *dst)
if (copym == NULL)
return;
}
#ifdef DIAGNOSTIC
if (copym->m_len < sizeof(*ip6)) {
m_freem(copym);
return;
}
#endif
ip6 = mtod(copym, struct ip6_hdr *);
/*
* clear embedded scope identifiers if necessary.
@ -2831,7 +2823,11 @@ ip6_mloopback(struct ifnet *ifp, struct mbuf *m, struct sockaddr_in6 *dst)
*/
in6_clearscope(&ip6->ip6_src);
in6_clearscope(&ip6->ip6_dst);
if (copym->m_pkthdr.csum_flags & CSUM_DELAY_DATA_IPV6) {
copym->m_pkthdr.csum_flags |= CSUM_DATA_VALID_IPV6 |
CSUM_PSEUDO_HDR;
copym->m_pkthdr.csum_data = 0xffff;
}
(void)if_simloop(ifp, copym, dst->sin6_family, 0);
}