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>