From owner-freebsd-hackers Wed Jan 29 11:25:15 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id LAA16690 for hackers-outgoing; Wed, 29 Jan 1997 11:25:15 -0800 (PST) Received: from whistle.com (s205m131.whistle.com [207.76.205.131]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id LAA16683 for ; Wed, 29 Jan 1997 11:25:13 -0800 (PST) Received: (from smap@localhost) by whistle.com (8.7.5/8.6.12) id LAA17413; Wed, 29 Jan 1997 11:24:39 -0800 (PST) Received: from bubba.whistle.com(207.76.205.7) by whistle.com via smap (V1.3) id sma017409; Wed Jan 29 11:24:32 1997 Received: (from archie@localhost) by bubba.whistle.com (8.7.5/8.6.12) id LAA24150; Wed, 29 Jan 1997 11:24:32 -0800 (PST) From: Archie Cobbs Message-Id: <199701291924.LAA24150@bubba.whistle.com> Subject: Re: ipdivert & masqd In-Reply-To: <199701291733.KAA12218@phaeton.artisoft.com> from Terry Lambert at "Jan 29, 97 10:33:35 am" To: terry@lambert.org (Terry Lambert) Date: Wed, 29 Jan 1997 11:24:32 -0800 (PST) Cc: archie@whistle.com, ari.suutari@ps.carel.fi, brian@awfulhak.demon.co.uk, hackers@freebsd.org, cmott@srv.net X-Mailer: ELM [version 2.4ME+ PL25 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk > > > I did some investigations in the kernel land (not being > > > any expert on that), but it seemed like the ip_divert_ignore > > > flag was still set (from processing a outgoing packet) when > > > an incoming packet arrived. > > > > Can I get a quick sanity check on something... the divert code is > > programmed under the assumption that ip_input() and ip_output() > > can never sleep (ie., no other packet can be treated before the > > function returns). This is true, right? > > For the divert handler, you mean? Yes. Then I don't understand how ip_divert_ignore can ever be incorrectly set (ie., non-zero)... if you look at ip_divert.c, you see the only place that it is ever set to a non-zero value is before the outgoing packet is delivered, via a call to ether ip_input() or ip_output() (in the function div_output()). Then it gets reset to zero after either of these functions returns. Am I missing some subtlety in there? -Archie ___________________________________________________________________________ Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com