From owner-freebsd-net@FreeBSD.ORG Wed Sep 3 13:27:35 2003 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0301E16A4BF for ; Wed, 3 Sep 2003 13:27:35 -0700 (PDT) Received: from ajax.cs.uga.edu (ajax.cs.uga.edu [128.192.251.3]) by mx1.FreeBSD.org (Postfix) with ESMTP id F191443FE9 for ; Wed, 3 Sep 2003 13:27:33 -0700 (PDT) (envelope-from yan@cs.uga.edu) Received: from atlas.cs.uga.edu (atlas [128.192.251.4]) by ajax.cs.uga.edu (8.9.3/8.9.3) with ESMTP id QAA06233; Wed, 3 Sep 2003 16:27:31 -0400 (EDT) Received: from localhost (yan@localhost) by atlas.cs.uga.edu (8.9.3/8.9.3) with ESMTP id QAA03327; Wed, 3 Sep 2003 16:27:39 -0400 (EDT) X-Authentication-Warning: atlas.cs.uga.edu: yan owned process doing -bs Date: Wed, 3 Sep 2003 16:27:39 -0400 (EDT) From: Haijin Yan To: Max Laier In-Reply-To: <00f001c37258$48bcb100$01000001@max900> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-net@freebsd.org Subject: Re: ip_forward() crash X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Sep 2003 20:27:35 -0000 Hi, I used m_copym() to copy the incoming mbuf and tested to make sure it returned a valid mbuf. then I changed the tcp ip header and the checksum. then I ip_forward() the cloned mbuf followed by ip_forward() the orignal one. I have even wrapped ip_forward() with splnet() but still it crash the kernel. However, if I put the m_copy and ip_forward() into a timeout procedure, it works. Thanks, -Haijin ----------------------------------------------------------- static void live(byte food, short sleep, const double work) { for(;;) future = NULL; } --------------------- On Wed, 3 Sep 2003, Max Laier wrote: > So this page fault happens where? Maybe you want m_dup() rather than > m_copypacket() - esp. in case you get the page fault when trying to modify > the packet before sending it back to the sender. > > Max > > > Hi, > > I am using freebsd 4.5 and in the ip_input.c at the place > > where IP decides to forward a mbuf not destined to itself, > > I added one of my function which included a call of ip_forward() to send > > out a my m_copyed mbuf to the sender. so basically there are two calls to > > ip_forward(), one is to relay mbuf from the sender and the other is > > forward back a copy of it. However, this behavior crashed my freebsd with > > trap 12 saying page fault in kernel. Does anyone have the same experience > > and know what's wrong with this? > > > > Any suggestion is highly appreciated. > > please cc to me because I am not on the list. > > > > Thanks, > > > > -Haijin Yan > >