mirror of https://gitee.com/openkylin/qemu.git
virtio-net: Remove old migration version support
virtio-net has had version 11 since 0ce0e8f4
in 2009
(v0.11.0-rc0-1480-g0ce0e8f) - remove the code to support loading
anything earlier.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Amit Shah <amit.shah@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
209b27bbe9
commit
76010cb320
|
@ -1543,7 +1543,7 @@ static int virtio_net_load(QEMUFile *f, void *opaque, int version_id)
|
|||
VirtIONet *n = opaque;
|
||||
VirtIODevice *vdev = VIRTIO_DEVICE(n);
|
||||
|
||||
if (version_id < 2 || version_id > VIRTIO_NET_VM_VERSION)
|
||||
if (version_id != VIRTIO_NET_VM_VERSION)
|
||||
return -EINVAL;
|
||||
|
||||
return virtio_load(vdev, f, version_id);
|
||||
|
@ -1562,68 +1562,49 @@ static int virtio_net_load_device(VirtIODevice *vdev, QEMUFile *f,
|
|||
virtio_vdev_has_feature(vdev,
|
||||
VIRTIO_F_VERSION_1));
|
||||
|
||||
if (version_id >= 3)
|
||||
n->status = qemu_get_be16(f);
|
||||
n->status = qemu_get_be16(f);
|
||||
|
||||
if (version_id >= 4) {
|
||||
if (version_id < 8) {
|
||||
n->promisc = qemu_get_be32(f);
|
||||
n->allmulti = qemu_get_be32(f);
|
||||
} else {
|
||||
n->promisc = qemu_get_byte(f);
|
||||
n->allmulti = qemu_get_byte(f);
|
||||
}
|
||||
}
|
||||
|
||||
if (version_id >= 5) {
|
||||
n->mac_table.in_use = qemu_get_be32(f);
|
||||
/* MAC_TABLE_ENTRIES may be different from the saved image */
|
||||
if (n->mac_table.in_use <= MAC_TABLE_ENTRIES) {
|
||||
qemu_get_buffer(f, n->mac_table.macs,
|
||||
n->mac_table.in_use * ETH_ALEN);
|
||||
} else {
|
||||
int64_t i;
|
||||
|
||||
/* Overflow detected - can happen if source has a larger MAC table.
|
||||
* We simply set overflow flag so there's no need to maintain the
|
||||
* table of addresses, discard them all.
|
||||
* Note: 64 bit math to avoid integer overflow.
|
||||
*/
|
||||
for (i = 0; i < (int64_t)n->mac_table.in_use * ETH_ALEN; ++i) {
|
||||
qemu_get_byte(f);
|
||||
}
|
||||
n->mac_table.multi_overflow = n->mac_table.uni_overflow = 1;
|
||||
n->mac_table.in_use = 0;
|
||||
n->promisc = qemu_get_byte(f);
|
||||
n->allmulti = qemu_get_byte(f);
|
||||
|
||||
n->mac_table.in_use = qemu_get_be32(f);
|
||||
/* MAC_TABLE_ENTRIES may be different from the saved image */
|
||||
if (n->mac_table.in_use <= MAC_TABLE_ENTRIES) {
|
||||
qemu_get_buffer(f, n->mac_table.macs,
|
||||
n->mac_table.in_use * ETH_ALEN);
|
||||
} else {
|
||||
int64_t i;
|
||||
|
||||
/* Overflow detected - can happen if source has a larger MAC table.
|
||||
* We simply set overflow flag so there's no need to maintain the
|
||||
* table of addresses, discard them all.
|
||||
* Note: 64 bit math to avoid integer overflow.
|
||||
*/
|
||||
for (i = 0; i < (int64_t)n->mac_table.in_use * ETH_ALEN; ++i) {
|
||||
qemu_get_byte(f);
|
||||
}
|
||||
n->mac_table.multi_overflow = n->mac_table.uni_overflow = 1;
|
||||
n->mac_table.in_use = 0;
|
||||
}
|
||||
|
||||
if (version_id >= 6)
|
||||
qemu_get_buffer(f, (uint8_t *)n->vlans, MAX_VLAN >> 3);
|
||||
qemu_get_buffer(f, (uint8_t *)n->vlans, MAX_VLAN >> 3);
|
||||
|
||||
if (version_id >= 7) {
|
||||
if (qemu_get_be32(f) && !peer_has_vnet_hdr(n)) {
|
||||
error_report("virtio-net: saved image requires vnet_hdr=on");
|
||||
return -1;
|
||||
}
|
||||
if (qemu_get_be32(f) && !peer_has_vnet_hdr(n)) {
|
||||
error_report("virtio-net: saved image requires vnet_hdr=on");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (version_id >= 9) {
|
||||
n->mac_table.multi_overflow = qemu_get_byte(f);
|
||||
n->mac_table.uni_overflow = qemu_get_byte(f);
|
||||
}
|
||||
n->mac_table.multi_overflow = qemu_get_byte(f);
|
||||
n->mac_table.uni_overflow = qemu_get_byte(f);
|
||||
|
||||
if (version_id >= 10) {
|
||||
n->alluni = qemu_get_byte(f);
|
||||
n->nomulti = qemu_get_byte(f);
|
||||
n->nouni = qemu_get_byte(f);
|
||||
n->nobcast = qemu_get_byte(f);
|
||||
}
|
||||
n->alluni = qemu_get_byte(f);
|
||||
n->nomulti = qemu_get_byte(f);
|
||||
n->nouni = qemu_get_byte(f);
|
||||
n->nobcast = qemu_get_byte(f);
|
||||
|
||||
if (version_id >= 11) {
|
||||
if (qemu_get_byte(f) && !peer_has_ufo(n)) {
|
||||
error_report("virtio-net: saved image requires TUN_F_UFO support");
|
||||
return -1;
|
||||
}
|
||||
if (qemu_get_byte(f) && !peer_has_ufo(n)) {
|
||||
error_report("virtio-net: saved image requires TUN_F_UFO support");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n->max_queues > 1) {
|
||||
|
|
Loading…
Reference in New Issue