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