Revision 9ad97e65

b/qemu-doc.texi
567 567
Braille device.  This will use BrlAPI to display the braille output on a real
568 568
or fake device.
569 569

  
570
@item net:nic_num
570
@item net:options
571 571
Network adapter that supports CDC ethernet and RNDIS protocols.
572 572

  
573 573
@end table
......
587 587
Valid values for @var{type} are
588 588
@code{i82551}, @code{i82557b}, @code{i82559er},
589 589
@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
590
@code{e1000}, @code{smc91c111}, @code{lance}, @code{mcf_fec} and @code{usb}.
590
@code{e1000}, @code{smc91c111}, @code{lance} and @code{mcf_fec}.
591 591
Not all devices are supported on all targets.  Use -net nic,model=?
592 592
for a list of available devices for your target.
593 593

  
......
1725 1725
@item braille
1726 1726
Braille device.  This will use BrlAPI to display the braille output on a real
1727 1727
or fake device.
1728
@item net:@var{nic_num}
1729
Network adapter that supports CDC ethernet and RNDIS protocols.  This must be
1730
used together with the @code{-net nic,model=usb,...} option (see description),
1731
where @var{nic_num} specifies the index of the @code{-net nic,...} option
1732
describing the interface (zero-based).
1733
For instance, user-mode networking can be used by specifying
1734
@example
1735
qemu -net user,vlan=1 -net nic,model=usb,vlan=1 -usbdevice net:0 [...OPTIONS...]
1728
@item net:@var{options}
1729
Network adapter that supports CDC ethernet and RNDIS protocols.  @var{options}
1730
specifies NIC options as with @code{-net nic,}@var{options} (see description).
1731
For instance, user-mode networking can be used with
1732
@example
1733
qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
1736 1734
@end example
1737 1735
Currently this cannot be used in machines that support PCI NICs.
1738 1736
@end table
b/vl.c
5138 5138
    return 0;
5139 5139
}
5140 5140

  
5141

  
5142
static int net_client_init(const char *str)
5141
static int net_client_init(const char *device, const char *p)
5143 5142
{
5144
    const char *p;
5145
    char *q;
5146
    char device[64];
5147 5143
    char buf[1024];
5148 5144
    int vlan_id, ret;
5149 5145
    VLANState *vlan;
5150 5146

  
5151
    p = str;
5152
    q = device;
5153
    while (*p != '\0' && *p != ',') {
5154
        if ((q - device) < sizeof(device) - 1)
5155
            *q++ = *p;
5156
        p++;
5157
    }
5158
    *q = '\0';
5159
    if (*p == ',')
5160
        p++;
5161 5147
    vlan_id = 0;
5162 5148
    if (get_param_value(buf, sizeof(buf), "vlan", p)) {
5163 5149
        vlan_id = strtol(buf, NULL, 0);
......
5302 5288
    return ret;
5303 5289
}
5304 5290

  
5291
static int net_client_parse(const char *str)
5292
{
5293
    const char *p;
5294
    char *q;
5295
    char device[64];
5296

  
5297
    p = str;
5298
    q = device;
5299
    while (*p != '\0' && *p != ',') {
5300
        if ((q - device) < sizeof(device) - 1)
5301
            *q++ = *p;
5302
        p++;
5303
    }
5304
    *q = '\0';
5305
    if (*p == ',')
5306
        p++;
5307

  
5308
    return net_client_init(device, p);
5309
}
5310

  
5305 5311
void do_info_network(void)
5306 5312
{
5307 5313
    VLANState *vlan;
......
5734 5740
        dev = usb_baum_init();
5735 5741
#endif
5736 5742
    } else if (strstart(devname, "net:", &p)) {
5737
        int nicidx = strtoul(p, NULL, 0);
5743
        int nic = nb_nics;
5738 5744

  
5739
        if (nicidx >= nb_nics || strcmp(nd_table[nicidx].model, "usb"))
5745
        if (net_client_init("nic", p) < 0)
5740 5746
            return -1;
5741
        dev = usb_net_init(&nd_table[nicidx]);
5747
        nd_table[nic].model = "usb";
5748
        dev = usb_net_init(&nd_table[nic]);
5742 5749
    } else {
5743 5750
        return -1;
5744 5751
    }
......
8887 8894
    }
8888 8895

  
8889 8896
    for(i = 0;i < nb_net_clients; i++) {
8890
        if (net_client_init(net_clients[i]) < 0)
8897
        if (net_client_parse(net_clients[i]) < 0)
8891 8898
            exit(1);
8892 8899
    }
8893 8900
    for(vlan = first_vlan; vlan != NULL; vlan = vlan->next) {
8894 8901
        if (vlan->nb_guest_devs == 0 && vlan->nb_host_devs == 0)
8895 8902
            continue;
8896
        if (vlan->nb_guest_devs == 0) {
8897
            fprintf(stderr, "Invalid vlan (%d) with no nics\n", vlan->id);
8898
            exit(1);
8899
        }
8903
        if (vlan->nb_guest_devs == 0)
8904
            fprintf(stderr, "Warning: vlan %d with no nics\n", vlan->id);
8900 8905
        if (vlan->nb_host_devs == 0)
8901 8906
            fprintf(stderr,
8902 8907
                    "Warning: vlan %d is not connected to host network\n",

Also available in: Unified diff