Skip site navigation (1)Skip section navigation (2)
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>