Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Mar 2002 12:31:10 -0800
From:      "Justin C. Walker" <justin@mac.com>
To:        <freebsd-net@FreeBSD.ORG>
Subject:   Re: icmp related question  
Message-ID:  <42D1F914-320A-11D6-BB09-00306544D642@mac.com>
In-Reply-To: <EEEPIOHADNDOEDPNCDHOGEAPCDAA.kshitijgunjikar@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Thursday, March 7, 2002, at 02:05 AM, Kshitij Gunjikar wrote:

> Hi All,
> 	Hi I'm studying code for ICMP .
>
>  there is a piece of code in icmp_input which just returns when we find 
> the
> ICMP packet length lesser than allowed.
>
> 	if (icmplen < ICMP_MINLEN) {
> 		icmpstat.icps_tooshort++;
> 		goto freeit;
> 	}
> 	i = hlen + min(icmplen, ICMP_ADVLENMIN);
> 	if (m->m_len < i && (m = m_pullup(m, i)) == 0)  {
> 		icmpstat.icps_tooshort++;
> 		return;
> 	}
> where #define ICMPADVELMIN (8 + sizeof(struct ip) + 8)
> and icmplen = ip->ip_len ;
>
>
> why the  return? Shouldn't there be a freeing of the msg.i.e call the
> m_freem(m) instead of return ?

If you look at the last 'if' statement, you'll notice that the call to 
m_pullup() has returned NULL, which means that the mbuf has been freed 
already (or, in any case, at this point in the code, there is no mbuf to 
free, due to the assignment).

Regards,

Justin

--
Justin C. Walker, Curmudgeon-At-Large  *
Institute for General Semantics        |   When LuteFisk is outlawed
                                        |   Only outlaws will have
                                        |       LuteFisk
*--------------------------------------*-------------------------------*


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42D1F914-320A-11D6-BB09-00306544D642>