Date: Thu, 11 Jul 2002 13:56:28 -0400 (EDT) From: Kelly Yancey <kbyanc@posi.net> To: Juan Francisco Rodriguez Hervella <jrh@it.uc3m.es> Cc: freebsd-net@FreeBSD.ORG Subject: Re: sysctl inferface question Message-ID: <Pine.BSF.4.05.10207111339020.32666-100000@kronos.networkrichmond.com> In-Reply-To: <3D2D9D4E.74A1B6F4@it.uc3m.es>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 11 Jul 2002, Juan Francisco Rodriguez Hervella wrote: > Hello: > > I'm very confused with the sysctl internals. > > For example, looking at the kernel source code of FreeBSD, I've realized > > of the following: > > netinet/in_proco.c: > SYSCTL_NODE(_net_inet6, IPPROTO_DIVERT, divert, > CTLFLAG_RW, 0, "DIVERT"); > netinet/ip_divert.c: > SYSCTL_DECL(_net_inet_divert); > netinet/ip_divert.c: > SYSCTL_PROC(_net_inet_divert, OID_AUTO, pcblist, CTLFLAG_RD, > 0, 0, > div_pcblist, "S,xinpcb", "List of active divert sockets"); > > Isn't this redundant ? I mean, if there is a "SYSCTL_NODE", there is > *no* need for having > "SYSCTL_DECL" in "ip_divert.c"... I am wrong ? > It is a scoping/linking issue: the SYSCTL_DECL is needed in netinet/ip_divert.c so that children may be added to the node which was defined in netinet/in_proto.c. Without it, the very next line in netinet/ip_divert would fail to compile because it coulding find the parent node. A good C reference would probably better explain the difference between declaring a variable and defining a variable, but that is exactly the difference you are witnessing here. > Also, I don't undertand the meaning of the "fmt" field....what is it for > ? What's the > meaning of "S,xinpcb" in the above example ? > > Thanks. > > -- > JFRH. > The fmt field is used by sysctl(8) to format the data returned from the kernel. The "S,xinpcb" format string tells sysctl(8) to use it's definition of "xinpcb" formatting to render the structure. Take a look at /usr/src/sbin/sysctl/sysctl.c; it is a pretty light read. Good luck, Kelly -- Kelly Yancey -- kbyanc@{posi.net,FreeBSD.org} To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.10207111339020.32666-100000>