xref: /f-stack/tools/compat/sysctlbyname.c (revision df6ad731)
1*df6ad731Slogwang /*
2*df6ad731Slogwang  * ----------------------------------------------------------------------------
3*df6ad731Slogwang  * "THE BEER-WARE LICENSE" (Revision 42):
4*df6ad731Slogwang  * <[email protected]> wrote this file.  As long as you retain this notice you
5*df6ad731Slogwang  * can do whatever you want with this stuff. If we meet some day, and you think
6*df6ad731Slogwang  * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
7*df6ad731Slogwang  * ----------------------------------------------------------------------------
8*df6ad731Slogwang  *
9*df6ad731Slogwang  */
10*df6ad731Slogwang 
11*df6ad731Slogwang #include <sys/cdefs.h>
12*df6ad731Slogwang #ifndef FSTACK
13*df6ad731Slogwang __FBSDID("$FreeBSD$");
14*df6ad731Slogwang #endif
15*df6ad731Slogwang 
16*df6ad731Slogwang #include <sys/types.h>
17*df6ad731Slogwang #include <sys/sysctl.h>
18*df6ad731Slogwang 
19*df6ad731Slogwang int
sysctlbyname(const char * name,void * oldp,size_t * oldlenp,const void * newp,size_t newlen)20*df6ad731Slogwang sysctlbyname(const char *name, void *oldp, size_t *oldlenp,
21*df6ad731Slogwang     const void *newp, size_t newlen)
22*df6ad731Slogwang {
23*df6ad731Slogwang 	int real_oid[CTL_MAXNAME+2];
24*df6ad731Slogwang 	size_t oidlen;
25*df6ad731Slogwang 
26*df6ad731Slogwang 	oidlen = sizeof(real_oid) / sizeof(int);
27*df6ad731Slogwang 	if (sysctlnametomib(name, real_oid, &oidlen) < 0)
28*df6ad731Slogwang 		return (-1);
29*df6ad731Slogwang 	return (sysctl(real_oid, oidlen, oldp, oldlenp, newp, newlen));
30*df6ad731Slogwang }
31