diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-06-20 16:18:03 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-06-22 16:40:45 +0200 |
| commit | 14e6c472f54ac36d5bdfe451371c619953eb0a17 (patch) | |
| tree | 0c97519e7c31cbf93ed7ef8b06154a715b5a5599 /pkg | |
| parent | c71647f2cc73ee334260b797a96e51eca5c3d580 (diff) | |
vm/gvisor: add package
gvisor package provides support for gVisor, user-space kernel, testing.
See https://github.com/google/gvisor
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/rpctype/rpc.go | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/pkg/rpctype/rpc.go b/pkg/rpctype/rpc.go index 939805212..d45d3d49d 100644 --- a/pkg/rpctype/rpc.go +++ b/pkg/rpctype/rpc.go @@ -7,6 +7,7 @@ import ( "fmt" "net" "net/rpc" + "os" "time" "github.com/google/syzkaller/pkg/log" @@ -54,12 +55,20 @@ type RPCClient struct { } func NewRPCClient(addr string) (*RPCClient, error) { - conn, err := net.DialTimeout("tcp", addr, 60*time.Second) - if err != nil { - return nil, err + var conn net.Conn + var err error + if addr == "stdin" { + // This is used by vm/gvisor which passes us a unix socket connection in stdin. + if conn, err = net.FileConn(os.Stdin); err != nil { + return nil, err + } + } else { + if conn, err = net.DialTimeout("tcp", addr, 60*time.Second); err != nil { + return nil, err + } + conn.(*net.TCPConn).SetKeepAlive(true) + conn.(*net.TCPConn).SetKeepAlivePeriod(time.Minute) } - conn.(*net.TCPConn).SetKeepAlive(true) - conn.(*net.TCPConn).SetKeepAlivePeriod(time.Minute) cli := &RPCClient{ conn: conn, c: rpc.NewClient(conn), |
