aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/xconnect.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/libbb/xconnect.c b/libbb/xconnect.c
index e9a2470e4..5dd9cfd28 100644
--- a/libbb/xconnect.c
+++ b/libbb/xconnect.c
@@ -422,17 +422,14 @@ int FAST_FUNC create_and_bind_to_netlink(int proto, int grp, unsigned rcvbuf)
422 struct sockaddr_nl sa; 422 struct sockaddr_nl sa;
423 int fd; 423 int fd;
424 424
425 memset(&sa, 0, sizeof(sa));
426 sa.nl_family = AF_NETLINK;
427 sa.nl_pid = getpid();
428 sa.nl_groups = grp;
429 fd = xsocket(AF_NETLINK, SOCK_DGRAM, proto); 425 fd = xsocket(AF_NETLINK, SOCK_DGRAM, proto);
430 xbind(fd, (struct sockaddr *) &sa, sizeof(sa));
431 close_on_exec_on(fd);
432 426
427 /* Set receive buffer size before binding the socket
428 * We want to have enough space before we start receiving messages.
429 */
433 if (rcvbuf != 0) { 430 if (rcvbuf != 0) {
434 // SO_RCVBUFFORCE (root only) can go above net.core.rmem_max sysctl 431 setsockopt_SOL_SOCKET_int(fd, SO_RCVBUF, rcvbuf);
435 setsockopt_SOL_SOCKET_int(fd, SO_RCVBUF, rcvbuf); 432 /* SO_RCVBUFFORCE (root only) can go above net.core.rmem_max */
436 setsockopt_SOL_SOCKET_int(fd, SO_RCVBUFFORCE, rcvbuf); 433 setsockopt_SOL_SOCKET_int(fd, SO_RCVBUFFORCE, rcvbuf);
437# if 0 434# if 0
438 { 435 {
@@ -444,6 +441,13 @@ int FAST_FUNC create_and_bind_to_netlink(int proto, int grp, unsigned rcvbuf)
444# endif 441# endif
445 } 442 }
446 443
444 memset(&sa, 0, sizeof(sa));
445 sa.nl_family = AF_NETLINK;
446 sa.nl_pid = getpid();
447 sa.nl_groups = grp;
448 xbind(fd, (struct sockaddr *) &sa, sizeof(sa));
449 close_on_exec_on(fd);
450
447 return fd; 451 return fd;
448} 452}
449#endif 453#endif