[cros_vm]: Support for vlan.

BUG=chromium:782664
TEST=manual

Change-Id: I6e0ee1c4668bb58cfcaa0dde8c37450ecf6c52fa
Reviewed-on: https://chromium-review.googlesource.com/780726
Commit-Ready: Achuith Bhandarkar <achuith@chromium.org>
Tested-by: Achuith Bhandarkar <achuith@chromium.org>
Reviewed-by: Prathmesh Prabhu <pprabhu@chromium.org>
diff --git a/scripts/cros_vm.py b/scripts/cros_vm.py
index 7cfc203..202484b 100644
--- a/scripts/cros_vm.py
+++ b/scripts/cros_vm.py
@@ -172,8 +172,14 @@
             '-chardev', 'pipe,id=control_pipe,path=%s' % self.kvm_monitor,
             '-serial', 'file:%s' % self.kvm_serial,
             '-mon', 'chardev=control_pipe',
-            '-net', 'nic,model=virtio',
-            '-net', 'user,hostfwd=tcp:127.0.0.1:%d-:22' % self.ssh_port,
+            # Qemu-vlans are used by qemu to separate out network traffic on the
+            # slirp network bridge. qemu forwards traffic on a slirp vlan to all
+            # ports conected on that vlan. By default, slirp ports are on vlan
+            # 0. We explicitly set a vlan here so that another qemu VM using
+            # slirp doesn't conflict with our network traffic.
+            '-net', 'nic,model=virtio,vlan=%d' % self.ssh_port,
+            '-net', 'user,hostfwd=tcp:127.0.0.1:%d-:22,vlan=%d'
+            % (self.ssh_port, self.ssh_port),
             '-drive', 'file=%s,index=0,media=disk,cache=unsafe,format=raw'
             % self.image_path]
     if self.enable_kvm: