Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Oct 2007 14:41:48 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        Dag-Erling =?utf-8?q?Sm=C3=B8rgrav?= <des@des.no>, m.jakeman@lancaster.ac.uk
Subject:   Re: Sysctl Naming
Message-ID:  <200710111441.48995.jhb@freebsd.org>
In-Reply-To: <86ejg14zrq.fsf@ds4.des.no>
References:  <200710111156.38525.m.jakeman@lancaster.ac.uk> <86ejg14zrq.fsf@ds4.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 11 October 2007 08:11:21 am Dag-Erling Sm=C3=B8rgrav wrote:
> Matthew Jakeman <m.jakeman@lancaster.ac.uk> writes:
> > I am wanting to create a number of sysctl variables at kernel boot
> > time, 1 for each network interface. I have the code set up to loop
> > through the interfaces using ifnet_byindex() already for other
> > purposes so wanted to create them in this loop.
> >
> > The problem I'm having is naming them, using the SYSCTL_INT() macro as
> > specified :
> >
> > SYSCTL_INT(parent, nbr, name, access, ptr, val, descr);
> >
> > The 'name' parameter is what I wish to manipulate in the loop to
> > append the interface name on to the sysctl variable created however I
> > can't think of a way to do this. If there is another way to accomplish
> > this I would be grateful to hear any suggestions.
>=20
> This is the wrong approach, simply create a node with a fixed name in
> each device's private sysctl tree.  See for instance how the coretemp
> driver in CURRENT inserts a node into each CPU device's sysctl tree.

Yes, but not all 'struct ifnet's have an associated device_t (think vlans).=
 =20
More proper would be to create a net.if tree and give each ifnet its own=20
dynamic sysctl tree under the net.if tree similar to the per-device nodes=20
under dev.

One wrinkle with this is that network interfaces can be renamed, and I don'=
t=20
think the dynamic sysctl stuff lets you rename an existing node currently=20
(though you could fix that).

=2D-=20
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200710111441.48995.jhb>