summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas.abraitis@gmail.com>2019-10-20 12:09:42 +0300
committerGitHub <noreply@github.com>2019-10-20 12:09:42 +0300
commitacf061a9ab9284b7ebf6dffbe2cf5ea6ed9052da (patch)
treee2321f97af25c15a62ccd76b98123d0c9a00fec2 /lib
parent0a764122e10bf5c3067f8f5dcc7d02f339d18580 (diff)
parent11a9a23664c776cc4cd3794f25f378dc1489e949 (diff)
Merge pull request #5108 from donaldsharp/sendbuffer_size_bgp
Sendbuffer size bgp
Diffstat (limited to 'lib')
-rw-r--r--lib/sockopt.c15
-rw-r--r--lib/sockopt.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/sockopt.c b/lib/sockopt.c
index 8e38a29278..7726d74ff7 100644
--- a/lib/sockopt.c
+++ b/lib/sockopt.c
@@ -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;
diff --git a/lib/sockopt.h b/lib/sockopt.h
index 732fec92aa..f6b57b8e07 100644
--- a/lib/sockopt.h
+++ b/lib/sockopt.h
@@ -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);