Subject: Replacing the sysctl() interface.
To: None <tech-kern@netbsd.org>
From: Darren Reed <darrenr@reed.wattle.id.au>
List: tech-kern
Date: 06/05/2000 05:21:14
I'm musing over working on replacing the current sysctl with something
that's much more flexible and supports (at the very least) it being
dynamic in nature.

Some of changes I think are worthwhile making:

- do lookups on name, not integer (except for backward compat.)

- 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.

- where possible, remove up foo_sysctl() routines which just
  deal with basic types and handle basic types in a more centralised
  fasion.

- support run-time additions and removals from entries on the sysctl
  tree.

- the base sysctl "tree" would be somewhat bare (kern only?), with
  various subsystem init functions being responsible for populating it.

- given it would be dynamic in nature, providing a compatible interface
  with sysctl as it is now would require walking the entire tree.

- what needs to be done, if anything, to make it into a "MIB" that is
  more suited to SNMP means ?

...any other ideas ?

If I can get some useful feedback (I may have picked a bad time for
this O:) I'll post back in a week or so about what I'd like to do
(proposal) for further comment before embarking on making it happen.
I would engvisage it easily being done before 1.6 :)

Darren