static void qemu_announce_self_once(void *opaque) { int i, len; VLANState *vlan; VLANClientState *vc; uint8_t buf[256]; static int count = SELF_ANNOUNCE_ROUNDS; QEMUTimer *timer = *(QEMUTimer **)opaque; for (i = 0; i < MAX_NICS; i++) { if (!nd_table[i].used) continue; len = announce_self_create(buf, nd_table[i].macaddr); vlan = nd_table[i].vlan; for(vc = vlan->first_client; vc != NULL; vc = vc->next) { qemu_send_packet_raw(vc, buf, len); } } if (count--) { qemu_mod_timer(timer, qemu_get_clock(rt_clock) + 100); } else { qemu_del_timer(timer); qemu_free_timer(timer); } }
static void qemu_announce_self_iter(NICState *nic, void *opaque) { uint8_t buf[60]; int len; len = announce_self_create(buf, nic->conf->macaddr.a); qemu_send_packet_raw(&nic->nc, buf, len); }
static void qemu_announce_self_iter(NICState *nic, void *opaque) { uint8_t buf[60]; int len; trace_qemu_announce_self_iter(qemu_ether_ntoa(&nic->conf->macaddr)); len = announce_self_create(buf, nic->conf->macaddr.a); qemu_send_packet_raw(qemu_get_queue(nic), buf, len); }