Revision bf38c1a0

b/hw/e1000.c
1071 1071
    d->rxbuf_min_shift = 1;
1072 1072
    memset(&d->tx, 0, sizeof d->tx);
1073 1073

  
1074
    d->vc = qemu_new_vlan_client(nd->vlan, e1000_receive,
1075
                                 e1000_can_receive, d);
1074
    d->vc = qemu_new_vlan_client(nd->vlan, nd->model,
1075
                                 e1000_receive, e1000_can_receive, d);
1076 1076

  
1077 1077
    snprintf(d->vc->info_str, sizeof(d->vc->info_str),
1078 1078
             "%s macaddr=%02x:%02x:%02x:%02x:%02x:%02x", info_str,
b/hw/eepro100.c
1776 1776

  
1777 1777
    nic_reset(s);
1778 1778

  
1779
    s->vc = qemu_new_vlan_client(nd->vlan, nic_receive, nic_can_receive, s);
1779
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
1780
                                 nic_receive, nic_can_receive, s);
1780 1781

  
1781 1782
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
1782 1783
             "eepro100 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
b/hw/etraxfs_eth.c
572 572
	eth->ethregs = cpu_register_io_memory(0, eth_read, eth_write, eth);
573 573
	cpu_register_physical_memory (base, 0x5c, eth->ethregs);
574 574

  
575
	eth->vc = qemu_new_vlan_client(nd->vlan, 
575
	eth->vc = qemu_new_vlan_client(nd->vlan, nd->model,
576 576
				       eth_receive, eth_can_receive, eth);
577 577

  
578 578
	return dma;
b/hw/mcf_fec.c
452 452
                                       mcf_fec_writefn, s);
453 453
    cpu_register_physical_memory(base, 0x400, iomemtype);
454 454

  
455
    s->vc = qemu_new_vlan_client(nd->vlan, mcf_fec_receive,
456
                                 mcf_fec_can_receive, s);
455
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
456
                                 mcf_fec_receive, mcf_fec_can_receive, s);
457 457
    memcpy(s->macaddr, nd->macaddr, 6);
458 458
}
b/hw/mipsnet.c
250 250
    s->irq = irq;
251 251
    s->nd = nd;
252 252
    if (nd && nd->vlan) {
253
        s->vc = qemu_new_vlan_client(nd->vlan, mipsnet_receive,
254
                                     mipsnet_can_receive, s);
253
        s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
254
                                     mipsnet_receive, mipsnet_can_receive, s);
255 255
    } else {
256 256
        s->vc = NULL;
257 257
    }
b/hw/musicpal.c
718 718
    if (!s)
719 719
        return;
720 720
    s->irq = irq;
721
    s->vc = qemu_new_vlan_client(nd->vlan, eth_receive, eth_can_receive, s);
721
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
722
                                 eth_receive, eth_can_receive, s);
722 723
    iomemtype = cpu_register_io_memory(0, mv88w8618_eth_readfn,
723 724
                                       mv88w8618_eth_writefn, s);
724 725
    cpu_register_physical_memory(base, MP_ETH_SIZE, iomemtype);
b/hw/ne2000.c
741 741

  
742 742
    ne2000_reset(s);
743 743

  
744
    s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive,
745
                                 ne2000_can_receive, s);
744
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
745
                                 ne2000_receive, ne2000_can_receive, s);
746 746

  
747 747
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
748 748
             "ne2000 macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
......
811 811
    s->pci_dev = (PCIDevice *)d;
812 812
    memcpy(s->macaddr, nd->macaddr, 6);
813 813
    ne2000_reset(s);
814
    s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive,
815
                                 ne2000_can_receive, s);
814
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
815
                                 ne2000_receive, ne2000_can_receive, s);
816 816

  
817 817
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
818 818
             "ne2000 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
b/hw/pcnet.c
1936 1936
    d->nd = nd;
1937 1937

  
1938 1938
    if (nd && nd->vlan) {
1939
        d->vc = qemu_new_vlan_client(nd->vlan, pcnet_receive,
1940
                                     pcnet_can_receive, d);
1939
        d->vc = qemu_new_vlan_client(nd->vlan, nd->model,
1940
                                     pcnet_receive, pcnet_can_receive, d);
1941 1941

  
1942 1942
        snprintf(d->vc->info_str, sizeof(d->vc->info_str),
1943 1943
                 "pcnet macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
b/hw/rtl8139.c
3438 3438
    s->pci_dev = (PCIDevice *)d;
3439 3439
    memcpy(s->macaddr, nd->macaddr, 6);
3440 3440
    rtl8139_reset(s);
3441
    s->vc = qemu_new_vlan_client(nd->vlan, rtl8139_receive,
3442
                                 rtl8139_can_receive, s);
3441
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
3442
                                 rtl8139_receive, rtl8139_can_receive, s);
3443 3443

  
3444 3444
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
3445 3445
             "rtl8139 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
b/hw/smc91c111.c
704 704

  
705 705
    smc91c111_reset(s);
706 706

  
707
    s->vc = qemu_new_vlan_client(nd->vlan, smc91c111_receive,
708
                                 smc91c111_can_receive, s);
707
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
708
                                 smc91c111_receive, smc91c111_can_receive, s);
709 709
    /* ??? Save/restore.  */
710 710
}
b/hw/stellaris_enet.c
397 397
    memcpy(s->macaddr, nd->macaddr, 6);
398 398

  
399 399
    if (nd->vlan)
400
        s->vc = qemu_new_vlan_client(nd->vlan, stellaris_enet_receive,
401
                                     stellaris_enet_can_receive, s);
400
        s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
401
                                     stellaris_enet_receive, stellaris_enet_can_receive, s);
402 402

  
403 403
    stellaris_enet_reset(s);
404 404
    register_savevm("stellaris_enet", -1, 1,
b/hw/usb-net.c
1453 1453

  
1454 1454
    pstrcpy(s->dev.devname, sizeof(s->dev.devname),
1455 1455
                    "QEMU USB Network Interface");
1456
    s->vc = qemu_new_vlan_client(nd->vlan,
1456
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model,
1457 1457
                    usbnet_receive, usbnet_can_receive, s);
1458 1458

  
1459 1459
    snprintf(s->usbstring_mac, sizeof(s->usbstring_mac),
b/hw/virtio-net.c
315 315
    n->rx_vq = virtio_add_queue(&n->vdev, 256, virtio_net_handle_rx);
316 316
    n->tx_vq = virtio_add_queue(&n->vdev, 256, virtio_net_handle_tx);
317 317
    memcpy(n->mac, nd->macaddr, 6);
318
    n->vc = qemu_new_vlan_client(nd->vlan, virtio_net_receive,
319
                                 virtio_net_can_receive, n);
318
    n->vc = qemu_new_vlan_client(nd->vlan, nd->model,
319
                                 virtio_net_receive, virtio_net_can_receive, n);
320 320

  
321 321
    n->tx_timer = qemu_new_timer(vm_clock, virtio_net_tx_timer, n);
322 322
    n->tx_timer_active = 0;
b/net.c
297 297
#endif
298 298

  
299 299
VLANClientState *qemu_new_vlan_client(VLANState *vlan,
300
                                      const char *model,
300 301
                                      IOReadHandler *fd_read,
301 302
                                      IOCanRWHandler *fd_can_read,
302 303
                                      void *opaque)
......
305 306
    vc = qemu_mallocz(sizeof(VLANClientState));
306 307
    if (!vc)
307 308
        return NULL;
309
    vc->model = strdup(model);
308 310
    vc->fd_read = fd_read;
309 311
    vc->fd_can_read = fd_can_read;
310 312
    vc->opaque = opaque;
......
325 327
    while (*pvc != NULL)
326 328
        if (*pvc == vc) {
327 329
            *pvc = vc->next;
330
            free(vc->model);
328 331
            free(vc);
329 332
            break;
330 333
        } else
......
442 445
    slirp_input(buf, size);
443 446
}
444 447

  
445
static int net_slirp_init(VLANState *vlan)
448
static int net_slirp_init(VLANState *vlan, const char *model)
446 449
{
447 450
    if (!slirp_inited) {
448 451
        slirp_inited = 1;
449 452
        slirp_init();
450 453
    }
451
    slirp_vc = qemu_new_vlan_client(vlan,
454
    slirp_vc = qemu_new_vlan_client(vlan, model,
452 455
                                    slirp_receive, NULL, NULL);
453 456
    snprintf(slirp_vc->info_str, sizeof(slirp_vc->info_str), "user redirector");
454 457
    return 0;
......
662 665

  
663 666
/* fd support */
664 667

  
665
static TAPState *net_tap_fd_init(VLANState *vlan, int fd)
668
static TAPState *net_tap_fd_init(VLANState *vlan, const char *model, int fd)
666 669
{
667 670
    TAPState *s;
668 671

  
......
670 673
    if (!s)
671 674
        return NULL;
672 675
    s->fd = fd;
673
    s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s);
676
    s->vc = qemu_new_vlan_client(vlan, model, tap_receive, NULL, s);
674 677
#ifdef HAVE_IOVEC
675 678
    s->vc->fd_readv = tap_receive_iov;
676 679
#endif
......
905 908
    return 0;
906 909
}
907 910

  
908
static int net_tap_init(VLANState *vlan, const char *ifname1,
911
static int net_tap_init(VLANState *vlan, const char *model, const char *ifname1,
909 912
                        const char *setup_script, const char *down_script)
910 913
{
911 914
    TAPState *s;
......
926 929
	if (launch_script(setup_script, ifname, fd))
927 930
	    return -1;
928 931
    }
929
    s = net_tap_fd_init(vlan, fd);
932
    s = net_tap_fd_init(vlan, model, fd);
930 933
    if (!s)
931 934
        return -1;
932 935
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
......
969 972
    }
970 973
}
971 974

  
972
static int net_vde_init(VLANState *vlan, const char *sock, int port,
973
                        const char *group, int mode)
975
static int net_vde_init(VLANState *vlan, const char *model, const char *sock,
976
                        int port, const char *group, int mode)
974 977
{
975 978
    VDEState *s;
976 979
    char *init_group = strlen(group) ? (char *)group : NULL;
......
990 993
        free(s);
991 994
        return -1;
992 995
    }
993
    s->vc = qemu_new_vlan_client(vlan, vde_from_qemu, NULL, s);
996
    s->vc = qemu_new_vlan_client(vlan, model, vde_from_qemu, NULL, s);
994 997
    qemu_set_fd_handler(vde_datafd(s->vde), vde_to_qemu, NULL, s);
995 998
    snprintf(s->vc->info_str, sizeof(s->vc->info_str), "vde: sock=%s fd=%d",
996 999
             sock, vde_datafd(s->vde));
......
1011 1014

  
1012 1015
typedef struct NetSocketListenState {
1013 1016
    VLANState *vlan;
1017
    char *model;
1014 1018
    int fd;
1015 1019
} NetSocketListenState;
1016 1020

  
......
1164 1168
    return -1;
1165 1169
}
1166 1170

  
1167
static NetSocketState *net_socket_fd_init_dgram(VLANState *vlan, int fd,
1168
                                          int is_connected)
1171
static NetSocketState *net_socket_fd_init_dgram(VLANState *vlan, const char *model,
1172
                                                int fd, int is_connected)
1169 1173
{
1170 1174
    struct sockaddr_in saddr;
1171 1175
    int newfd;
......
1208 1212
        return NULL;
1209 1213
    s->fd = fd;
1210 1214

  
1211
    s->vc = qemu_new_vlan_client(vlan, net_socket_receive_dgram, NULL, s);
1215
    s->vc = qemu_new_vlan_client(vlan, model, net_socket_receive_dgram, NULL, s);
1212 1216
    qemu_set_fd_handler(s->fd, net_socket_send_dgram, NULL, s);
1213 1217

  
1214 1218
    /* mcast: save bound address as dst */
......
1227 1231
    qemu_set_fd_handler(s->fd, net_socket_send, NULL, s);
1228 1232
}
1229 1233

  
1230
static NetSocketState *net_socket_fd_init_stream(VLANState *vlan, int fd,
1231
                                          int is_connected)
1234
static NetSocketState *net_socket_fd_init_stream(VLANState *vlan, const char *model,
1235
                                                 int fd, int is_connected)
1232 1236
{
1233 1237
    NetSocketState *s;
1234 1238
    s = qemu_mallocz(sizeof(NetSocketState));
1235 1239
    if (!s)
1236 1240
        return NULL;
1237 1241
    s->fd = fd;
1238
    s->vc = qemu_new_vlan_client(vlan,
1242
    s->vc = qemu_new_vlan_client(vlan, model,
1239 1243
                                 net_socket_receive, NULL, s);
1240 1244
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
1241 1245
             "socket: fd=%d", fd);
......
1247 1251
    return s;
1248 1252
}
1249 1253

  
1250
static NetSocketState *net_socket_fd_init(VLANState *vlan, int fd,
1251
                                          int is_connected)
1254
static NetSocketState *net_socket_fd_init(VLANState *vlan, const char *model,
1255
                                          int fd, int is_connected)
1252 1256
{
1253 1257
    int so_type=-1, optlen=sizeof(so_type);
1254 1258

  
......
1259 1263
    }
1260 1264
    switch(so_type) {
1261 1265
    case SOCK_DGRAM:
1262
        return net_socket_fd_init_dgram(vlan, fd, is_connected);
1266
        return net_socket_fd_init_dgram(vlan, model, fd, is_connected);
1263 1267
    case SOCK_STREAM:
1264
        return net_socket_fd_init_stream(vlan, fd, is_connected);
1268
        return net_socket_fd_init_stream(vlan, model, fd, is_connected);
1265 1269
    default:
1266 1270
        /* who knows ... this could be a eg. a pty, do warn and continue as stream */
1267 1271
        fprintf(stderr, "qemu: warning: socket type=%d for fd=%d is not SOCK_DGRAM or SOCK_STREAM\n", so_type, fd);
1268
        return net_socket_fd_init_stream(vlan, fd, is_connected);
1272
        return net_socket_fd_init_stream(vlan, model, fd, is_connected);
1269 1273
    }
1270 1274
    return NULL;
1271 1275
}
......
1287 1291
            break;
1288 1292
        }
1289 1293
    }
1290
    s1 = net_socket_fd_init(s->vlan, fd, 1);
1294
    s1 = net_socket_fd_init(s->vlan, s->model, fd, 1);
1291 1295
    if (!s1) {
1292 1296
        closesocket(fd);
1293 1297
    } else {
......
1297 1301
    }
1298 1302
}
1299 1303

  
1300
static int net_socket_listen_init(VLANState *vlan, const char *host_str)
1304
static int net_socket_listen_init(VLANState *vlan, const char *model,
1305
                                  const char *host_str)
1301 1306
{
1302 1307
    NetSocketListenState *s;
1303 1308
    int fd, val, ret;
......
1332 1337
        return -1;
1333 1338
    }
1334 1339
    s->vlan = vlan;
1340
    s->model = strdup(model);
1335 1341
    s->fd = fd;
1336 1342
    qemu_set_fd_handler(fd, net_socket_accept, NULL, s);
1337 1343
    return 0;
1338 1344
}
1339 1345

  
1340
static int net_socket_connect_init(VLANState *vlan, const char *host_str)
1346
static int net_socket_connect_init(VLANState *vlan, const char *model,
1347
                                   const char *host_str)
1341 1348
{
1342 1349
    NetSocketState *s;
1343 1350
    int fd, connected, ret, err;
......
1375 1382
            break;
1376 1383
        }
1377 1384
    }
1378
    s = net_socket_fd_init(vlan, fd, connected);
1385
    s = net_socket_fd_init(vlan, model, fd, connected);
1379 1386
    if (!s)
1380 1387
        return -1;
1381 1388
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
......
1384 1391
    return 0;
1385 1392
}
1386 1393

  
1387
static int net_socket_mcast_init(VLANState *vlan, const char *host_str)
1394
static int net_socket_mcast_init(VLANState *vlan, const char *model,
1395
                                 const char *host_str)
1388 1396
{
1389 1397
    NetSocketState *s;
1390 1398
    int fd;
......
1398 1406
    if (fd < 0)
1399 1407
	return -1;
1400 1408

  
1401
    s = net_socket_fd_init(vlan, fd, 0);
1409
    s = net_socket_fd_init(vlan, model, fd, 0);
1402 1410
    if (!s)
1403 1411
        return -1;
1404 1412

  
......
1488 1496
            pstrcpy(slirp_hostname, sizeof(slirp_hostname), buf);
1489 1497
        }
1490 1498
        vlan->nb_host_devs++;
1491
        ret = net_slirp_init(vlan);
1499
        ret = net_slirp_init(vlan, device);
1492 1500
    } else
1493 1501
#endif
1494 1502
#ifdef _WIN32
......
1499 1507
            return -1;
1500 1508
        }
1501 1509
        vlan->nb_host_devs++;
1502
        ret = tap_win32_init(vlan, ifname);
1510
        ret = tap_win32_init(vlan, device, ifname);
1503 1511
    } else
1504 1512
#elif defined (_AIX)
1505 1513
#else
......
1512 1520
            fd = strtol(buf, NULL, 0);
1513 1521
            fcntl(fd, F_SETFL, O_NONBLOCK);
1514 1522
            ret = -1;
1515
            if (net_tap_fd_init(vlan, fd))
1523
            if (net_tap_fd_init(vlan, device, fd))
1516 1524
                ret = 0;
1517 1525
        } else {
1518 1526
            if (get_param_value(ifname, sizeof(ifname), "ifname", p) <= 0) {
......
1524 1532
            if (get_param_value(down_script, sizeof(down_script), "downscript", p) == 0) {
1525 1533
                pstrcpy(down_script, sizeof(down_script), DEFAULT_NETWORK_DOWN_SCRIPT);
1526 1534
            }
1527
            ret = net_tap_init(vlan, ifname, setup_script, down_script);
1535
            ret = net_tap_init(vlan, device, ifname, setup_script, down_script);
1528 1536
        }
1529 1537
    } else
1530 1538
#endif
......
1533 1541
            int fd;
1534 1542
            fd = strtol(buf, NULL, 0);
1535 1543
            ret = -1;
1536
            if (net_socket_fd_init(vlan, fd, 1))
1544
            if (net_socket_fd_init(vlan, device, fd, 1))
1537 1545
                ret = 0;
1538 1546
        } else if (get_param_value(buf, sizeof(buf), "listen", p) > 0) {
1539
            ret = net_socket_listen_init(vlan, buf);
1547
            ret = net_socket_listen_init(vlan, device, buf);
1540 1548
        } else if (get_param_value(buf, sizeof(buf), "connect", p) > 0) {
1541
            ret = net_socket_connect_init(vlan, buf);
1549
            ret = net_socket_connect_init(vlan, device, buf);
1542 1550
        } else if (get_param_value(buf, sizeof(buf), "mcast", p) > 0) {
1543
            ret = net_socket_mcast_init(vlan, buf);
1551
            ret = net_socket_mcast_init(vlan, device, buf);
1544 1552
        } else {
1545 1553
            fprintf(stderr, "Unknown socket options: %s\n", p);
1546 1554
            return -1;
......
1568 1576
	} else {
1569 1577
	    vde_mode = 0700;
1570 1578
	}
1571
	ret = net_vde_init(vlan, vde_sock, vde_port, vde_group, vde_mode);
1579
	ret = net_vde_init(vlan, device, vde_sock, vde_port, vde_group, vde_mode);
1572 1580
    } else
1573 1581
#endif
1574 1582
    {
b/net.h
18 18
    void *opaque;
19 19
    struct VLANClientState *next;
20 20
    struct VLANState *vlan;
21
    char *model;
21 22
    char info_str[256];
22 23
};
23 24

  
......
30 31

  
31 32
VLANState *qemu_find_vlan(int id);
32 33
VLANClientState *qemu_new_vlan_client(VLANState *vlan,
34
                                      const char *model,
33 35
                                      IOReadHandler *fd_read,
34 36
                                      IOCanRWHandler *fd_can_read,
35 37
                                      void *opaque);
b/sysemu.h
75 75
#endif
76 76

  
77 77
/* TAP win32 */
78
int tap_win32_init(VLANState *vlan, const char *ifname);
78
int tap_win32_init(VLANState *vlan, const char *model, const char *ifname);
79 79

  
80 80
/* SLIRP */
81 81
void do_info_slirp(void);
b/tap-win32.c
660 660
    }
661 661
}
662 662

  
663
int tap_win32_init(VLANState *vlan, const char *ifname)
663
int tap_win32_init(VLANState *vlan, const char *model, const char *ifname)
664 664
{
665 665
    TAPState *s;
666 666

  
......
672 672
        return -1;
673 673
    }
674 674

  
675
    s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s);
675
    s->vc = qemu_new_vlan_client(vlan, model, tap_receive, NULL, s);
676 676

  
677 677
    snprintf(s->vc->info_str, sizeof(s->vc->info_str),
678 678
             "tap: ifname=%s", ifname);

Also available in: Unified diff