#include #include #include #include _syscall1(int, _sysctl, struct __sysctl_args *, args); int sysctl(int *name, int nlen, void *oldval, size_t *oldlenp, void *newval, size_t newlen) { struct __sysctl_args args={name,nlen,oldval,oldlenp,newval,newlen}; return _sysctl(&args); } #define SIZE(x) sizeof(x)/sizeof(x[0]) #ifndef NET_TCO_CONG_CONTROL #define NET_TCP_CONG_CONTROL 110 #endif int main() { char oldname[100]; size_t oldnamelen = SIZE(oldname); char newval[] = "reno"; size_t newvallen = SIZE(newval); int name[] = { CTL_NET, NET_IPV4, NET_TCP_CONG_CONTROL }; if (sysctl(name, SIZE(name), oldname, &oldnamelen, newval, newvallen)) perror("sysctl"); else printf("old value='%s', new value should be='%s'\n", oldname, newval); return 0; }