]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: Add getsockopt_so_recvbuf
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 7 Oct 2019 15:31:33 +0000 (11:31 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 16 Oct 2019 11:42:05 +0000 (07:42 -0400)
Add a new function getsockopt_so_recvbuf which tells you the
operating systems receive buffer size.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
lib/sockopt.c
lib/sockopt.h

index 8e38a292784894869a64d3ab8d5589c2f92857c3..7726d74ff7c4f36df2ba1ba0e2579884af2a38ba 100644 (file)
@@ -72,6 +72,21 @@ int getsockopt_so_sendbuf(const int sock)
        return optval;
 }
 
+int getsockopt_so_recvbuf(const int sock)
+{
+       uint32_t optval;
+       socklen_t optlen = sizeof(optval);
+       int ret = getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&optval,
+                            &optlen);
+       if (ret < 0) {
+               flog_err_sys(EC_LIB_SYSTEM_CALL,
+                            "fd %d: can't getsockopt SO_RCVBUF: %d (%s)", sock,
+                            errno, safe_strerror(errno));
+               return ret;
+       }
+       return optval;
+}
+
 static void *getsockopt_cmsg_data(struct msghdr *msgh, int level, int type)
 {
        struct cmsghdr *cmsg;
index 732fec92aad1b7f1105b0990e4df1e20b9e8507f..f6b57b8e07f1fc9724c17ee7b799f7ff52c8181b 100644 (file)
@@ -30,6 +30,7 @@ extern "C" {
 extern void setsockopt_so_recvbuf(int sock, int size);
 extern void setsockopt_so_sendbuf(const int sock, int size);
 extern int getsockopt_so_sendbuf(const int sock);
+extern int getsockopt_so_recvbuf(const int sock);
 
 extern int setsockopt_ipv6_pktinfo(int, int);
 extern int setsockopt_ipv6_checksum(int, int);