return g_strdup(buf);
}
-static ssize_t qemu_deliver_packet(NetClientState *sender,
- unsigned flags,
- const uint8_t *data,
- size_t size,
- void *opaque);
-static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
- unsigned flags,
- const struct iovec *iov,
- int iovcnt,
- void *opaque);
-
NetClientState *qemu_new_net_client(NetClientInfo *info,
NetClientState *peer,
const char *model,
}
QTAILQ_INSERT_TAIL(&net_clients, nc, next);
- nc->send_queue = qemu_new_net_queue(qemu_deliver_packet,
- qemu_deliver_packet_iov,
- nc);
+ nc->send_queue = qemu_new_net_queue(nc);
return nc;
}
return 1;
}
-static ssize_t qemu_deliver_packet(NetClientState *sender,
- unsigned flags,
- const uint8_t *data,
- size_t size,
- void *opaque)
+ssize_t qemu_deliver_packet(NetClientState *sender,
+ unsigned flags,
+ const uint8_t *data,
+ size_t size,
+ void *opaque)
{
NetClientState *nc = opaque;
ssize_t ret;
return nc->info->receive(nc, buffer, offset);
}
-static ssize_t qemu_deliver_packet_iov(NetClientState *sender,
- unsigned flags,
- const struct iovec *iov,
- int iovcnt,
- void *opaque)
+ssize_t qemu_deliver_packet_iov(NetClientState *sender,
+ unsigned flags,
+ const struct iovec *iov,
+ int iovcnt,
+ void *opaque)
{
NetClientState *nc = opaque;
{
int i;
- if (!arg || strcmp(arg, "?"))
+ if (!arg || !is_help_option(arg)) {
return 0;
+ }
fprintf(stderr, "qemu: Supported NIC models: ");
for (i = 0 ; models[i]; i++)
qemu_opts_del(qemu_opts_find(qemu_find_opts_err("netdev", errp), id));
}
-static void print_net_client(Monitor *mon, NetClientState *nc)
+void print_net_client(Monitor *mon, NetClientState *nc)
{
monitor_printf(mon, "%s: type=%s,%s\n", nc->name,
NetClientOptionsKind_lookup[nc->info->type], nc->info_str);
NetClientState *nc, *peer;
NetClientOptionsKind type;
- monitor_printf(mon, "Devices not on any VLAN:\n");
+ net_hub_info(mon);
+
QTAILQ_FOREACH(nc, &net_clients, next) {
peer = nc->peer;
type = nc->info->type;
+
+ /* Skip if already printed in hub info */
+ if (net_hub_id_for_client(nc, NULL) == 0) {
+ continue;
+ }
+
if (!peer || type == NET_CLIENT_OPTIONS_KIND_NIC) {
- monitor_printf(mon, " ");
print_net_client(mon, nc);
} /* else it's a netdev connected to a NIC, printed with the NIC */
if (peer && type == NET_CLIENT_OPTIONS_KIND_NIC) {
- monitor_printf(mon, " \\ ");
+ monitor_printf(mon, " \\ ");
print_net_client(mon, peer);
}
}
- net_hub_info(mon);
}
void qmp_set_link(const char *name, bool up, Error **errp)