Date: Wed, 14 Mar 2001 10:50:01 +0900 From: Jun Kuriyama <kuriyama@imgsrc.co.jp> To: Luigi Rizzo <luigi@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/net if_ethersubr.c Message-ID: <7mwv9tnmpi.wl@waterblue.imgsrc.co.jp> In-Reply-To: <200103132200.f2DM0Xc88870@freefall.freebsd.org> References: <200103132200.f2DM0Xc88870@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--Multipart_Wed_Mar_14_10:50:01_2001-1
Content-Type: text/plain; charset=US-ASCII
At Tue, 13 Mar 2001 14:00:33 -0800 (PST),
Luigi Rizzo wrote:
> Fix breakage in bridging introduced in 1.70.2.13:
> when doing bridging, we want to receive packets from all
> interfaces in the same cluster, so the MAC address check
> does not apply (it is already done in the bridging functions).
Thanks! With your update and Itojun's patch (obtained from KAME
repository), I can finally assign IPv6 address via rtsol.
I think we should apply attached patch before 4.3. Without this, we
cannot receive RA if bridging is enabled.
--
Jun Kuriyama <kuriyama@imgsrc.co.jp> // IMG SRC, Inc.
<kuriyama@FreeBSD.org> // FreeBSD Project
--Multipart_Wed_Mar_14_10:50:01_2001-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="ip6_input.c.diff"
Content-Transfer-Encoding: 7bit
Index: ip6_input.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet6/ip6_input.c,v
retrieving revision 1.11.2.3
diff -u -r1.11.2.3 ip6_input.c
--- ip6_input.c 2001/03/04 21:09:47 1.11.2.3
+++ ip6_input.c 2001/03/14 01:35:53
@@ -263,7 +263,33 @@
ip6stat.ip6s_total++;
#ifndef PULLDOWN_TEST
- /* XXX is the line really necessary? */
+ /*
+ * L2 bridge code and some other code can return mbuf chain
+ * that does not conform to KAME requirement. too bad.
+ * XXX: fails to join if interface MTU > MCLBYTES. jumbogram?
+ */
+ if (m && m->m_next != NULL && m->m_pkthdr.len < MCLBYTES) {
+ struct mbuf *n;
+
+ MGETHDR(n, M_DONTWAIT, MT_HEADER);
+ if (n && m->m_pkthdr.len > MHLEN) {
+ MCLGET(n, M_DONTWAIT);
+ if ((n->m_flags & M_EXT) == 0) {
+ m_freem(n);
+ n = NULL;
+ }
+ }
+ if (!n)
+ return; /*ENOBUFS*/
+
+ m_copydata(m, 0, m->m_pkthdr.len, mtod(n, caddr_t));
+ n->m_pkthdr = m->m_pkthdr;
+ n->m_len = m->m_pkthdr.len;
+ n->m_pkthdr.aux = m->m_pkthdr.aux;
+ m->m_pkthdr.aux = (struct mbuf *)NULL;
+ m_freem(m);
+ m = n;
+ }
IP6_EXTHDR_CHECK(m, 0, sizeof(struct ip6_hdr), /*nothing*/);
#endif
--Multipart_Wed_Mar_14_10:50:01_2001-1--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7mwv9tnmpi.wl>
