aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Natapov <gleb@redhat.com>2009-10-22 17:43:43 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2009-10-27 12:29:01 -0500
commitb04c4134d6de28c249277de19e523bfbe4aebbd6 (patch)
tree4822966f1d30626059d7a54a0faf21851d4e56f6
parentnet: add receive_raw parameter to qemu_new_vlan_client() (diff)
downloadqemu-kvm-b04c4134d6de28c249277de19e523bfbe4aebbd6.tar.gz
qemu-kvm-b04c4134d6de28c249277de19e523bfbe4aebbd6.tar.bz2
qemu-kvm-b04c4134d6de28c249277de19e523bfbe4aebbd6.zip
net: use qemu_send_packet_raw() in qemu_announce_self()
Use qemu_send_packet_raw to send gratuitous arp. This will ensure that vnet header is handled properly. Also, avoid sending the gratuitous packet to the guest. There doesn't appear to be any reason for doing that and the code will currently just crash if the NIC is not associated with a vlan. Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--savevm.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/savevm.c b/savevm.c
index 95b77f368..b7abf43ce 100644
--- a/savevm.c
+++ b/savevm.c
@@ -126,8 +126,6 @@ static int announce_self_create(uint8_t *buf,
static void qemu_announce_self_once(void *opaque)
{
int i, len;
- VLANState *vlan;
- VLANClientState *vc;
uint8_t buf[60];
static int count = SELF_ANNOUNCE_ROUNDS;
QEMUTimer *timer = *(QEMUTimer **)opaque;
@@ -136,10 +134,7 @@ static void qemu_announce_self_once(void *opaque)
if (!nd_table[i].used)
continue;
len = announce_self_create(buf, nd_table[i].macaddr);
- vlan = nd_table[i].vlan;
- QTAILQ_FOREACH(vc, &vlan->clients, next) {
- vc->receive(vc, buf, len);
- }
+ qemu_send_packet_raw(nd_table[i].vc, buf, len);
}
if (--count) {
/* delay 50ms, 150ms, 250ms, ... */