diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2001-11-02 21:42:20 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2001-11-02 21:42:20 +0000 |
commit | 43739d5627bfaae5b52258de039493419d1f56c8 (patch) | |
tree | f29029802c81bd38490c21c7f4af788f69d22f67 | |
parent | fc4af49fd96115592fe1f74be09051e1f1d69061 (diff) |
fix multicast loopback checksums; goeran@cdg.chalmers.se, ok angelos
-rw-r--r-- | sys/netinet/ip_output.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c index 7e0522e2f75..0ffeaab75e2 100644 --- a/sys/netinet/ip_output.c +++ b/sys/netinet/ip_output.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ip_output.c,v 1.137 2001/08/26 21:12:06 niklas Exp $ */ +/* $OpenBSD: ip_output.c,v 1.138 2001/11/02 21:42:19 deraadt Exp $ */ /* $NetBSD: ip_output.c,v 1.28 1996/02/13 23:43:07 christos Exp $ */ /* @@ -452,7 +452,15 @@ ip_output(m0, va_alist) * If we belong to the destination multicast group * on the outgoing interface, and the caller did not * forbid loopback, loop back a copy. + * Can't defer TCP/UDP checksumming, do the + * computation now. */ + if (m->m_pkthdr.csum & + (M_TCPV4_CSUM_OUT | M_UDPV4_CSUM_OUT)) { + in_delayed_cksum(m); + m->m_pkthdr.csum &= + ~(M_UDPV4_CSUM_OUT | M_TCPV4_CSUM_OUT); + } ip_mloopback(ifp, m, dst); } #ifdef MROUTING |