diff --git a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock.go b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock.go index 4f51e222d..2e4f19ebd 100644 --- a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock.go +++ b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock.go @@ -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 } diff --git a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_darwin.go b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_darwin.go index c448fb072..99f8ea1d0 100644 --- a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_darwin.go +++ b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_darwin.go @@ -1,6 +1,7 @@ // Dummy implementation to compile on Mac OSX package hvsock + import ( "errors" "time" diff --git a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_windows.go b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_windows.go index 973f3ff16..3008f9c95 100644 --- a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_windows.go +++ b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/hvsock/hvsock_windows.go @@ -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 } diff --git a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/vsock/vsock_linux.go b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/vsock/vsock_linux.go index f8c38e00a..21da5cd69 100644 --- a/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/vsock/vsock_linux.go +++ b/alpine/packages/go/vendor/github.com/rneugeba/virtsock/go/vsock/vsock_linux.go @@ -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) diff --git a/alpine/packages/go/vendor/manifest b/alpine/packages/go/vendor/manifest index a2d236026..9f686cf79 100644 --- a/alpine/packages/go/vendor/manifest +++ b/alpine/packages/go/vendor/manifest @@ -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