From owner-freebsd-arch@FreeBSD.ORG Tue Feb 19 18:45:05 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56D3316A418 for ; Tue, 19 Feb 2008 18:45:05 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outT.internet-mail-service.net (outT.internet-mail-service.net [216.240.47.243]) by mx1.freebsd.org (Postfix) with ESMTP id 39E3913C4CE for ; Tue, 19 Feb 2008 18:45:05 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.40) with ESMTP; Tue, 19 Feb 2008 10:45:04 -0800 Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id 40E011272A2; Tue, 19 Feb 2008 10:45:04 -0800 (PST) Message-ID: <47BB23B7.9050007@elischer.org> Date: Tue, 19 Feb 2008 10:45:11 -0800 From: Julian Elischer User-Agent: Thunderbird 2.0.0.9 (Macintosh/20071031) MIME-Version: 1.0 To: =?UTF-8?B?RGFnLUVybGluZyBTbcO4cmdyYXY=?= References: <86odacc04t.fsf@ds4.des.no> In-Reply-To: <86odacc04t.fsf@ds4.des.no> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Cc: arch@freebsd.org Subject: Re: dev.* analogue for interfaces X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Feb 2008 18:45:05 -0000 Dag-Erling Smørgrav wrote: > Four years ago, I created the dev.* sysctl tree for device drivers. > Every time a device is registered, a sysctl context is automatically > created, and a node is created under dev (e.g. dev.cpu.0), with some > standardized nodes under it (%driver, %parent, %desc etc.) plus any node > the driver - or even another driver - wants to add. > > However, not everything in Unix is a device. Specifically, network > interfaces aren't. > > Some network interfaces are also devices, so they have a sysctl node in > dev.*: > > % sysctl dev.msk > dev.msk.0.%desc: Marvell Technology Group Ltd. Yukon EC Ultra Id 0xb4 Rev 0x02 > dev.msk.0.%driver: msk > dev.msk.0.%parent: mskc0 > > Others don't: bridge, faith, lo, pflog, vlan etc. > > What I propose is to add a similar sysctl tree for interfaces. It would > look a little different. For instance, some interfaces (bridge, vlan) > have parents or children, but most don't. > > Just as it is for devices, creation and destruction of the interface's > sysctl node and context would be hidden inside if_{attach,detach}() and > completely transparent to the driver, and there will be an API that > drivers can use if they want to add their own nodes. > > Since interfaces don't all have parents, the API will include a function > to specify one for those that do. > > This is *not* intended to replace ifconfig; it is intended for infor- > mation which isn't available through ifconfig and which it wouldn't be > natural to place there. For instance, every wlan interface already has > a sysctl tree under net.wlan. > > Drivers that already have sysctl nodes will require less code to create > them, and no code at all to destroy them, since if_detach() will take > care of that (all nodes in the interface's context are automatically > destroyed when the context is destroyed). > > I'm unsure whether this should go under net.if, or just if. I think I > prefer the latter. > > I'm open to objections and suggestions... the usual things apply: a) If you do the work most people would go along. :-) b) being able to compile it without the bloat might be a good idea for embeded systems. > > DES