diff options
author | Ian Gudger <igudger@google.com> | 2018-10-24 11:04:11 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-10-24 11:05:08 -0700 |
commit | 425dccdd7ed035a671aaf8da1982f7b029365d66 (patch) | |
tree | 542f87477c0928dae95d035e2551eedb6606de72 /pkg/sentry/socket/unix/transport/connectionless.go | |
parent | c99006a240be6381f5ac6c6c7c70839df84e1c1d (diff) |
Convert Unix transport to syserr
Previously this code used the tcpip error space. Since it is no longer part of
netstack, it can use the sentry's error space (except for a few cases where
there is still some shared code. This reduces the number of error space
conversions required for hot Unix socket operations.
PiperOrigin-RevId: 218541611
Change-Id: I3d13047006a8245b5dfda73364d37b8a453784bb
Diffstat (limited to 'pkg/sentry/socket/unix/transport/connectionless.go')
-rw-r--r-- | pkg/sentry/socket/unix/transport/connectionless.go | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/pkg/sentry/socket/unix/transport/connectionless.go b/pkg/sentry/socket/unix/transport/connectionless.go index 376e4abb2..f432a9717 100644 --- a/pkg/sentry/socket/unix/transport/connectionless.go +++ b/pkg/sentry/socket/unix/transport/connectionless.go @@ -15,6 +15,7 @@ package transport import ( + "gvisor.googlesource.com/gvisor/pkg/syserr" "gvisor.googlesource.com/gvisor/pkg/tcpip" "gvisor.googlesource.com/gvisor/pkg/waiter" ) @@ -70,21 +71,21 @@ func (e *connectionlessEndpoint) Close() { } // BidirectionalConnect implements BoundEndpoint.BidirectionalConnect. -func (e *connectionlessEndpoint) BidirectionalConnect(ce ConnectingEndpoint, returnConnect func(Receiver, ConnectedEndpoint)) *tcpip.Error { - return tcpip.ErrConnectionRefused +func (e *connectionlessEndpoint) BidirectionalConnect(ce ConnectingEndpoint, returnConnect func(Receiver, ConnectedEndpoint)) *syserr.Error { + return syserr.ErrConnectionRefused } // UnidirectionalConnect implements BoundEndpoint.UnidirectionalConnect. -func (e *connectionlessEndpoint) UnidirectionalConnect() (ConnectedEndpoint, *tcpip.Error) { +func (e *connectionlessEndpoint) UnidirectionalConnect() (ConnectedEndpoint, *syserr.Error) { e.Lock() r := e.receiver e.Unlock() if r == nil { - return nil, tcpip.ErrConnectionRefused + return nil, syserr.ErrConnectionRefused } q := r.(*queueReceiver).readQueue if !q.TryIncRef() { - return nil, tcpip.ErrConnectionRefused + return nil, syserr.ErrConnectionRefused } return &connectedEndpoint{ endpoint: e, @@ -94,14 +95,14 @@ func (e *connectionlessEndpoint) UnidirectionalConnect() (ConnectedEndpoint, *tc // SendMsg writes data and a control message to the specified endpoint. // This method does not block if the data cannot be written. -func (e *connectionlessEndpoint) SendMsg(data [][]byte, c ControlMessages, to BoundEndpoint) (uintptr, *tcpip.Error) { +func (e *connectionlessEndpoint) SendMsg(data [][]byte, c ControlMessages, to BoundEndpoint) (uintptr, *syserr.Error) { if to == nil { return e.baseEndpoint.SendMsg(data, c, nil) } connected, err := to.UnidirectionalConnect() if err != nil { - return 0, tcpip.ErrInvalidEndpointState + return 0, syserr.ErrInvalidEndpointState } defer connected.Release() @@ -122,7 +123,7 @@ func (e *connectionlessEndpoint) Type() SockType { } // Connect attempts to connect directly to server. -func (e *connectionlessEndpoint) Connect(server BoundEndpoint) *tcpip.Error { +func (e *connectionlessEndpoint) Connect(server BoundEndpoint) *syserr.Error { connected, err := server.UnidirectionalConnect() if err != nil { return err @@ -136,13 +137,13 @@ func (e *connectionlessEndpoint) Connect(server BoundEndpoint) *tcpip.Error { } // Listen starts listening on the connection. -func (e *connectionlessEndpoint) Listen(int) *tcpip.Error { - return tcpip.ErrNotSupported +func (e *connectionlessEndpoint) Listen(int) *syserr.Error { + return syserr.ErrNotSupported } // Accept accepts a new connection. -func (e *connectionlessEndpoint) Accept() (Endpoint, *tcpip.Error) { - return nil, tcpip.ErrNotSupported +func (e *connectionlessEndpoint) Accept() (Endpoint, *syserr.Error) { + return nil, syserr.ErrNotSupported } // Bind binds the connection. @@ -153,15 +154,15 @@ func (e *connectionlessEndpoint) Accept() (Endpoint, *tcpip.Error) { // // Bind will fail only if the socket is connected, bound or the passed address // is invalid (the empty string). -func (e *connectionlessEndpoint) Bind(addr tcpip.FullAddress, commit func() *tcpip.Error) *tcpip.Error { +func (e *connectionlessEndpoint) Bind(addr tcpip.FullAddress, commit func() *syserr.Error) *syserr.Error { e.Lock() defer e.Unlock() if e.isBound() { - return tcpip.ErrAlreadyBound + return syserr.ErrAlreadyBound } if addr.Addr == "" { // The empty string is not permitted. - return tcpip.ErrBadLocalAddress + return syserr.ErrBadLocalAddress } if commit != nil { if err := commit(); err != nil { |