github.com/Cloud-Foundations/Dominator@v0.3.4/lib/net/vsock/impl_linux.go (about)

     1  package vsock
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"golang.org/x/sys/unix"
     7  )
     8  
     9  const (
    10  	vsockDev = "/dev/vsock"
    11  )
    12  
    13  func checkVsockets() error {
    14  	if fd, err := unix.Socket(unix.AF_VSOCK, unix.SOCK_STREAM, 0); err != nil {
    15  		return err
    16  	} else {
    17  		unix.Close(fd)
    18  		return nil
    19  	}
    20  }
    21  
    22  func getContextID() (uint32, error) {
    23  	fd, err := unix.Open(vsockDev, 0, 0)
    24  	if err != nil {
    25  		return 0, fmt.Errorf("error opening %s: %s", vsockDev, err)
    26  	}
    27  	defer unix.Close(fd)
    28  	return unix.IoctlGetUint32(fd,
    29  		unix.IOCTL_VM_SOCKETS_GET_LOCAL_CID)
    30  }