Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Feb 2001 09:28:18 +0200
From:      Ruslan Ermilov <ru@FreeBSD.ORG>
To:        mouss <usebsd@free.fr>
Cc:        idobarnea@NewMail.Net, hackers@FreeBSD.ORG, andrew@cnsec.co.za
Subject:   Re: Bug in creating ICMP error messages in FreeBSD4.2
Message-ID:  <20010220092818.A25414@sunbay.com>
In-Reply-To: <4.3.0.20010219202101.05cf15a0@pop.free.fr>; from usebsd@free.fr on Mon, Feb 19, 2001 at 08:26:56PM %2B0100
References:  <3a912cee.150.0@NewMail.Net> <4.3.0.20010219202101.05cf15a0@pop.free.fr>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Feb 19, 2001 at 08:26:56PM +0100, mouss wrote:
> At 14:25 19/02/01 +0200, idobarnea@NewMail.Net wrote:
> >Hi,
> >   I encountered the following problem in the 4.2 version.
> >In ip_forward, the following lines intend to save the mbuf in case we want to
> >send ICMP error later:
> >  mcopy = m_copy(m, 0, imin((int)ip->ip_len, 64));
> >  if (mcopy && (mcopy->m_flags & M_EXT))
> >      m_copydata(mcopy, 0, sizeof(struct ip), mtod(mcopy, caddr_t));
> >
> >Later on, before sending the ICMP packet we do:
> >  if (mcopy->m_flags & M_EXT)
> >      m_copyback(mcopy, 0, sizeof(struct ip), mtod(mcopy, caddr_t));
> >
> >The problem as I understand it is that the m_copydata and m_copyback, actually
> >do nothing (It just
> >copies from mcopy to itself).
> 
> I'm speaking from memory, so don't take this for more than it is:)
> 
> As far as I understand:
> m_copym copies the mbuf, but if there is external storage, only pointers
> are copied. so you get two mbuf chains with a common external storage.
> m_copydata will copy the external storage.
> that's why there are both m_copym and m_copydata. so while
>    m_copydata(mcopy, .... (mcopy...))
> is surprising, it's not nothing. it copies the data pointed to in mcopy.
> 
I wrote this code, and the above said is right.


-- 
Ruslan Ermilov		Oracle Developer/DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010220092818.A25414>