Date: Mon, 3 Dec 2001 19:30:01 -0800 (PST) From: Bill Fenner <fenner@research.att.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/31954: rwhod does not see itself via xl0 Message-ID: <200112040330.fB43U1922166@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/31954; it has been noted by GNATS.
From: Bill Fenner <fenner@research.att.com>
To: freebsd-gnats-submit@freebsd.org, marcolz@ilse.nl
Cc: jlemon@freebsd.org
Subject: Re: kern/31954: rwhod does not see itself via xl0
Date: Mon, 3 Dec 2001 19:23:25 -0800 (PST)
It turns out that when a broadcast packet is looped back, the checksums
are checked on the way in even if they were not calculated on the
way out. This patch works for me; would you mind trying it?
Thanks,
Bill
cvs diff: Diffing .
Index: if_ethersubr.c
===================================================================
RCS file: /home/ncvs/src/sys/net/if_ethersubr.c,v
retrieving revision 1.70.2.19
diff -u -r1.70.2.19 if_ethersubr.c
--- if_ethersubr.c 2001/11/04 22:32:16 1.70.2.19
+++ if_ethersubr.c 2001/12/04 03:15:34
@@ -331,12 +331,25 @@
* reasons and compatibility with the original behavior.
*/
if ((ifp->if_flags & IFF_SIMPLEX) && (loop_copy != -1)) {
+ int csum_flags = 0;
+
+ if (m->m_pkthdr.csum_flags & CSUM_IP)
+ csum_flags |= (CSUM_IP_CHECKED|CSUM_IP_VALID);
+ if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA)
+ csum_flags |= (CSUM_DATA_VALID|CSUM_PSEUDO_HDR);
if ((m->m_flags & M_BCAST) || (loop_copy > 0)) {
struct mbuf *n = m_copy(m, 0, (int)M_COPYALL);
+ n->m_pkthdr.csum_flags |= csum_flags;
+ if (csum_flags & CSUM_DATA_VALID)
+ n->m_pkthdr.csum_data = 0xffff;
+
(void) if_simloop(ifp, n, dst->sa_family, hlen);
} else if (bcmp(eh->ether_dhost,
eh->ether_shost, ETHER_ADDR_LEN) == 0) {
+ m->m_pkthdr.csum_flags |= csum_flags;
+ if (csum_flags & CSUM_DATA_VALID)
+ m->m_pkthdr.csum_data = 0xffff;
(void) if_simloop(ifp, m, dst->sa_family, hlen);
return (0); /* XXX */
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200112040330.fB43U1922166>
