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
MFC after:	1 week
This commit is contained in:
Andrey V. Elsukov 2015-05-07 14:17:43 +00:00
parent 415bcd89a6
commit 654bdb5abb

View File

@ -2900,14 +2900,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.
@ -2915,7 +2907,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);
}