Checking sysctl values from within the kernel.

Thordur I. Bjornsson thib at mi.is
Fri Aug 5 16:04:27 GMT 2005


On Fri, 05 Aug 2005 09:33:06 -0600
Scott Long <scottl at samsco.org> wrote:

> Dan Nelson wrote:
> 
> > In the last episode (Aug 05), Thordur I. Bjornsson said:
> > 
> >>If I want to check a sysctl value from within the kernel (e.g. an
> >>KLD), should I use the system calls described in sysctl(3) ?
> >>
> >>If not, what is the propper way to do so ?
> > 
> > 
> > Since most sysctls are direct mappings onto integer variables in the
> > kernel, just check the variable directly.
> > 
> 
> Most of those integer values are also declared static, so they won't
> be visible to external code, especially not kld's.
> 
> There is no easy way to do this.  I'm sure that you could hack up some
> code to simulate a sysctl syscall from within the kernel, but that
> would be really really gross, evil, and wrong.  What values are you
> trying to get at?  Would it make more sense to export them via real
> accessor functions?
> 
> Scott

I thought that would be a proplem. I'm trying to see the value of
net.inet.tcp.drop_synfin . I could always just use the 
#ifdef TCP_DROP_SYNFIN wich gets set with the kernel option but that
does not mean that the sysctl is set and the user/admin want's to drop
SYNFIN packet's.

Since I'm a novice/newbie when it comes to "kernel" programming any tips
will be really good.

I'll continue to search for this.

PS: If you don't mind, what is a "real accessor function" ?
-- 
Thordur I.	<bzthib at gmail.com>
Humppa!


More information about the freebsd-hackers mailing list