qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 19/19] virtio-net: add tap_has_ufo flag to saved sta


From: Mark McLoughlin
Subject: [Qemu-devel] [PATCH 19/19] virtio-net: add tap_has_ufo flag to saved state
Date: Wed, 21 Oct 2009 12:27:58 +0100

If we tell the guest we support UFO and then migrate to host which
doesn't support it, we will find ourselves in grave difficulties.

Prevent this scenario by adding a flag to virtio-net's savevm format
which indicates whether the device requires host UFO support.

Signed-off-by: Mark McLoughlin <address@hidden>
---
 hw/virtio-net.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index 3349800..f919952 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -16,7 +16,7 @@
 #include "qemu-timer.h"
 #include "virtio-net.h"
 
-#define VIRTIO_NET_VM_VERSION    10
+#define VIRTIO_NET_VM_VERSION    11
 
 #define MAC_TABLE_ENTRIES    64
 #define MAX_VLAN    (1 << 12)   /* Per 802.1Q definition */
@@ -694,6 +694,7 @@ static void virtio_net_save(QEMUFile *f, void *opaque)
     qemu_put_byte(f, n->nomulti);
     qemu_put_byte(f, n->nouni);
     qemu_put_byte(f, n->nobcast);
+    qemu_put_byte(f, peer_has_vnet_hdr(n) && tap_has_ufo(n->vc->peer));
 }
 
 static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
@@ -769,6 +770,15 @@ static int virtio_net_load(QEMUFile *f, void *opaque, int 
version_id)
         n->nobcast = qemu_get_byte(f);
     }
 
+    if (version_id >= 11) {
+        if (qemu_get_byte(f) &&
+            (!peer_has_vnet_hdr(n) || !tap_has_ufo(n->vc->peer))) {
+            fprintf(stderr,
+                    "virtio-net: saved image requires TUN_F_UFO support\n");
+            return -1;
+        }
+    }
+
     /* Find the first multicast entry in the saved MAC filter */
     for (i = 0; i < n->mac_table.in_use; i++) {
         if (n->mac_table.macs[i * ETH_ALEN] & 1) {
-- 
1.6.2.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]