From ba2cbfd952ad6ef034730d81f7c79c71c7d674d9 Mon Sep 17 00:00:00 2001
From: Adam Glasgall <glasgall@mit.edu>
Date: Mon, 2 Sep 2013 21:16:49 -0400
Subject: [PATCH] fix PVHVM networking

---
 debian/changelog |    6 ++++++
 invirt-database  |    5 ++---
 vif-invirtroute  |   13 +++++++++++--
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 92270a4..2f83478 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+invirt-xen-config (0.0.52) UNRELEASED; urgency=low
+
+  * Fix PVHVM networking
+
+ -- Adam Glasgall <glasgall@mit.edu>  Mon, 02 Sep 2013 21:16:01 -0400
+
 invirt-xen-config (0.0.51) unstable; urgency=low
 
   * Fixed code for NIC model options.
diff --git a/invirt-database b/invirt-database
index ec611c1..bf1509f 100644
--- a/invirt-database
+++ b/invirt-database
@@ -107,10 +107,9 @@ elif cdrom is not None:
     codepath = 'hvm'
 
 if codepath == 'hvm':
-    # Disable PVHVM for now until we figure out the best way to do this
-    xen_platform_pci = 0
+    xen_platform_pci = 1
     ioemu = "ioemu:"
-    viftype = "type=ioemu,model=pcnet, "
+    viftype = "model=pcnet, "
     kernel = '/usr/lib/xen-4.1/boot/hvmloader'
     builder = 'hvm'
     vnc = 1
diff --git a/vif-invirtroute b/vif-invirtroute
index f484f87..49a7e4c 100755
--- a/vif-invirtroute
+++ b/vif-invirtroute
@@ -23,7 +23,6 @@
 # type read to determine if the device is ioemu
 
 #============================================================================
-
 dir=$(dirname "$0")
 . "$dir/vif-common.sh"
 
@@ -55,7 +54,17 @@ if [  ${vif_type} != "ioemu"  -o  x${qemu_online} = xyes ] ; then
     # If we've been given a list of IP addresses, then add routes from dom0 to
     # the guest using those addresses.
 	for addr in ${ip} ; do
-	    ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip}
+	    if [ $ipcmd == "add" ]; then
+		case $dev in
+		    vif*)
+			metric="metric 2"
+			;;
+		    tap*)
+			metric="metric 1"
+			;;
+		esac
+	    fi
+	    ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip} $metric
 	    case "$command" in
 		online|add)
 		    arpspoof -i $(invirt-getconf xen.iface) -t 18.181.0.1 ${addr}&
-- 
1.7.9.5