Subject: Re: Replacing the sysctl() interface.
To: Johan Danielsson <joda@pdc.kth.se>
From: Darren Reed <darrenr@reed.wattle.id.au>
List: tech-kern
Date: 06/06/2000 00:40:21
In some email I received from Johan Danielsson, sie wrote:
> Darren Reed <darrenr@reed.wattle.id.au> writes:
> > In some email I received from Johan Danielsson, sie wrote:
> > > Darren Reed <darrenr@reed.wattle.id.au> writes:

> > > > - support min/default/max/modulus(?) parameters for each sysctl entry.
> > > >   This would let you enforce 0/1 on "boolean" sysctl entries such as
> > > >   ip_forwarding, etc.  I'm thinking about modulus so that you can
> > > >   enforce things like u-sec timers to be in lots of 1000, etc.  For
> > > >   string types that are rw, this would be limited to default.  Some
> > > >   other properties for nodes I'm thinking of are "ownership" (based
> > > >   on user/group) and permissions (rwxrwxrwx) so you can setup read
> > > >   only, read-write and write only sysctl nodes.

> > > I think this should be done by having a function that is called when
> > > someone is trying to set a value. That way you can enforce arbitrary
> > > restrictions on values.

> > There are a few "specials" (such as securelevel) which would be
> > handled in this way, but the number of other "tuneables" for which
> > this can be applied weights strongly in favour of generic support.
> 
> There is nothing that prevent you from supplying a set of standard
> functions.

I don't think I've been very clear here.  The idea is to have a "standard"
function that would deal with all "int" (say) types of data in the sysctl
tree.  That would deal with min/max properties.

For others, where you want to confine it to being in lots of 1000 or it
must always increase, a separate function would be called to "verify" that
the new value is acceptable.

As a result of having a "default" value stored, I would like to see the
possibility of walking the sysctl tree and retrieving defaults, allowing
a diff to be performed on output from current vs default values.  It would
also provide a mechanism for sysctl to "reset" an entry to the default
value, whatever that may be.  Of course, such a reset would be subject
to the value being valid, lest something like securelevel be reset from
current back to 0 :-)

Darren