summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/socket/netstack
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2021-01-26 16:42:14 +0000
committergVisor bot <gvisor-bot@google.com>2021-01-26 16:42:14 +0000
commit894327c74e2cfe9ae4a3ec3ee53d5d14a7b90d3a (patch)
tree42e07313e97fa866608f97f18c8989bd2cbd1b3b /pkg/sentry/socket/netstack
parent7430db20e47c7d225c884279e1fea0fe33636e26 (diff)
parentdaf0d3f6ca3aad6f3f9ab4d762546c6dee78fa57 (diff)
Merge release-20210112.0-90-gdaf0d3f6c (automated)
Diffstat (limited to 'pkg/sentry/socket/netstack')
-rw-r--r--pkg/sentry/socket/netstack/netstack.go17
1 files changed, 15 insertions, 2 deletions
diff --git a/pkg/sentry/socket/netstack/netstack.go b/pkg/sentry/socket/netstack/netstack.go
index 3f34668cf..b4d0651b8 100644
--- a/pkg/sentry/socket/netstack/netstack.go
+++ b/pkg/sentry/socket/netstack/netstack.go
@@ -846,7 +846,7 @@ func getSockOptSocket(t *kernel.Task, s socket.SocketOps, ep commonEndpoint, fam
return nil, syserr.ErrInvalidArgument
}
- size, err := ep.GetSockOptInt(tcpip.SendBufferSizeOption)
+ size, err := ep.SocketOptions().GetSendBufferSize()
if err != nil {
return nil, syserr.TranslateNetstackError(err)
}
@@ -1615,8 +1615,21 @@ func setSockOptSocket(t *kernel.Task, s socket.SocketOps, ep commonEndpoint, nam
return syserr.ErrInvalidArgument
}
+ family, skType, skProto := s.Type()
+ // TODO(gvisor.dev/issue/5132): We currently do not support
+ // setting this option for unix sockets.
+ if family == linux.AF_UNIX {
+ return nil
+ }
+
+ getBufferLimits := tcpip.GetStackSendBufferLimits
+ if isTCPSocket(skType, skProto) {
+ getBufferLimits = tcp.GetTCPSendBufferLimits
+ }
+
v := usermem.ByteOrder.Uint32(optVal)
- return syserr.TranslateNetstackError(ep.SetSockOptInt(tcpip.SendBufferSizeOption, int(v)))
+ ep.SocketOptions().SetSendBufferSize(int64(v), true, getBufferLimits)
+ return nil
case linux.SO_RCVBUF:
if len(optVal) < sizeOfInt32 {