diff --git a/keepalived/vrrp/vrrp.c b/keepalived/vrrp/vrrp.c index 4e7f3d13..39b6fc38 100644 --- a/keepalived/vrrp/vrrp.c +++ b/keepalived/vrrp/vrrp.c @@ -1821,6 +1821,9 @@ open_vrrp_send_socket(sa_family_t family, int proto, ifindex_t idx, bool unicast { interface_t *ifp; int fd = -1; + int ret; + int val = 212992 / 2; + socklen_t len = sizeof(val); if (family != AF_INET && family != AF_INET6) { log_message(LOG_INFO, "cant open raw socket. unknown family=%d" @@ -1841,6 +1844,10 @@ open_vrrp_send_socket(sa_family_t family, int proto, ifindex_t idx, bool unicast set_sock_flags(fd, F_SETFD, FD_CLOEXEC); #endif + ret = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, len); + ret = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len); + log_message(LOG_INFO, "vrrp send socket buffer size set to %d, ret %d", val, ret); + if (family == AF_INET) { /* Set v4 related */ if_setsockopt_mcast_all(family, &fd); @@ -1873,6 +1880,9 @@ open_vrrp_read_socket(sa_family_t family, int proto, ifindex_t idx, bool unicast { interface_t *ifp; int fd = -1; + int ret; + int val = 212992 / 2; + socklen_t len = sizeof(val); /* Retreive interface_t */ ifp = if_get_by_ifindex(idx); @@ -1888,6 +1898,10 @@ open_vrrp_read_socket(sa_family_t family, int proto, ifindex_t idx, bool unicast set_sock_flags(fd, F_SETFD, FD_CLOEXEC); #endif + ret = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, len); + ret = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len); + log_message(LOG_INFO, "vrrp receive socket buffer size set to %d, ret %d", val, ret); + /* Ensure no unwanted multicast packets are queued to this interface */ if (family == AF_INET) if_setsockopt_mcast_all(family, &fd);