libbb: add setsockopt_foo helpers
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 24 Aug 2015 17:48:03 +0000 (19:48 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 24 Aug 2015 18:00:17 +0000 (20:00 +0200)
function                                             old     new   delta
setsockopt_int                                         -      23     +23
do_load                                              918     934     +16
setsockopt_SOL_SOCKET_int                              -      14     +14
setsockopt_keepalive                                   -      10     +10
setsockopt_SOL_SOCKET_1                                -      10     +10
buffer_fill_and_print                                169     178      +9
setsockopt_1                                           -       8      +8
nfsmount                                            3560    3566      +6
redirect                                            1277    1282      +5
tcpudpsvd_main                                      1782    1786      +4
d6_send_kernel_packet                                272     275      +3
i2cget_main                                          380     382      +2
ed_main                                             2544    2545      +1
scan_recursive                                       380     378      -2
nbdclient_main                                       492     490      -2
hash_find                                            235     233      -2
cmdputs                                              334     332      -2
parse_command                                       1443    1440      -3
static.two                                             4       -      -4
ntpd_main                                           1039    1035      -4
const_int_1                                            4       -      -4
const_IPTOS_LOWDELAY                                   4       -      -4
RCVBUF                                                 4       -      -4
ntp_init                                             474     469      -5
change_listen_mode                                   316     310      -6
uevent_main                                          416     409      -7
arping_main                                         1697    1690      -7
telnet_main                                         1612    1603      -9
socket_want_pktinfo                                   42      33      -9
setsockopt_reuseaddr                                  21      10     -11
setsockopt_broadcast                                  21      10     -11
httpd_main                                           772     757     -15
get_remote_transfer_fd                               109      94     -15
make_new_session                                     503     487     -16
ftpd_main                                           2177    2160     -17
read_bunzip                                         1896    1866     -30
common_traceroute_main                              4099    4058     -41
common_ping_main                                    1836    1783     -53
------------------------------------------------------------------------------
(add/remove: 5/4 grow/shrink: 8/21 up/down: 111/-283)        Total: -172 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
16 files changed:
include/libbb.h
libbb/messages.c
libbb/udp_io.c
libbb/xconnect.c
networking/arping.c
networking/ftpd.c
networking/httpd.c
networking/nbd-client.c
networking/nc_bloaty.c
networking/ntpd.c
networking/ping.c
networking/telnet.c
networking/telnetd.c
networking/traceroute.c
networking/udhcp/dhcpc.c
util-linux/uevent.c

index 136d4fd87e39ce0454026aa08e8bbaa9d0f16653..2e20706e751373e69d903c2dfcce15de1e83a0a6 100644 (file)
@@ -561,6 +561,11 @@ void xlisten(int s, int backlog) FAST_FUNC;
 void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) FAST_FUNC;
 ssize_t xsendto(int s, const void *buf, size_t len, const struct sockaddr *to,
                                socklen_t tolen) FAST_FUNC;
+
+int setsockopt_int(int fd, int level, int optname, int optval) FAST_FUNC;
+int setsockopt_1(int fd, int level, int optname) FAST_FUNC;
+int setsockopt_SOL_SOCKET_int(int fd, int optname, int optval) FAST_FUNC;
+int setsockopt_SOL_SOCKET_1(int fd, int optname) FAST_FUNC;
 /* SO_REUSEADDR allows a server to rebind to an address that is already
  * "in use" by old connections to e.g. previous server instance which is
  * killed or crashed. Without it bind will fail until all such connections
@@ -568,6 +573,7 @@ ssize_t xsendto(int s, const void *buf, size_t len, const struct sockaddr *to,
  * regardless of SO_REUSEADDR (unlike some other flavors of Unix).
  * Turn it on before you call bind(). */
 void setsockopt_reuseaddr(int fd) FAST_FUNC; /* On Linux this never fails. */
+int setsockopt_keepalive(int fd) FAST_FUNC;
 int setsockopt_broadcast(int fd) FAST_FUNC;
 int setsockopt_bindtodevice(int fd, const char *iface) FAST_FUNC;
 /* NB: returns port in host byte order */
@@ -1807,7 +1813,7 @@ extern const char bb_PATH_root_path[] ALIGN1; /* "PATH=/sbin:/usr/sbin:/bin:/usr
 #define bb_default_path      (bb_PATH_root_path + sizeof("PATH=/sbin:/usr/sbin"))
 
 extern const int const_int_0;
-extern const int const_int_1;
+//extern const int const_int_1;
 
 
 /* Providing hard guarantee on minimum size (think of BUFSIZ == 128) */
index fad82c9dabce5479e8787cbc739590063b59a378..c1b7ba25220c4ae5aea49c9bd4ad41b160fa38bb 100644 (file)
@@ -43,7 +43,7 @@ const char bb_PATH_root_path[] ALIGN1 =
        "PATH=/sbin:/usr/sbin:/bin:/usr/bin" BB_ADDITIONAL_PATH;
 
 
-const int const_int_1 = 1;
+//const int const_int_1 = 1;
 /* explicitly = 0, otherwise gcc may make it a common variable
  * and it will end up in bss */
 const int const_int_0 = 0;
index 7985a97233a67775f8b519778c18c17a0bdaa69c..a32af9bd2088fdf8595cc70cb65ee8c90b387f3a 100644 (file)
@@ -16,10 +16,10 @@ void FAST_FUNC
 socket_want_pktinfo(int fd UNUSED_PARAM)
 {
 #ifdef IP_PKTINFO
-       setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &const_int_1, sizeof(int));
+       setsockopt_1(fd, IPPROTO_IP, IP_PKTINFO);
 #endif
 #if ENABLE_FEATURE_IPV6 && defined(IPV6_PKTINFO)
-       setsockopt(fd, IPPROTO_IPV6, IPV6_PKTINFO, &const_int_1, sizeof(int));
+       setsockopt_1(fd, IPPROTO_IPV6, IPV6_PKTINFO);
 #endif
 }
 
index 2a96e03dc76d84a0bb8baec63ae28ed284749326..6e78e636367296ea3a430fe9b1cfef6ed439b3ce 100644 (file)
 #include <sys/un.h>
 #include "libbb.h"
 
+int FAST_FUNC setsockopt_int(int fd, int level, int optname, int optval)
+{
+       return setsockopt(fd, level, optname, &optval, sizeof(int));
+}
+int FAST_FUNC setsockopt_1(int fd, int level, int optname)
+{
+       return setsockopt_int(fd, level, optname, 1);
+}
+int FAST_FUNC setsockopt_SOL_SOCKET_int(int fd, int optname, int optval)
+{
+       return setsockopt_int(fd, SOL_SOCKET, optname, optval);
+}
+int FAST_FUNC setsockopt_SOL_SOCKET_1(int fd, int optname)
+{
+       return setsockopt_SOL_SOCKET_int(fd, optname, 1);
+}
+
 void FAST_FUNC setsockopt_reuseaddr(int fd)
 {
-       setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_1, sizeof(const_int_1));
+       setsockopt_SOL_SOCKET_1(fd, SO_REUSEADDR);
 }
 int FAST_FUNC setsockopt_broadcast(int fd)
 {
-       return setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_1, sizeof(const_int_1));
+       return setsockopt_SOL_SOCKET_1(fd, SO_BROADCAST);
+}
+int FAST_FUNC setsockopt_keepalive(int fd)
+{
+       return setsockopt_SOL_SOCKET_1(fd, SO_KEEPALIVE);
 }
 
 #ifdef SO_BINDTODEVICE
index 9ac4a7cee7dddb7a6d998258c1ce88c7e4630f71..ce7fa299cdc571c178d503488aaa183557496644 100644 (file)
@@ -357,7 +357,7 @@ int arping_main(int argc UNUSED_PARAM, char **argv)
                        saddr.sin_port = htons(1025);
                        saddr.sin_addr = dst;
 
-                       if (setsockopt(probe_fd, SOL_SOCKET, SO_DONTROUTE, &const_int_1, sizeof(const_int_1)) == -1)
+                       if (setsockopt_SOL_SOCKET_1(probe_fd, SO_DONTROUTE) != 0)
                                bb_perror_msg("setsockopt(%s)", "SO_DONTROUTE");
                        xconnect(probe_fd, (struct sockaddr *) &saddr, sizeof(saddr));
                        getsockname(probe_fd, (struct sockaddr *) &saddr, &alen);
index 2351d6dd3eba6f398999d3897868b58b9986953f..7735b723322bd194f58b78bdd3a4b7147f6d64f3 100644 (file)
@@ -377,7 +377,7 @@ ftpdataio_get_pasv_fd(void)
                return remote_fd;
        }
 
-       setsockopt(remote_fd, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1));
+       setsockopt_keepalive(remote_fd);
        return remote_fd;
 }
 
@@ -1186,11 +1186,11 @@ int ftpd_main(int argc UNUSED_PARAM, char **argv)
                , SIG_IGN);
 
        /* Set up options on the command socket (do we need these all? why?) */
-       setsockopt(STDIN_FILENO, IPPROTO_TCP, TCP_NODELAY, &const_int_1, sizeof(const_int_1));
-       setsockopt(STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1));
+       setsockopt_1(STDIN_FILENO, IPPROTO_TCP, TCP_NODELAY);
+       setsockopt_keepalive(STDIN_FILENO);
        /* Telnet protocol over command link may send "urgent" data,
         * we prefer it to be received in the "normal" data stream: */
-       setsockopt(STDIN_FILENO, SOL_SOCKET, SO_OOBINLINE, &const_int_1, sizeof(const_int_1));
+       setsockopt_1(STDIN_FILENO, SOL_SOCKET, SO_OOBINLINE);
 
        WRITE_OK(FTP_GREET);
        signal(SIGALRM, timeout_handler);
index 7a9065fcc0536227e05961afaa1dce54b049b559..feaaa94d59466c654620fdd7d4fa362682a92530 100644 (file)
@@ -2352,7 +2352,7 @@ static void mini_httpd(int server_socket)
                        continue;
 
                /* set the KEEPALIVE option to cull dead connections */
-               setsockopt(n, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1));
+               setsockopt_keepalive(n);
 
                if (fork() == 0) {
                        /* child */
@@ -2395,7 +2395,7 @@ static void mini_httpd_nommu(int server_socket, int argc, char **argv)
                        continue;
 
                /* set the KEEPALIVE option to cull dead connections */
-               setsockopt(n, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1));
+               setsockopt_keepalive(n);
 
                if (vfork() == 0) {
                        /* child */
index cadda5261dc2aca9654fce83c3c841f2d4a1842a..a601430b69965ab54ef293edbf9351dcf8692260 100644 (file)
@@ -83,7 +83,7 @@ int nbdclient_main(int argc, char **argv)
 
                // Find and connect to server
                sock = create_and_connect_stream_or_die(host, xatou16(port));
-               setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &const_int_1, sizeof(const_int_1));
+               setsockopt_1(sock, IPPROTO_TCP, TCP_NODELAY);
 
                // Log on to the server
                xread(sock, &nbd_header, 8+8+8+4 + 124);
index b28d05f515c8b7d2270c33d07b8b996ffcdd4e1d..471ae1a12f69ce904a900ceb189cd9ac38328340 100644 (file)
@@ -863,8 +863,8 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
                xbind(netfd, &ouraddr->u.sa, ouraddr->len);
        }
 #if 0
-       setsockopt(netfd, SOL_SOCKET, SO_RCVBUF, &o_rcvbuf, sizeof o_rcvbuf);
-       setsockopt(netfd, SOL_SOCKET, SO_SNDBUF, &o_sndbuf, sizeof o_sndbuf);
+       setsockopt_SOL_SOCKET_int(netfd, SO_RCVBUF, o_rcvbuf);
+       setsockopt_SOL_SOCKET_int(netfd, SO_SNDBUF, o_sndbuf);
 #endif
 
 #ifdef BLOAT
index b5120a70d870b0f7ebad18f38556550d79ebaedc..9732c9b1ae4ebb8165feaebc0d82a8a0624409a4 100644 (file)
@@ -405,8 +405,6 @@ struct globals {
 };
 #define G (*ptr_to_globals)
 
-static const int const_IPTOS_LOWDELAY = IPTOS_LOWDELAY;
-
 
 #define VERB1 if (MAX_VERBOSE && G.verbose)
 #define VERB2 if (MAX_VERBOSE >= 2 && G.verbose >= 2)
@@ -837,7 +835,7 @@ send_query_to_peer(peer_t *p)
 #if ENABLE_FEATURE_IPV6
                if (family == AF_INET)
 #endif
-                       setsockopt(fd, IPPROTO_IP, IP_TOS, &const_IPTOS_LOWDELAY, sizeof(const_IPTOS_LOWDELAY));
+                       setsockopt_int(fd, IPPROTO_IP, IP_TOS, IPTOS_LOWDELAY);
                free(local_lsa);
        }
 
@@ -2186,7 +2184,7 @@ static NOINLINE void ntp_init(char **argv)
                                xfunc_die();
                }
                socket_want_pktinfo(G_listen_fd);
-               setsockopt(G_listen_fd, IPPROTO_IP, IP_TOS, &const_IPTOS_LOWDELAY, sizeof(const_IPTOS_LOWDELAY));
+               setsockopt_int(G_listen_fd, IPPROTO_IP, IP_TOS, IPTOS_LOWDELAY);
        }
 #endif
        if (!(opts & OPT_n)) {
index 20489a070a261e72163c8f724ea6ddc5635a9d05..e1f9ebc3a239aec01d271f45762994d9ac4aebdd 100644 (file)
@@ -247,7 +247,7 @@ static void ping6(len_and_sockaddr *lsa)
        pkt->icmp6_type = ICMP6_ECHO_REQUEST;
 
        sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
-       setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));
+       setsockopt_int(pingsock, SOL_RAW, IPV6_CHECKSUM, sockopt);
 
        xsendto(pingsock, G.packet, DEFDATALEN + sizeof(struct icmp6_hdr), &lsa->u.sa, lsa->len);
 
@@ -700,12 +700,12 @@ static void ping4(len_and_sockaddr *lsa)
        /* set recv buf (needed if we can get lots of responses: flood ping,
         * broadcast ping etc) */
        sockopt = (datalen * 2) + 7 * 1024; /* giving it a bit of extra room */
-       setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, &sockopt, sizeof(sockopt));
+       setsockopt_SOL_SOCKET_int(pingsock, SO_RCVBUF, sockopt);
 
        if (opt_ttl != 0) {
-               setsockopt(pingsock, IPPROTO_IP, IP_TTL, &opt_ttl, sizeof(opt_ttl));
+               setsockopt_int(pingsock, IPPROTO_IP, IP_TTL, opt_ttl);
                /* above doesnt affect packets sent to bcast IP, so... */
-               setsockopt(pingsock, IPPROTO_IP, IP_MULTICAST_TTL, &opt_ttl, sizeof(opt_ttl));
+               setsockopt_int(pingsock, IPPROTO_IP, IP_MULTICAST_TTL, opt_ttl);
        }
 
        signal(SIGINT, print_stats_and_exit);
@@ -766,15 +766,15 @@ static void ping6(len_and_sockaddr *lsa)
        /* set recv buf (needed if we can get lots of responses: flood ping,
         * broadcast ping etc) */
        sockopt = (datalen * 2) + 7 * 1024; /* giving it a bit of extra room */
-       setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, &sockopt, sizeof(sockopt));
+       setsockopt_SOL_SOCKET_int(pingsock, SO_RCVBUF, sockopt);
 
        sockopt = offsetof(struct icmp6_hdr, icmp6_cksum);
-       if (offsetof(struct icmp6_hdr, icmp6_cksum) != 2)
+       if (sockopt != 2)
                BUG_bad_offsetof_icmp6_cksum();
-       setsockopt(pingsock, SOL_RAW, IPV6_CHECKSUM, &sockopt, sizeof(sockopt));
+       setsockopt_int(pingsock, SOL_RAW, IPV6_CHECKSUM, sockopt);
 
        /* request ttl info to be returned in ancillary data */
-       setsockopt(pingsock, SOL_IPV6, IPV6_HOPLIMIT, &const_int_1, sizeof(const_int_1));
+       setsockopt_1(pingsock, SOL_IPV6, IPV6_HOPLIMIT);
 
        if (if_index)
                pingaddr.sin6.sin6_scope_id = if_index;
index a255797737ef7aaafb041525c5a141d73764bbb6..3bb6fb1ba36f450072db55735ca19f9965c82927 100644 (file)
@@ -623,7 +623,7 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
 
        xmove_fd(create_and_connect_stream_or_die(host, port), netfd);
 
-       setsockopt(netfd, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1));
+       setsockopt_keepalive(netfd);
 
        signal(SIGINT, record_signo);
 
index 6aee95871d8f0bee95cda9b4c722688efd9cd8ab..25d05fe7aa3d177c7376d4f5683288d5eb12841a 100644 (file)
@@ -265,7 +265,7 @@ make_new_session(
        close_on_exec_on(fd);
 
        /* SO_KEEPALIVE by popular demand */
-       setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1));
+       setsockopt_keepalive(sock);
 #if ENABLE_FEATURE_TELNETD_STANDALONE
        ts->sockfd_read = sock;
        ndelay_on(sock);
index e41d89e9f38762ec7e688c4f87dacfca6bf06113..642110c54b15e95536aab5766e2eea99a7ad2ffa 100644 (file)
@@ -473,8 +473,8 @@ send_probe(int seq, int ttl)
 
 #if ENABLE_TRACEROUTE6
        if (dest_lsa->u.sa.sa_family == AF_INET6) {
-               res = setsockopt(sndsock, SOL_IPV6, IPV6_UNICAST_HOPS, &ttl, sizeof(ttl));
-               if (res < 0)
+               res = setsockopt_int(sndsock, SOL_IPV6, IPV6_UNICAST_HOPS, ttl);
+               if (res != 0)
                        bb_perror_msg_and_die("setsockopt(%s) %d", "UNICAST_HOPS", ttl);
                out = outip;
                len = packlen;
@@ -482,8 +482,8 @@ send_probe(int seq, int ttl)
 #endif
        {
 #if defined IP_TTL
-               res = setsockopt(sndsock, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
-               if (res < 0)
+               res = setsockopt_int(sndsock, IPPROTO_IP, IP_TTL, ttl);
+               if (res != 0)
                        bb_perror_msg_and_die("setsockopt(%s) %d", "TTL", ttl);
 #endif
                out = outicmp;
@@ -902,13 +902,10 @@ common_traceroute_main(int op, char **argv)
        if (af == AF_INET6) {
                xmove_fd(xsocket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6), rcvsock);
 # ifdef IPV6_RECVPKTINFO
-               setsockopt(rcvsock, SOL_IPV6, IPV6_RECVPKTINFO,
-                               &const_int_1, sizeof(const_int_1));
-               setsockopt(rcvsock, SOL_IPV6, IPV6_2292PKTINFO,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_1(rcvsock, SOL_IPV6, IPV6_RECVPKTINFO);
+               setsockopt_1(rcvsock, SOL_IPV6, IPV6_2292PKTINFO);
 # else
-               setsockopt(rcvsock, SOL_IPV6, IPV6_PKTINFO,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_1(rcvsock, SOL_IPV6, IPV6_PKTINFO);
 # endif
        } else
 #endif
@@ -918,17 +915,14 @@ common_traceroute_main(int op, char **argv)
 
 #if TRACEROUTE_SO_DEBUG
        if (op & OPT_DEBUG)
-               setsockopt(rcvsock, SOL_SOCKET, SO_DEBUG,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_SOL_SOCKET_1(rcvsock, SO_DEBUG);
 #endif
        if (op & OPT_BYPASS_ROUTE)
-               setsockopt(rcvsock, SOL_SOCKET, SO_DONTROUTE,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_SOL_SOCKET_1(rcvsock, SO_DONTROUTE);
 
 #if ENABLE_TRACEROUTE6
        if (af == AF_INET6) {
-               static const int two = 2;
-               if (setsockopt(rcvsock, SOL_RAW, IPV6_CHECKSUM, &two, sizeof(two)) < 0)
+               if (setsockopt_int(rcvsock, SOL_RAW, IPV6_CHECKSUM, 2) != 0)
                        bb_perror_msg_and_die("setsockopt(%s)", "IPV6_CHECKSUM");
                xmove_fd(xsocket(af, SOCK_DGRAM, 0), sndsock);
        } else
@@ -966,28 +960,25 @@ common_traceroute_main(int op, char **argv)
        }
 
 #ifdef SO_SNDBUF
-       if (setsockopt(sndsock, SOL_SOCKET, SO_SNDBUF, &packlen, sizeof(packlen)) < 0) {
-               bb_perror_msg_and_die("SO_SNDBUF");
+       if (setsockopt_SOL_SOCKET_int(sndsock, SO_SNDBUF, packlen) != 0) {
+               bb_perror_msg_and_die("setsockopt(%s)", "SO_SNDBUF");
        }
 #endif
 #ifdef IP_TOS
-       if ((op & OPT_TOS) && setsockopt(sndsock, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) < 0) {
+       if ((op & OPT_TOS) && setsockopt_int(sndsock, IPPROTO_IP, IP_TOS, tos) != 0) {
                bb_perror_msg_and_die("setsockopt(%s) %d", "TOS", tos);
        }
 #endif
 #ifdef IP_DONTFRAG
        if (op & OPT_DONT_FRAGMNT)
-               setsockopt(sndsock, IPPROTO_IP, IP_DONTFRAG,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_1(sndsock, IPPROTO_IP, IP_DONTFRAG);
 #endif
 #if TRACEROUTE_SO_DEBUG
        if (op & OPT_DEBUG)
-               setsockopt(sndsock, SOL_SOCKET, SO_DEBUG,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_SOL_SOCKET_1(sndsock, SO_DEBUG);
 #endif
        if (op & OPT_BYPASS_ROUTE)
-               setsockopt(sndsock, SOL_SOCKET, SO_DONTROUTE,
-                               &const_int_1, sizeof(const_int_1));
+               setsockopt_SOL_SOCKET_1(sndsock, SO_DONTROUTE);
 
        outip = xzalloc(packlen);
 
index 811a1a1eebe527102e02ace0ec2617b5fcee91e6..11f7b2d49b203a750cdc9913c39285ba246cc8d3 100644 (file)
@@ -1043,9 +1043,7 @@ static int udhcp_raw_socket(int ifindex)
        }
 #endif
 
-       if (setsockopt(fd, SOL_PACKET, PACKET_AUXDATA,
-                       &const_int_1, sizeof(int)) < 0
-       ) {
+       if (setsockopt_1(fd, SOL_PACKET, PACKET_AUXDATA) != 0) {
                if (errno != ENOPROTOOPT)
                        log1("Can't set PACKET_AUXDATA on raw socket");
        }
index fb98b4845447251a3522e9119e7b1a8691f9ab84..514a9e934a943204d7df8d99d84def0d26d5be89 100644 (file)
@@ -37,7 +37,7 @@ enum {
 #ifndef SO_RCVBUFFORCE
 #define SO_RCVBUFFORCE 33
 #endif
-static const int RCVBUF = 2 * 1024 * 1024;
+enum { RCVBUF = 2 * 1024 * 1024 };
 
 int uevent_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int uevent_main(int argc UNUSED_PARAM, char **argv)
@@ -63,8 +63,8 @@ int uevent_main(int argc UNUSED_PARAM, char **argv)
        //      find /sys -name uevent -exec sh -c 'echo add >"{}"' ';'
        //
        // SO_RCVBUFFORCE (root only) can go above net.core.rmem_max sysctl
-       setsockopt(fd, SOL_SOCKET, SO_RCVBUF,      &RCVBUF, sizeof(RCVBUF));
-       setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &RCVBUF, sizeof(RCVBUF));
+       setsockopt_SOL_SOCKET_int(fd, SO_RCVBUF,      RCVBUF);
+       setsockopt_SOL_SOCKET_int(fd, SO_RCVBUFFORCE, RCVBUF);
        if (0) {
                int z;
                socklen_t zl = sizeof(z);