Date: Mon, 9 Nov 2015 16:32:46 -0700 From: Cameron Sparr <cameronsparr@gmail.com> To: freebsd-arch@freebsd.org Subject: setsockopt() and kern.ipc.maxsockbuf Message-ID: <CAJsN804W3JrQQf1OvrpSdvxgGCiGY%2BcV5L=toCLT56uxwempuQ@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hello, I'm not sure if this is the correct place to do it, but I'd like to put out a proposal for changing the way that the setsockopt() function handles the max socket buffer setting. Currently, it's a bit unintuitive that SO_RCVBUF & SO_SNDBUF can not actually be set to the kern.ipc.maxsockbuf value, even though it is described as being possible in the man page: https://www.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2 This is because setsockopt() will error out if the value passed is over the _adjusted_ maximum, which on my system (amd64) turns out to be something like kern.ipc.maxsockbuf * 0.889 (kern.ipc.maxsockbuf * (1 << 11) / (256 + (1 << 11)) = kern.ipc.maxsockbuf * (2048) / (2304)). see here: https://github.com/freebsd/freebsd/blob/master/sys/kern/uipc_sockbuf.c#L420 and here: https://github.com/freebsd/freebsd/blob/master/sys/kern/uipc_sockbuf.c#L63-L64 I believe that the behavior could be made more intuitive by checking if the value passed is under the _actual_ max before erroring out, and if it is under the actual max, then set it to the adjusted max and continue the function, this would be a simple change and would look something like this (apologies for the whitespace diffs): https://github.com/sparrc/freebsd/commit/157f90c55d1d54d33f41c6f7517de1a9c5f5e229 Also, I'm a newb to the freebsd mailing lists, so please let me know if this sort of request should go elsewhere. Thanks all, Cameron
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJsN804W3JrQQf1OvrpSdvxgGCiGY%2BcV5L=toCLT56uxwempuQ>