mirror of
https://github.com/vishvananda/netlink
synced 2025-02-16 12:06:49 +00:00
handle: ability for force receive buffer size
This uses `SO_RCVBUFFORCE` instead of `SO_RCVBUF`. This requires to be root and Linux 2.6.14.
This commit is contained in:
parent
ef84ebb87b
commit
808afc82b2
@ -58,10 +58,14 @@ func (h *Handle) SetSocketTimeout(to time.Duration) error {
|
||||
// SetSocketReceiveBufferSize sets the receive buffer size for each
|
||||
// socket in the netlink handle. The maximum value is capped by
|
||||
// /proc/sys/net/core/rmem_max.
|
||||
func (h *Handle) SetSocketReceiveBufferSize(size int) error {
|
||||
func (h *Handle) SetSocketReceiveBufferSize(size int, force bool) error {
|
||||
opt := syscall.SO_RCVBUF
|
||||
if force {
|
||||
opt = syscall.SO_RCVBUFFORCE
|
||||
}
|
||||
for _, sh := range h.sockets {
|
||||
fd := sh.Socket.GetFd()
|
||||
err := syscall.SetsockoptInt(fd, syscall.SOL_SOCKET, syscall.SO_RCVBUF, size)
|
||||
err := syscall.SetsockoptInt(fd, syscall.SOL_SOCKET, opt, size)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ func TestHandleReceiveBuffer(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer h.Delete()
|
||||
if err := h.SetSocketReceiveBufferSize(65536); err != nil {
|
||||
if err := h.SetSocketReceiveBufferSize(65536, false); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
sizes, err := h.GetSocketReceiveBufferSize()
|
||||
|
Loading…
Reference in New Issue
Block a user