Download raw body.
bgpd: set the socketpair socketbuffer size only once
For good performance it makes sense to bump the socket buffers to 4 times
the IBUF_READ_SIZE (aka MAX_SOCK_BUF). It makes little sense to do this
loop dance around those setsockopts. It either works or it will most
probably always fail.
--
:wq Claudio
Index: bgpd.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/bgpd.c,v
diff -u -p -r1.279 bgpd.c
--- bgpd.c 2 Dec 2024 15:13:57 -0000 1.279
+++ bgpd.c 3 Dec 2024 13:24:23 -0000
@@ -1306,29 +1306,23 @@ getsockpair(int pipe[2])
fatal("socketpair");
for (i = 0; i < 2; i++) {
- for (bsize = MAX_SOCK_BUF; bsize >= 16 * 1024; bsize /= 2) {
- if (setsockopt(pipe[i], SOL_SOCKET, SO_RCVBUF,
- &bsize, sizeof(bsize)) == -1) {
- if (errno != ENOBUFS)
- fatal("setsockopt(SO_RCVBUF, %d)",
- bsize);
- log_warn("setsockopt(SO_RCVBUF, %d)", bsize);
- continue;
- }
- break;
+ bsize = MAX_SOCK_BUF;
+ if (setsockopt(pipe[i], SOL_SOCKET, SO_RCVBUF,
+ &bsize, sizeof(bsize)) == -1) {
+ if (errno != ENOBUFS)
+ fatal("setsockopt(SO_RCVBUF, %d)",
+ bsize);
+ log_warn("setsockopt(SO_RCVBUF, %d)", bsize);
}
}
for (i = 0; i < 2; i++) {
- for (bsize = MAX_SOCK_BUF; bsize >= 16 * 1024; bsize /= 2) {
- if (setsockopt(pipe[i], SOL_SOCKET, SO_SNDBUF,
- &bsize, sizeof(bsize)) == -1) {
- if (errno != ENOBUFS)
- fatal("setsockopt(SO_SNDBUF, %d)",
- bsize);
- log_warn("setsockopt(SO_SNDBUF, %d)", bsize);
- continue;
- }
- break;
+ bsize = MAX_SOCK_BUF;
+ if (setsockopt(pipe[i], SOL_SOCKET, SO_SNDBUF,
+ &bsize, sizeof(bsize)) == -1) {
+ if (errno != ENOBUFS)
+ fatal("setsockopt(SO_SNDBUF, %d)",
+ bsize);
+ log_warn("setsockopt(SO_SNDBUF, %d)", bsize);
}
}
}
bgpd: set the socketpair socketbuffer size only once