diff --git a/hw/e1000.c b/hw/e1000.c index 03c573bf1e..5b0b7314d0 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -1074,10 +1074,7 @@ pci_e1000_init(PCIBus *bus, NICInfo *nd, int devfn) d->vc = qemu_new_vlan_client(nd->vlan, nd->model, e1000_receive, e1000_can_receive, d); - snprintf(d->vc->info_str, sizeof(d->vc->info_str), - "%s macaddr=%02x:%02x:%02x:%02x:%02x:%02x", info_str, - d->nd->macaddr[0], d->nd->macaddr[1], d->nd->macaddr[2], - d->nd->macaddr[3], d->nd->macaddr[4], d->nd->macaddr[5]); + qemu_format_nic_info_str(d->vc, d->nd->macaddr); register_savevm(info_str, -1, 2, nic_save, nic_load, d); } diff --git a/hw/eepro100.c b/hw/eepro100.c index a7861ca7c4..86a4e6e511 100644 --- a/hw/eepro100.c +++ b/hw/eepro100.c @@ -1779,11 +1779,7 @@ static void nic_init(PCIBus * bus, NICInfo * nd, s->vc = qemu_new_vlan_client(nd->vlan, nd->model, nic_receive, nic_can_receive, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "eepro100 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - s->macaddr[0], - s->macaddr[1], - s->macaddr[2], s->macaddr[3], s->macaddr[4], s->macaddr[5]); + qemu_format_nic_info_str(s->vc, s->macaddr); qemu_register_reset(nic_reset, s); diff --git a/hw/mipsnet.c b/hw/mipsnet.c index 549e6f38f1..4b3e8e9347 100644 --- a/hw/mipsnet.c +++ b/hw/mipsnet.c @@ -256,14 +256,7 @@ void mipsnet_init (int base, qemu_irq irq, NICInfo *nd) s->vc = NULL; } - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "mipsnet macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - s->nd->macaddr[0], - s->nd->macaddr[1], - s->nd->macaddr[2], - s->nd->macaddr[3], - s->nd->macaddr[4], - s->nd->macaddr[5]); + qemu_format_nic_info_str(s->vc, s->nd->macaddr); mipsnet_reset(s); register_savevm("mipsnet", 0, 0, mipsnet_save, mipsnet_load, s); diff --git a/hw/ne2000.c b/hw/ne2000.c index dc9798902e..ad97bc5f60 100644 --- a/hw/ne2000.c +++ b/hw/ne2000.c @@ -744,14 +744,7 @@ void isa_ne2000_init(int base, qemu_irq irq, NICInfo *nd) s->vc = qemu_new_vlan_client(nd->vlan, nd->model, ne2000_receive, ne2000_can_receive, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "ne2000 macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - s->macaddr[0], - s->macaddr[1], - s->macaddr[2], - s->macaddr[3], - s->macaddr[4], - s->macaddr[5]); + qemu_format_nic_info_str(s->vc, s->macaddr); register_savevm("ne2000", -1, 2, ne2000_save, ne2000_load, s); } @@ -814,14 +807,7 @@ void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn) s->vc = qemu_new_vlan_client(nd->vlan, nd->model, ne2000_receive, ne2000_can_receive, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "ne2000 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - s->macaddr[0], - s->macaddr[1], - s->macaddr[2], - s->macaddr[3], - s->macaddr[4], - s->macaddr[5]); + qemu_format_nic_info_str(s->vc, s->macaddr); register_savevm("ne2000", -1, 3, ne2000_save, ne2000_load, s); } diff --git a/hw/pcnet.c b/hw/pcnet.c index e961a06db2..5b45956299 100644 --- a/hw/pcnet.c +++ b/hw/pcnet.c @@ -1939,14 +1939,7 @@ static void pcnet_common_init(PCNetState *d, NICInfo *nd, const char *info_str) d->vc = qemu_new_vlan_client(nd->vlan, nd->model, pcnet_receive, pcnet_can_receive, d); - snprintf(d->vc->info_str, sizeof(d->vc->info_str), - "pcnet macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - d->nd->macaddr[0], - d->nd->macaddr[1], - d->nd->macaddr[2], - d->nd->macaddr[3], - d->nd->macaddr[4], - d->nd->macaddr[5]); + qemu_format_nic_info_str(d->vc, d->nd->macaddr); } else { d->vc = NULL; } diff --git a/hw/rtl8139.c b/hw/rtl8139.c index 39f32094ec..d51722054e 100644 --- a/hw/rtl8139.c +++ b/hw/rtl8139.c @@ -3441,14 +3441,7 @@ void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn) s->vc = qemu_new_vlan_client(nd->vlan, nd->model, rtl8139_receive, rtl8139_can_receive, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "rtl8139 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - s->macaddr[0], - s->macaddr[1], - s->macaddr[2], - s->macaddr[3], - s->macaddr[4], - s->macaddr[5]); + qemu_format_nic_info_str(s->vc, s->macaddr); s->cplus_txbuffer = NULL; s->cplus_txbuffer_len = 0; diff --git a/hw/usb-net.c b/hw/usb-net.c index 40ee41b693..5539336dc8 100644 --- a/hw/usb-net.c +++ b/hw/usb-net.c @@ -1456,14 +1456,12 @@ USBDevice *usb_net_init(NICInfo *nd) s->vc = qemu_new_vlan_client(nd->vlan, nd->model, usbnet_receive, usbnet_can_receive, s); + qemu_format_nic_info_str(s->vc, s->mac); + snprintf(s->usbstring_mac, sizeof(s->usbstring_mac), "%02x%02x%02x%02x%02x%02x", 0x40, s->mac[1], s->mac[2], s->mac[3], s->mac[4], s->mac[5]); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "usbnet macaddr=%02x:%02x:%02x:%02x:%02x:%02x", - s->mac[0], s->mac[1], s->mac[2], - s->mac[3], s->mac[4], s->mac[5]); fprintf(stderr, "usbnet: initialized mac %02x:%02x:%02x:%02x:%02x:%02x\n", s->mac[0], s->mac[1], s->mac[2], s->mac[3], s->mac[4], s->mac[5]); diff --git a/net.c b/net.c index c268233ad3..e29379050f 100644 --- a/net.c +++ b/net.c @@ -296,6 +296,14 @@ static int parse_unix_path(struct sockaddr_un *uaddr, const char *str) } #endif +void qemu_format_nic_info_str(VLANClientState *vc, uint8_t macaddr[6]) +{ + snprintf(vc->info_str, sizeof(vc->info_str), + "macaddr=%02x:%02x:%02x:%02x:%02x:%02x", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); +} + static char *assign_name(VLANClientState *vc1, const char *model) { VLANState *vlan; @@ -474,7 +482,7 @@ static int net_slirp_init(VLANState *vlan, const char *model) } slirp_vc = qemu_new_vlan_client(vlan, model, slirp_receive, NULL, NULL); - snprintf(slirp_vc->info_str, sizeof(slirp_vc->info_str), "user redirector"); + slirp_vc->info_str[0] = '\0'; return 0; } @@ -699,7 +707,7 @@ static TAPState *net_tap_fd_init(VLANState *vlan, const char *model, int fd) s->vc->fd_readv = tap_receive_iov; #endif qemu_set_fd_handler(s->fd, tap_send, NULL, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: fd=%d", fd); + snprintf(s->vc->info_str, sizeof(s->vc->info_str), "fd=%d", fd); return s; } @@ -954,7 +962,8 @@ static int net_tap_init(VLANState *vlan, const char *model, const char *ifname1, if (!s) return -1; snprintf(s->vc->info_str, sizeof(s->vc->info_str), - "tap: ifname=%s setup_script=%s", ifname, setup_script); + "ifname=%s,script=%s,downscript=%s", + ifname, setup_script, down_script); if (down_script && strcmp(down_script, "no")) snprintf(s->down_script, sizeof(s->down_script), "%s", down_script); return 0; @@ -1016,7 +1025,7 @@ static int net_vde_init(VLANState *vlan, const char *model, const char *sock, } s->vc = qemu_new_vlan_client(vlan, model, vde_from_qemu, NULL, s); qemu_set_fd_handler(vde_datafd(s->vde), vde_to_qemu, NULL, s); - snprintf(s->vc->info_str, sizeof(s->vc->info_str), "vde: sock=%s fd=%d", + snprintf(s->vc->info_str, sizeof(s->vc->info_str), "sock=%s,fd=%d", sock, vde_datafd(s->vde)); return 0; } @@ -1639,7 +1648,7 @@ void do_info_network(void) for(vlan = first_vlan; vlan != NULL; vlan = vlan->next) { term_printf("VLAN %d devices:\n", vlan->id); for(vc = vlan->first_client; vc != NULL; vc = vc->next) - term_printf(" %s\n", vc->info_str); + term_printf(" %s: %s\n", vc->name, vc->info_str); } } @@ -1657,7 +1666,8 @@ void net_cleanup(void) char ifname[64]; TAPState *s = vc->opaque; - if (sscanf(vc->info_str, "tap: ifname=%63s ", ifname) == 1 && + if (strcmp(vc->model, "tap") == 0 && + sscanf(vc->info_str, "ifname=%63s ", ifname) == 1 && s->down_script[0]) launch_script(s->down_script, ifname, s->fd); } diff --git a/net.h b/net.h index 078dd18dd6..904519a354 100644 --- a/net.h +++ b/net.h @@ -41,6 +41,7 @@ int qemu_can_send_packet(VLANClientState *vc); ssize_t qemu_sendv_packet(VLANClientState *vc, const struct iovec *iov, int iovcnt); void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size); +void qemu_format_nic_info_str(VLANClientState *vc, uint8_t macaddr[6]); void qemu_handler_true(void *opaque); void do_info_network(void);