sean at chittenden.org
Tue Jun 29 10:36:42 PDT 2004
> Is there any way to change its value according to the connection's uid
> or port?
Not with sysctl(8). You can by hacking the application and adding a
few setsockopt(2) calls, specifically the SO_RCVBUF and SO_SNDBUF
options. Here's a sample snippit you could follow:
/* Add these #includes if they aren't already there */
/* Add this to the top of the function that calls listen(2) */
int rcvbuf = 4096;
int sndbuf = 4096;
/* And add these calls before the application makes its listen(2) call.
You may find that some applications are already setting their send and
receive buffer sizes. */
if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(rcvbuf)) != 0)
err(EX_OSERR, "setsockopt(2) for SO_RCVBUF failed");
if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(sndbuf)) != 0)
err(EX_OSERR, "setsockopt(2) for SO_SNDBUF failed");
> I need small sendspaces to ircd and bigger ones to apache..
Add the above to each of the applications before they make their
listen(2) calls. It's a shame more applications don't let you tweak
this value via a config file.
More information about the freebsd-performance