mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-23 19:05:37 +00:00
Revendor virtsock go library, for vsock.Dial
$ gvt delete github.com/rneugeba/virtsock/go $ gvt fetch --no-recurse https://github.com/rneugeba/virtsock/go virtsock.git: $ git log --oneline 74097e05a883e89c70e6a27b342672c7fe6c846b..650ef8224a0c06b4b20e9bee1600dbf677c8176d -- go/ 0e2f0a8 vsock: Implement vsock.Dial 712714a vsock: include the errno when C.bind_sockaddr_vm 03725fe go: make errors public Signed-off-by: Ian Campbell <ian.campbell@docker.com>
This commit is contained in:
parent
98174da08f
commit
f70ff0aeac
28
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock.go
generated
vendored
28
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock.go
generated
vendored
@ -173,13 +173,13 @@ func (v *hvsockListener) Addr() net.Addr {
|
||||
*/
|
||||
|
||||
var (
|
||||
errSocketClosed = errors.New("HvSocket has already been closed")
|
||||
errSocketWriteClosed = errors.New("HvSocket has been closed for write")
|
||||
errSocketReadClosed = errors.New("HvSocket has been closed for read")
|
||||
errSocketMsgSize = errors.New("HvSocket message was of wrong size")
|
||||
errSocketMsgWrite = errors.New("HvSocket writing message")
|
||||
errSocketNotEnoughData = errors.New("HvSocket not enough data written")
|
||||
errSocketUnImplemented = errors.New("Function not implemented")
|
||||
ErrSocketClosed = errors.New("HvSocket has already been closed")
|
||||
ErrSocketWriteClosed = errors.New("HvSocket has been closed for write")
|
||||
ErrSocketReadClosed = errors.New("HvSocket has been closed for read")
|
||||
ErrSocketMsgSize = errors.New("HvSocket message was of wrong size")
|
||||
ErrSocketMsgWrite = errors.New("HvSocket writing message")
|
||||
ErrSocketNotEnoughData = errors.New("HvSocket not enough data written")
|
||||
ErrSocketUnImplemented = errors.New("Function not implemented")
|
||||
)
|
||||
|
||||
type HVsockConn struct {
|
||||
@ -227,7 +227,7 @@ func (v *HVsockConn) Close() error {
|
||||
|
||||
func (v *HVsockConn) CloseRead() error {
|
||||
if v.readClosed {
|
||||
return errSocketReadClosed
|
||||
return ErrSocketReadClosed
|
||||
}
|
||||
|
||||
prDebug("TX: Shutdown Read\n")
|
||||
@ -244,7 +244,7 @@ func (v *HVsockConn) CloseRead() error {
|
||||
|
||||
func (v *HVsockConn) CloseWrite() error {
|
||||
if v.writeClosed {
|
||||
return errSocketWriteClosed
|
||||
return ErrSocketWriteClosed
|
||||
}
|
||||
|
||||
prDebug("TX: Shutdown Write\n")
|
||||
@ -284,7 +284,7 @@ func (v *HVsockConn) Read(buf []byte) (int, error) {
|
||||
}
|
||||
|
||||
if n != 4 {
|
||||
return n, errSocketMsgSize
|
||||
return n, ErrSocketMsgSize
|
||||
}
|
||||
|
||||
msg := int(binary.LittleEndian.Uint32(b))
|
||||
@ -333,7 +333,7 @@ func (v *HVsockConn) Read(buf []byte) (int, error) {
|
||||
|
||||
func (v *HVsockConn) Write(buf []byte) (int, error) {
|
||||
if v.writeClosed {
|
||||
return 0, errSocketWriteClosed
|
||||
return 0, ErrSocketWriteClosed
|
||||
}
|
||||
|
||||
var err error
|
||||
@ -344,7 +344,7 @@ func (v *HVsockConn) Write(buf []byte) (int, error) {
|
||||
|
||||
for toWrite > 0 {
|
||||
if v.writeClosed {
|
||||
return 0, errSocketWriteClosed
|
||||
return 0, ErrSocketWriteClosed
|
||||
}
|
||||
|
||||
// We write batches of MSG + data which need to be
|
||||
@ -371,7 +371,7 @@ func (v *HVsockConn) Write(buf []byte) (int, error) {
|
||||
}
|
||||
if n != thisBatch {
|
||||
prDebug("Write Error 4\n")
|
||||
err = errSocketNotEnoughData
|
||||
err = ErrSocketNotEnoughData
|
||||
goto ErrOut
|
||||
}
|
||||
toWrite -= n
|
||||
@ -402,7 +402,7 @@ func (v *HVsockConn) sendMsg(msg uint32) error {
|
||||
return err
|
||||
}
|
||||
if n != len(b) {
|
||||
return errSocketMsgWrite
|
||||
return ErrSocketMsgWrite
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
1
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_darwin.go
generated
vendored
1
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_darwin.go
generated
vendored
@ -1,6 +1,7 @@
|
||||
// Dummy implementation to compile on Mac OSX
|
||||
|
||||
package hvsock
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
4
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_windows.go
generated
vendored
4
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_windows.go
generated
vendored
@ -240,7 +240,7 @@ func (v *hvsockConn) closeHandle() {
|
||||
func (s *hvsockConn) prepareIo() (*ioOperation, error) {
|
||||
s.wg.Add(1)
|
||||
if s.closing {
|
||||
return nil, errSocketClosed
|
||||
return nil, ErrSocketClosed
|
||||
}
|
||||
c := &ioOperation{}
|
||||
c.ch = make(chan ioResult)
|
||||
@ -299,7 +299,7 @@ func (v *hvsockConn) asyncIo(c *ioOperation, deadline time.Time, bytes uint32, e
|
||||
err = r.err
|
||||
if err == syscall.ERROR_OPERATION_ABORTED {
|
||||
if v.closing {
|
||||
err = errSocketClosed
|
||||
err = ErrSocketClosed
|
||||
} else if timedout {
|
||||
err = errTimeout
|
||||
}
|
||||
|
34
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/vsock/vsock_linux.go
generated
vendored
34
alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/vsock/vsock_linux.go
generated
vendored
@ -37,11 +37,33 @@ int accept_vm(int fd, struct sockaddr_vm *sa_vm, socklen_t *sa_vm_len) {
|
||||
import "C"
|
||||
|
||||
const (
|
||||
AF_VSOCK = 40
|
||||
VSOCK_CID_ANY = 4294967295 /* 2^32-1 */
|
||||
VSOCK_CID_SELF = 3
|
||||
AF_VSOCK = 40
|
||||
VSOCK_CID_ANY = 4294967295 /* 2^32-1 */
|
||||
VSOCK_CID_HYPERVISOR = 0
|
||||
VSOCK_CID_HOST = 2
|
||||
VSOCK_CID_SELF = 3
|
||||
)
|
||||
|
||||
func Dial(cid, port uint) (Conn, error) {
|
||||
fd, err := syscall.Socket(AF_VSOCK, syscall.SOCK_STREAM, 0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sa := C.struct_sockaddr_vm{}
|
||||
sa.svm_family = AF_VSOCK
|
||||
sa.svm_port = C.uint(port)
|
||||
sa.svm_cid = C.uint(cid)
|
||||
|
||||
if ret, errno := C.connect_sockaddr_vm(C.int(fd), &sa); ret != 0 {
|
||||
return nil, errors.New(fmt.Sprintf(
|
||||
"failed bind connect to %08x.%08x, returned %d, errno %d: %s",
|
||||
sa.svm_cid, sa.svm_port, ret, errno, errno))
|
||||
}
|
||||
|
||||
return newVsockConn(uintptr(fd), port)
|
||||
}
|
||||
|
||||
// Listen returns a net.Listener which can accept connections on the given
|
||||
// vhan port.
|
||||
func Listen(port uint) (net.Listener, error) {
|
||||
@ -55,8 +77,10 @@ func Listen(port uint) (net.Listener, error) {
|
||||
sa.svm_port = C.uint(port)
|
||||
sa.svm_cid = VSOCK_CID_ANY
|
||||
|
||||
if ret := C.bind_sockaddr_vm(C.int(accept_fd), &sa); ret != 0 {
|
||||
return nil, errors.New(fmt.Sprintf("failed bind vsock connection to %08x.%08x, returned %d", sa.svm_cid, sa.svm_port, ret))
|
||||
if ret, errno := C.bind_sockaddr_vm(C.int(accept_fd), &sa); ret != 0 {
|
||||
return nil, errors.New(fmt.Sprintf(
|
||||
"failed bind vsock connection to %08x.%08x, returned %d, errno %d: %s",
|
||||
sa.svm_cid, sa.svm_port, ret, errno, errno))
|
||||
}
|
||||
|
||||
err = syscall.Listen(accept_fd, syscall.SOMAXCONN)
|
||||
|
2
alpine/packages/go/vendor/manifest
vendored
2
alpine/packages/go/vendor/manifest
vendored
@ -5,7 +5,7 @@
|
||||
"importpath": "github.com/rneugeba/virtsock/go",
|
||||
"repository": "https://github.com/rneugeba/virtsock",
|
||||
"vcs": "git",
|
||||
"revision": "74097e05a883e89c70e6a27b342672c7fe6c846b",
|
||||
"revision": "650ef8224a0c06b4b20e9bee1600dbf677c8176d",
|
||||
"branch": "master",
|
||||
"path": "/go",
|
||||
"notests": true
|
||||
|
Loading…
Reference in New Issue
Block a user