From owner-freebsd-net@FreeBSD.ORG Wed Mar 14 11:35:26 2007 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 30F0E16A405 for ; Wed, 14 Mar 2007 11:35:26 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (xorpc.icir.org [192.150.187.68]) by mx1.freebsd.org (Postfix) with ESMTP id 05BD913C46C for ; Wed, 14 Mar 2007 11:35:25 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (localhost [127.0.0.1]) by xorpc.icir.org (8.12.11/8.13.6) with ESMTP id l2EBZ6Zw076696; Wed, 14 Mar 2007 03:35:06 -0800 (PST) (envelope-from rizzo@xorpc.icir.org) Received: (from rizzo@localhost) by xorpc.icir.org (8.12.11/8.12.3/Submit) id l2EBZ6J8076695; Wed, 14 Mar 2007 04:35:06 -0700 (PDT) (envelope-from rizzo) Date: Wed, 14 Mar 2007 04:35:06 -0700 From: Luigi Rizzo To: Yar Tikhiy Message-ID: <20070314043506.A76618@xorpc.icir.org> References: <20070310153534.GA35834@comp.chem.msu.su> <20070313004543.A54774@xorpc.icir.org> <20070314095725.GA1766@comp.chem.msu.su> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <20070314095725.GA1766@comp.chem.msu.su>; from yar@comp.chem.msu.su on Wed, Mar 14, 2007 at 12:57:26PM +0300 Cc: freebsd-net@freebsd.org Subject: Re: Who is to load dummynet.ko? X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 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, 14 Mar 2007 11:35:26 -0000 On Wed, Mar 14, 2007 at 12:57:26PM +0300, Yar Tikhiy wrote: > On Tue, Mar 13, 2007 at 12:45:43AM -0700, Luigi Rizzo wrote: ... > > Making the load on demand would require a bit of additional code because > > it depends on the actual rules being loaded, and the rules are not > > parsed at load time. Plus, i believe that in a case like this > > the decision of which modules to load should be a conscious one > > taken upfront by the system administrator (i.e. end up in rc.conf > > or loader.conf) rather than be the result of the actual ipfw > > configuration. > > Well, I used to stick to this opinion, too, in the good old days. > But today we are growing more and more modularity in our kernel, > and it's a nice feature to have. With a lot of modules, the issue > of double configuration appears: if I want feature FOO, I have to yes this is also try. > add its configuration AND not forget to load the respective module. > It can be a pain as the number of such cases rockets up. Today at > least mount, ifconfig, and netgraph provide for loading modules on > demand, with the former two being system's core components. > > I've just taken a look at the ipfw userland utility code. It notices > a "pipe" or "queue" keyword in its command line rather early, and > it can be a good moment to check and load dummynet.ko. Ditto for actually, i think it is the kernel itself (in the setsockopt handler, once it validates the rule) that should load the module, and not leave the task to the userland utility. Other modules already do this, e.g. iwi loads the firmware autonomously, and maybe even netgraph components do something similar. For dummynet and divert, this can be surely put in the setsockopt handler which is in ipfw.ko - if you need to autoload ipfw.ko, then i am not sure where to put the hooks (in the kernel) but i am pretty confident that there must be a good place. cheers luigi