Skip to content

Commit d3fddf1

Browse files
committed
Add support for QEMU vhost networking
This patch enables support for running OSv instances with vhost enabled. It relies on qemu scripts provided in `/etc` (e.g. `/etc/qemu-ifup`) to bring tap device to qemu. Using vhost will make launched instances accessible from the network. Change-Id: I3cd7c130587b30cbf5a51788146c4fdaacd054a9
1 parent c61cd8f commit d3fddf1

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

capstan.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func main() {
143143
cli.StringFlag{Name: "p", Value: hypervisor.Default(), Usage: "hypervisor: qemu|vbox|vmw|gce"},
144144
cli.StringFlag{Name: "m", Value: "1G", Usage: "memory size"},
145145
cli.IntFlag{Name: "c", Value: 2, Usage: "number of CPUs"},
146-
cli.StringFlag{Name: "n", Value: "nat", Usage: "networking: nat|bridge|tap"},
146+
cli.StringFlag{Name: "n", Value: "nat", Usage: "networking: nat|bridge|tap|vhost"},
147147
cli.BoolFlag{Name: "v", Usage: "verbose mode"},
148148
cli.StringFlag{Name: "b", Value: "", Usage: "networking device (bridge or tap): e.g., virbr0, vboxnet0, tap0"},
149149
cli.StringSliceFlag{Name: "f", Value: new(cli.StringSlice), Usage: "port forwarding rules"},

hypervisor/qemu/qemu.go

+8
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,15 @@ func (c *VMConfig) vmNetworking() ([]string, error) {
322322
}
323323
args = append(args, "-netdev", fmt.Sprintf("tap,id=hn0,ifname=%s,script=no,downscript=no", c.Bridge), "-device", fmt.Sprintf("virtio-net-pci,netdev=hn0,id=nic1,mac=%s", mac.String()))
324324
return args, nil
325+
case "vhost":
326+
mac, err := c.vmMAC()
327+
if err != nil {
328+
return nil, err
329+
}
330+
args = append(args, "-net", fmt.Sprintf("nic,model=virtio,macaddr=%s,netdev=nic-0", mac.String()), "-netdev", "tap,id=nic-0,vhost=on")
331+
return args, nil
325332
}
333+
326334
return nil, fmt.Errorf("%s: networking not supported", c.Networking)
327335
}
328336

0 commit comments

Comments
 (0)