aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-20 16:18:03 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-22 16:40:45 +0200
commit14e6c472f54ac36d5bdfe451371c619953eb0a17 (patch)
tree0c97519e7c31cbf93ed7ef8b06154a715b5a5599 /pkg
parentc71647f2cc73ee334260b797a96e51eca5c3d580 (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.go19
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),