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>