* [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net
@ 2018-02-21 10:18 Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 1/7] net: Move error reporting from net_init_client/netdev to the calling site Thomas Huth
` (8 more replies)
0 siblings, 9 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
"-net" is a legacy option that often causes confusion and
misconfigurations for the users, since most people are not aware
of the underlying "vlan" (i.e. hub) concept that is used for this
parameter. The prefered way of configuring your network stack is
to use "--netdev" instead, which gives you a clean 1:1 connection
between your emulated guest hardware and the host network backend.
However, there are two reasons why we could not completely deprecate
"-net" yet:
1) Convenience:
In some cases, it's more convenient to use "-net" instead of "--netdev",
e.g. if you just want to have a "tap" network connection, it's faster
to type "-net nic -net tap" instead of "--device e1000,netdev=n1
--netdev tap,id=n1".
2) On-board NICs:
Currently the "-net nic" parameter is the only way to configure on-
board NICs on certain (embedded) machines via the nd_table[] array.
So beside some generic clean-ups and removal of code that has been
marked as deprecated since QEMU 2.10 already, this patch series intro-
duces a new parameter "--nic" (in patch 7) which should be able to re-
place "-net" in the long run completely: This new convenience parameter
can be used to configure the default/on-board guest HW together with a
host network backend in a very compact way. To configure a tap backend
for the default NIC, you just have to type "--nic tap" here for example.
Note that "-net" itself is not marked as deprecated yet - that is
subject to a later patch, since it likely needs some additional
discussion first (or we might rather want to wait for some more
releases first until --nic has been properly established instead)...
v3:
- Changed the comments in qapi/net.json in patch 5/7 according
to the suggestion from Eric. Dropped the Reviewed-bys from this
patch since the text changed a bit now.
- Dropped the final patch 8 with the updates to qemu-doc about
making -net less prominent. I'll resubmit that patch together
with a patch that deprecates "-net" in a separate patch series
instead (which will likely both need some more discussion first).
v2:
- Renamed "-n" to "--nic" (suggested by Paolo)
- Improved the QAPI comment about the removal of 'dump (suggested by Eric)
- exit(0) instead of exit(1) after showing the "-netdev help" (Eric)
- Improved the documenation for hubport a little bit (suggested by Paolo)
Thomas Huth (7):
net: Move error reporting from net_init_client/netdev to the calling
site
net: List available netdevs with "-netdev help"
net: Only show vhost-user in the help text if CONFIG_POSIX is defined
net: Make net_client_init() static
net: Remove the deprecated way of dumping network packets
net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP
commands
net: Add a new convenience option "--nic" to configure
default/on-board NICs
hmp-commands.hx | 30 ------
hmp.h | 3 -
include/net/net.h | 4 +-
include/sysemu/sysemu.h | 1 +
monitor.c | 61 ------------
net/dump.c | 102 +--------------------
net/net.c | 239 +++++++++++++++++++++++-------------------------
qapi/net.json | 29 ++----
qemu-doc.texi | 16 ----
qemu-options.hx | 48 +++++++---
tests/test-hmp.c | 2 -
vl.c | 10 +-
12 files changed, 170 insertions(+), 375 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 1/7] net: Move error reporting from net_init_client/netdev to the calling site
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 2/7] net: List available netdevs with "-netdev help" Thomas Huth
` (7 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
It looks strange that net_init_client() and net_init_netdev() both
take an "Error **errp" parameter, but then do the error reporting
with "error_report_err(local_err)" on their own. Let's move the
error reporting to the calling site instead to simplify this code
a little bit.
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
include/net/net.h | 2 +-
net/net.c | 29 +++++------------------------
vl.c | 3 ++-
3 files changed, 8 insertions(+), 26 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
index 3fc48e4..bdd4d9f 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -206,7 +206,7 @@ extern const char *legacy_bootp_filename;
int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp);
int net_client_parse(QemuOptsList *opts_list, const char *str);
-int net_init_clients(void);
+int net_init_clients(Error **errp);
void net_check_clients(void);
void net_cleanup(void);
void hmp_host_net_add(Monitor *mon, const QDict *qdict);
diff --git a/net/net.c b/net/net.c
index 7d42925..e213a61 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1520,46 +1520,27 @@ void net_check_clients(void)
static int net_init_client(void *dummy, QemuOpts *opts, Error **errp)
{
- Error *local_err = NULL;
-
- net_client_init(opts, false, &local_err);
- if (local_err) {
- error_report_err(local_err);
- return -1;
- }
-
- return 0;
+ return net_client_init(opts, false, errp);
}
static int net_init_netdev(void *dummy, QemuOpts *opts, Error **errp)
{
- Error *local_err = NULL;
- int ret;
-
- ret = net_client_init(opts, true, &local_err);
- if (local_err) {
- error_report_err(local_err);
- return -1;
- }
-
- return ret;
+ return net_client_init(opts, true, errp);
}
-int net_init_clients(void)
+int net_init_clients(Error **errp)
{
- QemuOptsList *net = qemu_find_opts("net");
-
net_change_state_entry =
qemu_add_vm_change_state_handler(net_vm_change_state_handler, NULL);
QTAILQ_INIT(&net_clients);
if (qemu_opts_foreach(qemu_find_opts("netdev"),
- net_init_netdev, NULL, NULL)) {
+ net_init_netdev, NULL, errp)) {
return -1;
}
- if (qemu_opts_foreach(net, net_init_client, NULL, NULL)) {
+ if (qemu_opts_foreach(qemu_find_opts("net"), net_init_client, NULL, errp)) {
return -1;
}
diff --git a/vl.c b/vl.c
index 9e7235d..698b681 100644
--- a/vl.c
+++ b/vl.c
@@ -4476,7 +4476,8 @@ int main(int argc, char **argv, char **envp)
colo_info_init();
- if (net_init_clients() < 0) {
+ if (net_init_clients(&err) < 0) {
+ error_report_err(err);
exit(1);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 2/7] net: List available netdevs with "-netdev help"
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 1/7] net: Move error reporting from net_init_client/netdev to the calling site Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 3/7] net: Only show vhost-user in the help text if CONFIG_POSIX is defined Thomas Huth
` (6 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
Other options like "-chardev" or "-device" feature a nice help text
with the available devices when being called with "help" or "?".
Since it is quite useful, especially if you want to see which network
backends have been compiled into the QEMU binary, let's provide such
a help text for "-netdev", too.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
net/net.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/net/net.c b/net/net.c
index e213a61..cf07e15 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1086,6 +1086,38 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
return 0;
}
+static void show_netdevs(void)
+{
+ int idx;
+ const char *available_netdevs[] = {
+ "socket",
+ "hubport",
+ "tap",
+#ifdef CONFIG_SLIRP
+ "user",
+#endif
+#ifdef CONFIG_L2TPV3
+ "l2tpv3",
+#endif
+#ifdef CONFIG_VDE
+ "vde",
+#endif
+#ifdef CONFIG_NET_BRIDGE
+ "bridge",
+#endif
+#ifdef CONFIG_NETMAP
+ "netmap",
+#endif
+#ifdef CONFIG_POSIX
+ "vhost-user",
+#endif
+ };
+
+ printf("Available netdev backend types:\n");
+ for (idx = 0; idx < ARRAY_SIZE(available_netdevs); idx++) {
+ puts(available_netdevs[idx]);
+ }
+}
int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
{
@@ -1094,7 +1126,10 @@ int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
int ret = -1;
Visitor *v = opts_visitor_new(opts);
- {
+ if (is_netdev && is_help_option(qemu_opt_get(opts, "type"))) {
+ show_netdevs();
+ exit(0);
+ } else {
/* Parse convenience option format ip6-net=fec0::0[/64] */
const char *ip6_net = qemu_opt_get(opts, "ipv6-net");
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 3/7] net: Only show vhost-user in the help text if CONFIG_POSIX is defined
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 1/7] net: Move error reporting from net_init_client/netdev to the calling site Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 2/7] net: List available netdevs with "-netdev help" Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 4/7] net: Make net_client_init() static Thomas Huth
` (5 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
According to net/Makefile.objs we only link in the vhost-user code
if CONFIG_POSIX has been set. So the help screen should also only
show this information if CONFIG_POSIX has been defined.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
qemu-options.hx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/qemu-options.hx b/qemu-options.hx
index 8ccd5dc..9ae49a0 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -1998,8 +1998,10 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
" VALE port (created on the fly) called 'name' ('nmname' is name of the \n"
" netmap device, defaults to '/dev/netmap')\n"
#endif
+#ifdef CONFIG_POSIX
"-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]\n"
" configure a vhost-user network, backed by a chardev 'dev'\n"
+#endif
"-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
" configure a hub port on QEMU VLAN 'n'\n", QEMU_ARCH_ALL)
DEF("net", HAS_ARG, QEMU_OPTION_net,
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 4/7] net: Make net_client_init() static
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
` (2 preceding siblings ...)
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 3/7] net: Only show vhost-user in the help text if CONFIG_POSIX is defined Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 5/7] net: Remove the deprecated way of dumping network packets Thomas Huth
` (4 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
The function is only used within net.c, so there's no need that
this is a global function.
While we're at it, also remove the unused prototype compute_mcast_idx()
(the function has been removed in commit d9caeb09b107e91122d10ba4a08a).
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
include/net/net.h | 2 --
net/net.c | 2 +-
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
index bdd4d9f..cd1708c 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -204,7 +204,6 @@ extern const char *host_net_devices[];
extern const char *legacy_tftp_prefix;
extern const char *legacy_bootp_filename;
-int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp);
int net_client_parse(QemuOptsList *opts_list, const char *str);
int net_init_clients(Error **errp);
void net_check_clients(void);
@@ -228,7 +227,6 @@ void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd);
#define POLYNOMIAL_LE 0xedb88320
uint32_t net_crc32(const uint8_t *p, int len);
uint32_t net_crc32_le(const uint8_t *p, int len);
-unsigned compute_mcast_idx(const uint8_t *ep);
#define vmstate_offset_macaddr(_state, _field) \
vmstate_offset_array(_state, _field.a, uint8_t, \
diff --git a/net/net.c b/net/net.c
index cf07e15..dd80f1b 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1119,7 +1119,7 @@ static void show_netdevs(void)
}
}
-int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
+static int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
{
void *object = NULL;
Error *err = NULL;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 5/7] net: Remove the deprecated way of dumping network packets
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
` (3 preceding siblings ...)
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 4/7] net: Make net_client_init() static Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-21 16:31 ` Eric Blake
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 6/7] net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands Thomas Huth
` (3 subsequent siblings)
8 siblings, 1 reply; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
"-net dump" has been marked as deprecated since QEMU v2.10, since it
only works with the deprecated 'vlan' parameter (or hubs). Network
dumping should be done with "-object filter-dump" nowadays instead.
Since nobody complained so far about the deprecation message, let's
finally get rid of "-net dump" now.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
net/dump.c | 102 ++------------------------------------------------------
net/net.c | 9 +----
qapi/net.json | 29 ++++------------
qemu-doc.texi | 6 ----
qemu-options.hx | 8 -----
5 files changed, 9 insertions(+), 145 deletions(-)
diff --git a/net/dump.c b/net/dump.c
index 15df9a4..f16c354 100644
--- a/net/dump.c
+++ b/net/dump.c
@@ -109,7 +109,7 @@ static int net_dump_state_init(DumpState *s, const char *filename,
fd = open(filename, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0644);
if (fd < 0) {
- error_setg_errno(errp, errno, "-net dump: can't open %s", filename);
+ error_setg_errno(errp, errno, "net dump: can't open %s", filename);
return -1;
}
@@ -122,7 +122,7 @@ static int net_dump_state_init(DumpState *s, const char *filename,
hdr.linktype = 1;
if (write(fd, &hdr, sizeof(hdr)) < sizeof(hdr)) {
- error_setg_errno(errp, errno, "-net dump write error");
+ error_setg_errno(errp, errno, "net dump write error");
close(fd);
return -1;
}
@@ -136,104 +136,6 @@ static int net_dump_state_init(DumpState *s, const char *filename,
return 0;
}
-/* Dumping via VLAN netclient */
-
-struct DumpNetClient {
- NetClientState nc;
- DumpState ds;
-};
-typedef struct DumpNetClient DumpNetClient;
-
-static ssize_t dumpclient_receive(NetClientState *nc, const uint8_t *buf,
- size_t size)
-{
- DumpNetClient *dc = DO_UPCAST(DumpNetClient, nc, nc);
- struct iovec iov = {
- .iov_base = (void *)buf,
- .iov_len = size
- };
-
- return dump_receive_iov(&dc->ds, &iov, 1);
-}
-
-static ssize_t dumpclient_receive_iov(NetClientState *nc,
- const struct iovec *iov, int cnt)
-{
- DumpNetClient *dc = DO_UPCAST(DumpNetClient, nc, nc);
-
- return dump_receive_iov(&dc->ds, iov, cnt);
-}
-
-static void dumpclient_cleanup(NetClientState *nc)
-{
- DumpNetClient *dc = DO_UPCAST(DumpNetClient, nc, nc);
-
- dump_cleanup(&dc->ds);
-}
-
-static NetClientInfo net_dump_info = {
- .type = NET_CLIENT_DRIVER_DUMP,
- .size = sizeof(DumpNetClient),
- .receive = dumpclient_receive,
- .receive_iov = dumpclient_receive_iov,
- .cleanup = dumpclient_cleanup,
-};
-
-int net_init_dump(const Netdev *netdev, const char *name,
- NetClientState *peer, Error **errp)
-{
- int len, rc;
- const char *file;
- char def_file[128];
- const NetdevDumpOptions *dump;
- NetClientState *nc;
- DumpNetClient *dnc;
-
- assert(netdev->type == NET_CLIENT_DRIVER_DUMP);
- dump = &netdev->u.dump;
-
- assert(peer);
-
- error_report("'-net dump' is deprecated. "
- "Please use '-object filter-dump' instead.");
-
- if (dump->has_file) {
- file = dump->file;
- } else {
- int id;
- int ret;
-
- ret = net_hub_id_for_client(peer, &id);
- assert(ret == 0); /* peer must be on a hub */
-
- snprintf(def_file, sizeof(def_file), "qemu-vlan%d.pcap", id);
- file = def_file;
- }
-
- if (dump->has_len) {
- if (dump->len > INT_MAX) {
- error_setg(errp, "invalid length: %"PRIu64, dump->len);
- return -1;
- }
- len = dump->len;
- } else {
- len = 65536;
- }
-
- nc = qemu_new_net_client(&net_dump_info, peer, "dump", name);
- snprintf(nc->info_str, sizeof(nc->info_str),
- "dump to %s (len=%d)", file, len);
-
- dnc = DO_UPCAST(DumpNetClient, nc, nc);
- rc = net_dump_state_init(&dnc->ds, file, len, errp);
- if (rc) {
- qemu_del_net_client(nc);
- }
- return rc;
-}
-
-/* Dumping via filter */
-
#define TYPE_FILTER_DUMP "filter-dump"
#define FILTER_DUMP(obj) \
diff --git a/net/net.c b/net/net.c
index dd80f1b..cbd553d 100644
--- a/net/net.c
+++ b/net/net.c
@@ -63,7 +63,6 @@ static QTAILQ_HEAD(, NetClientState) net_clients;
const char *host_net_devices[] = {
"tap",
"socket",
- "dump",
#ifdef CONFIG_NET_BRIDGE
"bridge",
#endif
@@ -967,7 +966,6 @@ static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
#ifdef CONFIG_NETMAP
[NET_CLIENT_DRIVER_NETMAP] = net_init_netmap,
#endif
- [NET_CLIENT_DRIVER_DUMP] = net_init_dump,
#ifdef CONFIG_NET_BRIDGE
[NET_CLIENT_DRIVER_BRIDGE] = net_init_bridge,
#endif
@@ -993,8 +991,7 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
netdev = object;
name = netdev->id;
- if (netdev->type == NET_CLIENT_DRIVER_DUMP ||
- netdev->type == NET_CLIENT_DRIVER_NIC ||
+ if (netdev->type == NET_CLIENT_DRIVER_NIC ||
!net_client_init_fun[netdev->type]) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
"a netdev backend type");
@@ -1036,10 +1033,6 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
legacy.type = NET_CLIENT_DRIVER_VDE;
legacy.u.vde = opts->u.vde;
break;
- case NET_LEGACY_OPTIONS_TYPE_DUMP:
- legacy.type = NET_CLIENT_DRIVER_DUMP;
- legacy.u.dump = opts->u.dump;
- break;
case NET_LEGACY_OPTIONS_TYPE_BRIDGE:
legacy.type = NET_CLIENT_DRIVER_BRIDGE;
legacy.u.bridge = opts->u.bridge;
diff --git a/qapi/net.json b/qapi/net.json
index 1238ba5..9117c56 100644
--- a/qapi/net.json
+++ b/qapi/net.json
@@ -39,8 +39,8 @@
#
# Add a network backend.
#
-# @type: the type of network backend. Current valid values are 'user', 'tap',
-# 'vde', 'socket', 'dump' and 'bridge'
+# @type: the type of network backend. Possible values are listed in
+# NetClientDriver (excluding 'none' and 'nic')
#
# @id: the name of the new network backend
#
@@ -372,23 +372,6 @@
'*mode': 'uint16' } }
##
-# @NetdevDumpOptions:
-#
-# Dump VLAN network traffic to a file.
-#
-# @len: per-packet size limit (64k default). Understands [TGMKkb]
-# suffixes.
-#
-# @file: dump file path (default is qemu-vlan0.pcap)
-#
-# Since: 1.2
-##
-{ 'struct': 'NetdevDumpOptions',
- 'data': {
- '*len': 'size',
- '*file': 'str' } }
-
-##
# @NetdevBridgeOptions:
#
# Connect a host TAP network interface to a host bridge device.
@@ -466,9 +449,11 @@
# Available netdev drivers.
#
# Since: 2.7
+#
+# 'dump' - removed with 2.12
##
{ 'enum': 'NetClientDriver',
- 'data': [ 'none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde', 'dump',
+ 'data': [ 'none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
'bridge', 'hubport', 'netmap', 'vhost-user' ] }
##
@@ -495,7 +480,6 @@
'l2tpv3': 'NetdevL2TPv3Options',
'socket': 'NetdevSocketOptions',
'vde': 'NetdevVdeOptions',
- 'dump': 'NetdevDumpOptions',
'bridge': 'NetdevBridgeOptions',
'hubport': 'NetdevHubPortOptions',
'netmap': 'NetdevNetmapOptions',
@@ -530,7 +514,7 @@
##
{ 'enum': 'NetLegacyOptionsType',
'data': ['none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
- 'dump', 'bridge', 'netmap', 'vhost-user'] }
+ 'bridge', 'netmap', 'vhost-user'] }
##
# @NetLegacyOptions:
@@ -550,7 +534,6 @@
'l2tpv3': 'NetdevL2TPv3Options',
'socket': 'NetdevSocketOptions',
'vde': 'NetdevVdeOptions',
- 'dump': 'NetdevDumpOptions',
'bridge': 'NetdevBridgeOptions',
'netmap': 'NetdevNetmapOptions',
'vhost-user': 'NetdevVhostUserOptions' } }
diff --git a/qemu-doc.texi b/qemu-doc.texi
index 8e35569..97025c2 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -2707,12 +2707,6 @@ that can be specified with the ``-device'' parameter.
The drive addr argument is replaced by the the addr argument
that can be specified with the ``-device'' parameter.
-@subsection -net dump (since 2.10.0)
-
-The ``--net dump'' argument is now replaced with the
-``-object filter-dump'' argument which works in combination
-with the modern ``-netdev`` backends instead.
-
@subsection -usbdevice (since 2.10.0)
The ``-usbdevice DEV'' argument is now a synonym for setting
diff --git a/qemu-options.hx b/qemu-options.hx
index 9ae49a0..a9249b6 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2009,8 +2009,6 @@ DEF("net", HAS_ARG, QEMU_OPTION_net,
" configure or create an on-board (or machine default) NIC and\n"
" connect it either to VLAN 'n' or the netdev 'nd' (for pluggable\n"
" NICs please use '-device devtype,netdev=nd' instead)\n"
- "-net dump[,vlan=n][,file=f][,len=n]\n"
- " dump traffic on vlan 'n' to file 'f' (max n bytes per packet)\n"
"-net none use it alone to have zero network devices. If no -net option\n"
" is provided, the default is '-net nic -net user'\n"
"-net ["
@@ -2458,12 +2456,6 @@ qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,sha
-device virtio-net-pci,netdev=net0
@end example
-@item -net dump[,vlan=@var{n}][,file=@var{file}][,len=@var{len}]
-Dump network traffic on VLAN @var{n} to file @var{file} (@file{qemu-vlan0.pcap} by default).
-At most @var{len} bytes (64k by default) per packet are stored. The file format is
-libpcap, so it can be analyzed with tools such as tcpdump or Wireshark.
-Note: For devices created with '-netdev', use '-object filter-dump,...' instead.
-
@item -net none
Indicate that no network devices should be configured. It is used to
override the default configuration (@option{-net nic -net user}) which
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 6/7] net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
` (4 preceding siblings ...)
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 5/7] net: Remove the deprecated way of dumping network packets Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-27 12:44 ` Dr. David Alan Gilbert
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 7/7] net: Add a new convenience option "--nic" to configure default/on-board NICs Thomas Huth
` (2 subsequent siblings)
8 siblings, 1 reply; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
They are deprecated since QEMU v2.10, and so far nobody complained that
these commands are still necessary for any reason - and since you can use
'netdev_add' and 'netdev_remove' instead, there also should not be any
real reason. Since they are also standing in the way for the upcoming
'vlan' clean-up, it's now time to remove them.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
hmp-commands.hx | 30 ------------------
hmp.h | 3 --
monitor.c | 61 ------------------------------------
net/net.c | 94 --------------------------------------------------------
qemu-doc.texi | 10 ------
tests/test-hmp.c | 2 --
6 files changed, 200 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index d26eb41..964eb51 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1291,36 +1291,6 @@ Inject PCIe AER error
ETEXI
{
- .name = "host_net_add",
- .args_type = "device:s,opts:s?",
- .params = "tap|user|socket|vde|netmap|bridge|vhost-user|dump [options]",
- .help = "add host VLAN client (deprecated, use netdev_add instead)",
- .cmd = hmp_host_net_add,
- .command_completion = host_net_add_completion,
- },
-
-STEXI
-@item host_net_add
-@findex host_net_add
-Add host VLAN client. Deprecated, please use @code{netdev_add} instead.
-ETEXI
-
- {
- .name = "host_net_remove",
- .args_type = "vlan_id:i,device:s",
- .params = "vlan_id name",
- .help = "remove host VLAN client (deprecated, use netdev_del instead)",
- .cmd = hmp_host_net_remove,
- .command_completion = host_net_remove_completion,
- },
-
-STEXI
-@item host_net_remove
-@findex host_net_remove
-Remove host VLAN client. Deprecated, please use @code{netdev_del} instead.
-ETEXI
-
- {
.name = "netdev_add",
.args_type = "netdev:O",
.params = "[user|tap|socket|vde|bridge|hubport|netmap|vhost-user],id=str[,prop=value][,...]",
diff --git a/hmp.h b/hmp.h
index 1143db4..b897338 100644
--- a/hmp.h
+++ b/hmp.h
@@ -132,9 +132,6 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
const char *str);
void migrate_set_parameter_completion(ReadLineState *rs, int nb_args,
const char *str);
-void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str);
-void host_net_remove_completion(ReadLineState *rs, int nb_args,
- const char *str);
void delvm_completion(ReadLineState *rs, int nb_args, const char *str);
void loadvm_completion(ReadLineState *rs, int nb_args, const char *str);
void hmp_rocker(Monitor *mon, const QDict *qdict);
diff --git a/monitor.c b/monitor.c
index 373bb8d..a4f1f28 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3574,67 +3574,6 @@ void migrate_set_parameter_completion(ReadLineState *rs, int nb_args,
}
}
-void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str)
-{
- int i;
- size_t len;
- if (nb_args != 2) {
- return;
- }
- len = strlen(str);
- readline_set_completion_index(rs, len);
- for (i = 0; host_net_devices[i]; i++) {
- if (!strncmp(host_net_devices[i], str, len)) {
- readline_add_completion(rs, host_net_devices[i]);
- }
- }
-}
-
-void host_net_remove_completion(ReadLineState *rs, int nb_args, const char *str)
-{
- NetClientState *ncs[MAX_QUEUE_NUM];
- int count, i, len;
-
- len = strlen(str);
- readline_set_completion_index(rs, len);
- if (nb_args == 2) {
- count = qemu_find_net_clients_except(NULL, ncs,
- NET_CLIENT_DRIVER_NONE,
- MAX_QUEUE_NUM);
- for (i = 0; i < MIN(count, MAX_QUEUE_NUM); i++) {
- int id;
- char name[16];
-
- if (net_hub_id_for_client(ncs[i], &id)) {
- continue;
- }
- snprintf(name, sizeof(name), "%d", id);
- if (!strncmp(str, name, len)) {
- readline_add_completion(rs, name);
- }
- }
- return;
- } else if (nb_args == 3) {
- count = qemu_find_net_clients_except(NULL, ncs,
- NET_CLIENT_DRIVER_NIC,
- MAX_QUEUE_NUM);
- for (i = 0; i < MIN(count, MAX_QUEUE_NUM); i++) {
- int id;
- const char *name;
-
- if (ncs[i]->info->type == NET_CLIENT_DRIVER_HUBPORT ||
- net_hub_id_for_client(ncs[i], &id)) {
- continue;
- }
- name = ncs[i]->name;
- if (!strncmp(str, name, len)) {
- readline_add_completion(rs, name);
- }
- }
- return;
- }
-}
-
static void vm_completion(ReadLineState *rs, const char *str)
{
size_t len;
diff --git a/net/net.c b/net/net.c
index cbd553d..2d05808 100644
--- a/net/net.c
+++ b/net/net.c
@@ -60,25 +60,6 @@
static VMChangeStateEntry *net_change_state_entry;
static QTAILQ_HEAD(, NetClientState) net_clients;
-const char *host_net_devices[] = {
- "tap",
- "socket",
-#ifdef CONFIG_NET_BRIDGE
- "bridge",
-#endif
-#ifdef CONFIG_NETMAP
- "netmap",
-#endif
-#ifdef CONFIG_SLIRP
- "user",
-#endif
-#ifdef CONFIG_VDE
- "vde",
-#endif
- "vhost-user",
- NULL,
-};
-
/***********************************************************/
/* network device redirectors */
@@ -1174,81 +1155,6 @@ static int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
return ret;
}
-
-static int net_host_check_device(const char *device)
-{
- int i;
- for (i = 0; host_net_devices[i]; i++) {
- if (!strncmp(host_net_devices[i], device,
- strlen(host_net_devices[i]))) {
- return 1;
- }
- }
-
- return 0;
-}
-
-void hmp_host_net_add(Monitor *mon, const QDict *qdict)
-{
- const char *device = qdict_get_str(qdict, "device");
- const char *opts_str = qdict_get_try_str(qdict, "opts");
- Error *local_err = NULL;
- QemuOpts *opts;
- static bool warned;
-
- if (!warned && !qtest_enabled()) {
- error_report("host_net_add is deprecated, use netdev_add instead");
- warned = true;
- }
-
- if (!net_host_check_device(device)) {
- monitor_printf(mon, "invalid host network device %s\n", device);
- return;
- }
-
- opts = qemu_opts_parse_noisily(qemu_find_opts("net"),
- opts_str ? opts_str : "", false);
- if (!opts) {
- return;
- }
-
- qemu_opt_set(opts, "type", device, &error_abort);
-
- net_client_init(opts, false, &local_err);
- if (local_err) {
- error_report_err(local_err);
- monitor_printf(mon, "adding host network device %s failed\n", device);
- }
-}
-
-void hmp_host_net_remove(Monitor *mon, const QDict *qdict)
-{
- NetClientState *nc;
- int vlan_id = qdict_get_int(qdict, "vlan_id");
- const char *device = qdict_get_str(qdict, "device");
- static bool warned;
-
- if (!warned && !qtest_enabled()) {
- error_report("host_net_remove is deprecated, use netdev_del instead");
- warned = true;
- }
-
- nc = net_hub_find_client_by_name(vlan_id, device);
- if (!nc) {
- error_report("Host network device '%s' on hub '%d' not found",
- device, vlan_id);
- return;
- }
- if (nc->info->type == NET_CLIENT_DRIVER_NIC) {
- error_report("invalid host network device '%s'", device);
- return;
- }
-
- qemu_del_net_client(nc->peer);
- qemu_del_net_client(nc);
- qemu_opts_del(qemu_opts_find(qemu_find_opts("net"), device));
-}
-
void netdev_add(QemuOpts *opts, Error **errp)
{
net_client_init(opts, true, errp);
diff --git a/qemu-doc.texi b/qemu-doc.texi
index 97025c2..36acfc9 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -2756,16 +2756,6 @@ by the ``convert -l snapshot_param'' argument instead.
"autoload" parameter is now ignored. All bitmaps are automatically loaded
from qcow2 images.
-@section System emulator human monitor commands
-
-@subsection host_net_add (since 2.10.0)
-
-The ``host_net_add'' command is replaced by the ``netdev_add'' command.
-
-@subsection host_net_remove (since 2.10.0)
-
-The ``host_net_remove'' command is replaced by the ``netdev_del'' command.
-
@section System emulator devices
@subsection ivshmem (since 2.6.0)
diff --git a/tests/test-hmp.c b/tests/test-hmp.c
index 5b7e447..5352c9c 100644
--- a/tests/test-hmp.c
+++ b/tests/test-hmp.c
@@ -37,10 +37,8 @@ static const char *hmp_cmds[] = {
"dump-guest-memory /dev/null 0 4096",
"dump-guest-memory /dev/null",
"gdbserver",
- "host_net_add user id=net0",
"hostfwd_add tcp::43210-:43210",
"hostfwd_remove tcp::43210-:43210",
- "host_net_remove 0 net0",
"i /w 0",
"log all",
"log none",
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Qemu-devel] [PATCH v3 7/7] net: Add a new convenience option "--nic" to configure default/on-board NICs
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
` (5 preceding siblings ...)
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 6/7] net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands Thomas Huth
@ 2018-02-21 10:18 ` Thomas Huth
2018-02-21 10:41 ` [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Mark Cave-Ayland
2018-02-27 7:53 ` Jason Wang
8 siblings, 0 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 10:18 UTC (permalink / raw)
To: qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
The legacy "-net" option can be quite confusing for the users since most
people do not expect to get a "vlan" hub between their emulated guest
hardware and the host backend. But so far, we are also not able to get
rid of "-net" completely, since it is the only way to configure on-board
NICs that can not be instantiated via "-device" yet. It's also a little
bit shorter to type "-net nic -net tap" instead of "-device xyz,netdev=n1
-netdev tap,id=n1".
So what we need is a new convenience option that is shorter to type than
the full -device + -netdev stuff, and which can be used to configure the
on-board NICs that can not be handled via -device yet. Thus this patch now
provides such a new option "--nic": It adds an entry in the nd_table to
configure a on-board / default NIC, creates a host backend and connects
the two directly, without a confusing "vlan" hub inbetween.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
include/sysemu/sysemu.h | 1 +
net/net.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++
qemu-options.hx | 40 +++++++++++++++++++++----
vl.c | 7 +++++
4 files changed, 120 insertions(+), 6 deletions(-)
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 77bb3da..66f0761 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -197,6 +197,7 @@ extern QemuOptsList bdrv_runtime_opts;
extern QemuOptsList qemu_chardev_opts;
extern QemuOptsList qemu_device_opts;
extern QemuOptsList qemu_netdev_opts;
+extern QemuOptsList qemu_nic_opts;
extern QemuOptsList qemu_net_opts;
extern QemuOptsList qemu_global_opts;
extern QemuOptsList qemu_mon_opts;
diff --git a/net/net.c b/net/net.c
index 2d05808..0bab269 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1462,6 +1462,67 @@ static int net_init_netdev(void *dummy, QemuOpts *opts, Error **errp)
return net_client_init(opts, true, errp);
}
+/* For the convenience "--nic" parameter */
+static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
+{
+ char *mac, *nd_id;
+ int idx, ret;
+ NICInfo *ni;
+ const char *type;
+
+ type = qemu_opt_get(opts, "type");
+ if (type && g_str_equal(type, "none")) {
+ return 0; /* Nothing to do, default_net is cleared in vl.c */
+ }
+
+ idx = nic_get_free_idx();
+ if (idx == -1 || nb_nics >= MAX_NICS) {
+ error_setg(errp, "no more on-board/default NIC slots available");
+ return -1;
+ }
+
+ if (!type) {
+ qemu_opt_set(opts, "type", "user", &error_abort);
+ }
+
+ ni = &nd_table[idx];
+ memset(ni, 0, sizeof(*ni));
+ ni->model = qemu_opt_get_del(opts, "model");
+
+ /* Create an ID if the user did not specify one */
+ nd_id = g_strdup(qemu_opts_id(opts));
+ if (!nd_id) {
+ nd_id = g_strdup_printf("__org.qemu.nic%i\n", idx);
+ qemu_opts_set_id(opts, nd_id);
+ }
+
+ /* Handle MAC address */
+ mac = qemu_opt_get_del(opts, "mac");
+ if (mac) {
+ ret = net_parse_macaddr(ni->macaddr.a, mac);
+ g_free(mac);
+ if (ret) {
+ error_setg(errp, "invalid syntax for ethernet address");
+ return -1;
+ }
+ if (is_multicast_ether_addr(ni->macaddr.a)) {
+ error_setg(errp, "NIC cannot have multicast MAC address");
+ return -1;
+ }
+ }
+ qemu_macaddr_default_if_unset(&ni->macaddr);
+
+ ret = net_client_init(opts, true, errp);
+ if (ret == 0) {
+ ni->netdev = qemu_find_netdev(nd_id);
+ ni->used = true;
+ nb_nics++;
+ }
+
+ g_free(nd_id);
+ return ret;
+}
+
int net_init_clients(Error **errp)
{
net_change_state_entry =
@@ -1474,6 +1535,10 @@ int net_init_clients(Error **errp)
return -1;
}
+ if (qemu_opts_foreach(qemu_find_opts("nic"), net_param_nic, NULL, errp)) {
+ return -1;
+ }
+
if (qemu_opts_foreach(qemu_find_opts("net"), net_init_client, NULL, errp)) {
return -1;
}
@@ -1549,6 +1614,19 @@ QemuOptsList qemu_netdev_opts = {
},
};
+QemuOptsList qemu_nic_opts = {
+ .name = "nic",
+ .implied_opt_name = "type",
+ .head = QTAILQ_HEAD_INITIALIZER(qemu_nic_opts.head),
+ .desc = {
+ /*
+ * no elements => accept any params
+ * validation will happen later
+ */
+ { /* end of list */ }
+ },
+};
+
QemuOptsList qemu_net_opts = {
.name = "net",
.implied_opt_name = "type",
diff --git a/qemu-options.hx b/qemu-options.hx
index a9249b6..399905e 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2004,13 +2004,34 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
#endif
"-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
" configure a hub port on QEMU VLAN 'n'\n", QEMU_ARCH_ALL)
+DEF("nic", HAS_ARG, QEMU_OPTION_nic,
+ "--nic [tap|bridge|"
+#ifdef CONFIG_SLIRP
+ "user|"
+#endif
+#ifdef __linux__
+ "l2tpv3|"
+#endif
+#ifdef CONFIG_VDE
+ "vde|"
+#endif
+#ifdef CONFIG_NETMAP
+ "netmap|"
+#endif
+#ifdef CONFIG_POSIX
+ "vhost-user|"
+#endif
+ "socket][,option][,...][mac=macaddr]\n"
+ " initialize an on-board / default host NIC (using MAC address\n"
+ " macaddr) and connect it to the given host network backend\n"
+ "--nic none use it alone to have zero network devices (the default is to\n"
+ " provided a 'user' network connection)\n",
+ QEMU_ARCH_ALL)
DEF("net", HAS_ARG, QEMU_OPTION_net,
"-net nic[,vlan=n][,netdev=nd][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
" configure or create an on-board (or machine default) NIC and\n"
" connect it either to VLAN 'n' or the netdev 'nd' (for pluggable\n"
" NICs please use '-device devtype,netdev=nd' instead)\n"
- "-net none use it alone to have zero network devices. If no -net option\n"
- " is provided, the default is '-net nic -net user'\n"
"-net ["
#ifdef CONFIG_SLIRP
"user|"
@@ -2456,10 +2477,17 @@ qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,sha
-device virtio-net-pci,netdev=net0
@end example
-@item -net none
-Indicate that no network devices should be configured. It is used to
-override the default configuration (@option{-net nic -net user}) which
-is activated if no @option{-net} options are provided.
+@item --nic [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr]
+
+This option is a shortcut for setting both, the on-board (default) guest NIC
+hardware and the host network backend in one go. The host backend options are
+the same as with the corresponding @option{--netdev} option. The guest NIC
+hardware MAC address can be set with @option{mac=@var{macaddr}}.
+
+@item --nic none
+Indicate that no network devices should be configured. It is used to override
+the default configuration (default NIC with @option{--net user} backend) which
+is activated if no other networking options are provided.
ETEXI
STEXI
diff --git a/vl.c b/vl.c
index 698b681..59ffadb 100644
--- a/vl.c
+++ b/vl.c
@@ -3078,6 +3078,7 @@ int main(int argc, char **argv, char **envp)
qemu_add_opts(&qemu_chardev_opts);
qemu_add_opts(&qemu_device_opts);
qemu_add_opts(&qemu_netdev_opts);
+ qemu_add_opts(&qemu_nic_opts);
qemu_add_opts(&qemu_net_opts);
qemu_add_opts(&qemu_rtc_opts);
qemu_add_opts(&qemu_global_opts);
@@ -3298,6 +3299,12 @@ int main(int argc, char **argv, char **envp)
exit(1);
}
break;
+ case QEMU_OPTION_nic:
+ default_net = 0;
+ if (net_client_parse(qemu_find_opts("nic"), optarg) == -1) {
+ exit(1);
+ }
+ break;
case QEMU_OPTION_net:
default_net = 0;
if (net_client_parse(qemu_find_opts("net"), optarg) == -1) {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
` (6 preceding siblings ...)
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 7/7] net: Add a new convenience option "--nic" to configure default/on-board NICs Thomas Huth
@ 2018-02-21 10:41 ` Mark Cave-Ayland
2018-02-21 11:26 ` Thomas Huth
2018-02-21 11:34 ` Paolo Bonzini
2018-02-27 7:53 ` Jason Wang
8 siblings, 2 replies; 14+ messages in thread
From: Mark Cave-Ayland @ 2018-02-21 10:41 UTC (permalink / raw)
To: Thomas Huth, qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini
On 21/02/18 10:18, Thomas Huth wrote:
> "-net" is a legacy option that often causes confusion and
> misconfigurations for the users, since most people are not aware
> of the underlying "vlan" (i.e. hub) concept that is used for this
> parameter. The prefered way of configuring your network stack is
> to use "--netdev" instead, which gives you a clean 1:1 connection
> between your emulated guest hardware and the host network backend.
>
> However, there are two reasons why we could not completely deprecate
> "-net" yet:
>
> 1) Convenience:
> In some cases, it's more convenient to use "-net" instead of "--netdev",
> e.g. if you just want to have a "tap" network connection, it's faster
> to type "-net nic -net tap" instead of "--device e1000,netdev=n1
> --netdev tap,id=n1".
>
> 2) On-board NICs:
> Currently the "-net nic" parameter is the only way to configure on-
> board NICs on certain (embedded) machines via the nd_table[] array.
>
> So beside some generic clean-ups and removal of code that has been
> marked as deprecated since QEMU 2.10 already, this patch series intro-
> duces a new parameter "--nic" (in patch 7) which should be able to re-
> place "-net" in the long run completely: This new convenience parameter
> can be used to configure the default/on-board guest HW together with a
> host network backend in a very compact way. To configure a tap backend
> for the default NIC, you just have to type "--nic tap" here for example.
Hi Thomas,
This is a great improvement for configuring on-board NICs! I do have a
couple of questions about your patchset based on personal experience:
1) Does the new -nic syntax support multiple on-board NICs? I remember
seeing this on some of the ARM boards I was studying when trying to
implement something similar for SPARC.
2) Is it possible to provide a convenient wrapper function to handle the
logic related to determining whether a specified NIC is on-board or not?
For example take a look at
https://git.qemu.org/?p=qemu.git;a=blob;f=hw/sparc64/sun4u.c;h=da28ab9413efdbe0bf0e1d3bf2b545577b83d88a;hb=a6e0344fa0e09413324835ae122c4cadd7890231#l596
where we have a nice dance to check whether the device specified is
on-board or not, and if it isn't to plug it in as an extra PCI device
instead. The complication here is that nd_tables[] is populated by
default (and also with -net nic -net user) but not when someone
specifies a single card via -netdev.
From memory this was derived from the code in
https://git.qemu.org/?p=qemu.git;a=blob;f=hw/arm/realview.c;h=87cd1e583cd20b6d8a2beeef1cba6977496d4477;hb=a6e0344fa0e09413324835ae122c4cadd7890231#l259
if having another example helps?
ATB,
Mark.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net
2018-02-21 10:41 ` [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Mark Cave-Ayland
@ 2018-02-21 11:26 ` Thomas Huth
2018-02-21 11:34 ` Paolo Bonzini
1 sibling, 0 replies; 14+ messages in thread
From: Thomas Huth @ 2018-02-21 11:26 UTC (permalink / raw)
To: Mark Cave-Ayland, qemu-devel, Jason Wang, Dr. David Alan Gilbert
Cc: Paolo Bonzini
On 21.02.2018 11:41, Mark Cave-Ayland wrote:
> On 21/02/18 10:18, Thomas Huth wrote:
>
>> "-net" is a legacy option that often causes confusion and
>> misconfigurations for the users, since most people are not aware
>> of the underlying "vlan" (i.e. hub) concept that is used for this
>> parameter. The prefered way of configuring your network stack is
>> to use "--netdev" instead, which gives you a clean 1:1 connection
>> between your emulated guest hardware and the host network backend.
>>
>> However, there are two reasons why we could not completely deprecate
>> "-net" yet:
>>
>> 1) Convenience:
>> In some cases, it's more convenient to use "-net" instead of "--netdev",
>> e.g. if you just want to have a "tap" network connection, it's faster
>> to type "-net nic -net tap" instead of "--device e1000,netdev=n1
>> --netdev tap,id=n1".
>>
>> 2) On-board NICs:
>> Currently the "-net nic" parameter is the only way to configure on-
>> board NICs on certain (embedded) machines via the nd_table[] array.
>>
>> So beside some generic clean-ups and removal of code that has been
>> marked as deprecated since QEMU 2.10 already, this patch series intro-
>> duces a new parameter "--nic" (in patch 7) which should be able to re-
>> place "-net" in the long run completely: This new convenience parameter
>> can be used to configure the default/on-board guest HW together with a
>> host network backend in a very compact way. To configure a tap backend
>> for the default NIC, you just have to type "--nic tap" here for example.
>
> Hi Thomas,
>
> This is a great improvement for configuring on-board NICs! I do have a
> couple of questions about your patchset based on personal experience:
>
> 1) Does the new -nic syntax support multiple on-board NICs? I remember
> seeing this on some of the ARM boards I was studying when trying to
> implement something similar for SPARC.
Yes, that's possible. If you specify the "--nic" parameter multiple
times, it populates multiple entries in the nd_table[] array, so boards
can pick up multiple NICs from there. For example hw/arm/xlnx-zynqmp.c
initializes up to 4 (XLNX_ZYNQMP_NUM_GEMS) on-board NICs this way.
> 2) Is it possible to provide a convenient wrapper function to handle the
> logic related to determining whether a specified NIC is on-board or not?
>
> For example take a look at
> https://git.qemu.org/?p=qemu.git;a=blob;f=hw/sparc64/sun4u.c;h=da28ab9413efdbe0bf0e1d3bf2b545577b83d88a;hb=a6e0344fa0e09413324835ae122c4cadd7890231#l596
> where we have a nice dance to check whether the device specified is
> on-board or not, and if it isn't to plug it in as an extra PCI device
> instead. The complication here is that nd_tables[] is populated by
> default (and also with -net nic -net user) but not when someone
> specifies a single card via -netdev.
>
> From memory this was derived from the code in
> https://git.qemu.org/?p=qemu.git;a=blob;f=hw/arm/realview.c;h=87cd1e583cd20b6d8a2beeef1cba6977496d4477;hb=a6e0344fa0e09413324835ae122c4cadd7890231#l259
> if having another example helps?
Do you have something in mind how the interface to such a function
should look like?
Not sure whether there is a easy, magic solution for all boards ...
there are multiple problems, e.g. that you can normally not specify
on-board NICs via --device yet...
Anyway, that would be subject to another clean-up patch series - this
series here only focuses on the net/* files, not on the files in the hw/
folder.
Thomas
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net
2018-02-21 10:41 ` [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Mark Cave-Ayland
2018-02-21 11:26 ` Thomas Huth
@ 2018-02-21 11:34 ` Paolo Bonzini
1 sibling, 0 replies; 14+ messages in thread
From: Paolo Bonzini @ 2018-02-21 11:34 UTC (permalink / raw)
To: Mark Cave-Ayland, Thomas Huth, qemu-devel, Jason Wang,
Dr. David Alan Gilbert
On 21/02/2018 11:41, Mark Cave-Ayland wrote:
> 1) Does the new -nic syntax support multiple on-board NICs? I remember
> seeing this on some of the ARM boards I was studying when trying to
> implement something similar for SPARC.
Yes, but they will be in different subnets if you do "-nic user -nic
user". If you want to put them on the same trunk, what you want is
(cut-and-pasted from an offlist email from Thomas):
-netdev user,id=slirp \
-netdev hubport,id=port,netdev=slirp,hubid=0 \
-nic hubport,hubid=0 \
-nic hubport,hubid=0
We could make id and hubid optional (id was already optional in -net so
the logic is there already, see assign_name in net/net.c), giving the
much nicer:
-netdev user,id=slirp \
-netdev hubport,netdev=slirp \
-nic hubport \
-nic hubport
Thanks,
Paolo
> 2) Is it possible to provide a convenient wrapper function to handle the
> logic related to determining whether a specified NIC is on-board or not?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v3 5/7] net: Remove the deprecated way of dumping network packets
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 5/7] net: Remove the deprecated way of dumping network packets Thomas Huth
@ 2018-02-21 16:31 ` Eric Blake
0 siblings, 0 replies; 14+ messages in thread
From: Eric Blake @ 2018-02-21 16:31 UTC (permalink / raw)
To: Thomas Huth, qemu-devel, Jason Wang, Dr. David Alan Gilbert; +Cc: Paolo Bonzini
On 02/21/2018 04:18 AM, Thomas Huth wrote:
> "-net dump" has been marked as deprecated since QEMU v2.10, since it
> only works with the deprecated 'vlan' parameter (or hubs). Network
> dumping should be done with "-object filter-dump" nowadays instead.
> Since nobody complained so far about the deprecation message, let's
> finally get rid of "-net dump" now.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
` (7 preceding siblings ...)
2018-02-21 10:41 ` [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Mark Cave-Ayland
@ 2018-02-27 7:53 ` Jason Wang
8 siblings, 0 replies; 14+ messages in thread
From: Jason Wang @ 2018-02-27 7:53 UTC (permalink / raw)
To: Thomas Huth, qemu-devel, Dr. David Alan Gilbert; +Cc: Paolo Bonzini, Eric Blake
On 2018年02月21日 18:18, Thomas Huth wrote:
> "-net" is a legacy option that often causes confusion and
> misconfigurations for the users, since most people are not aware
> of the underlying "vlan" (i.e. hub) concept that is used for this
> parameter. The prefered way of configuring your network stack is
> to use "--netdev" instead, which gives you a clean 1:1 connection
> between your emulated guest hardware and the host network backend.
>
> However, there are two reasons why we could not completely deprecate
> "-net" yet:
>
> 1) Convenience:
> In some cases, it's more convenient to use "-net" instead of "--netdev",
> e.g. if you just want to have a "tap" network connection, it's faster
> to type "-net nic -net tap" instead of "--device e1000,netdev=n1
> --netdev tap,id=n1".
>
> 2) On-board NICs:
> Currently the "-net nic" parameter is the only way to configure on-
> board NICs on certain (embedded) machines via the nd_table[] array.
>
> So beside some generic clean-ups and removal of code that has been
> marked as deprecated since QEMU 2.10 already, this patch series intro-
> duces a new parameter "--nic" (in patch 7) which should be able to re-
> place "-net" in the long run completely: This new convenience parameter
> can be used to configure the default/on-board guest HW together with a
> host network backend in a very compact way. To configure a tap backend
> for the default NIC, you just have to type "--nic tap" here for example.
>
> Note that "-net" itself is not marked as deprecated yet - that is
> subject to a later patch, since it likely needs some additional
> discussion first (or we might rather want to wait for some more
> releases first until --nic has been properly established instead)...
>
> v3:
> - Changed the comments in qapi/net.json in patch 5/7 according
> to the suggestion from Eric. Dropped the Reviewed-bys from this
> patch since the text changed a bit now.
> - Dropped the final patch 8 with the updates to qemu-doc about
> making -net less prominent. I'll resubmit that patch together
> with a patch that deprecates "-net" in a separate patch series
> instead (which will likely both need some more discussion first).
>
> v2:
> - Renamed "-n" to "--nic" (suggested by Paolo)
> - Improved the QAPI comment about the removal of 'dump (suggested by Eric)
> - exit(0) instead of exit(1) after showing the "-netdev help" (Eric)
> - Improved the documenation for hubport a little bit (suggested by Paolo)
>
> Thomas Huth (7):
> net: Move error reporting from net_init_client/netdev to the calling
> site
> net: List available netdevs with "-netdev help"
> net: Only show vhost-user in the help text if CONFIG_POSIX is defined
> net: Make net_client_init() static
> net: Remove the deprecated way of dumping network packets
> net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP
> commands
> net: Add a new convenience option "--nic" to configure
> default/on-board NICs
>
> hmp-commands.hx | 30 ------
> hmp.h | 3 -
> include/net/net.h | 4 +-
> include/sysemu/sysemu.h | 1 +
> monitor.c | 61 ------------
> net/dump.c | 102 +--------------------
> net/net.c | 239 +++++++++++++++++++++++-------------------------
> qapi/net.json | 29 ++----
> qemu-doc.texi | 16 ----
> qemu-options.hx | 48 +++++++---
> tests/test-hmp.c | 2 -
> vl.c | 10 +-
> 12 files changed, 170 insertions(+), 375 deletions(-)
>
Applied.
Thanks
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Qemu-devel] [PATCH v3 6/7] net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 6/7] net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands Thomas Huth
@ 2018-02-27 12:44 ` Dr. David Alan Gilbert
0 siblings, 0 replies; 14+ messages in thread
From: Dr. David Alan Gilbert @ 2018-02-27 12:44 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel, Jason Wang, Paolo Bonzini, Eric Blake
* Thomas Huth (thuth@redhat.com) wrote:
> They are deprecated since QEMU v2.10, and so far nobody complained that
> these commands are still necessary for any reason - and since you can use
> 'netdev_add' and 'netdev_remove' instead, there also should not be any
> real reason. Since they are also standing in the way for the upcoming
> 'vlan' clean-up, it's now time to remove them.
>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
This is fine from the HMP side, so:
Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> hmp-commands.hx | 30 ------------------
> hmp.h | 3 --
> monitor.c | 61 ------------------------------------
> net/net.c | 94 --------------------------------------------------------
> qemu-doc.texi | 10 ------
> tests/test-hmp.c | 2 --
> 6 files changed, 200 deletions(-)
>
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index d26eb41..964eb51 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -1291,36 +1291,6 @@ Inject PCIe AER error
> ETEXI
>
> {
> - .name = "host_net_add",
> - .args_type = "device:s,opts:s?",
> - .params = "tap|user|socket|vde|netmap|bridge|vhost-user|dump [options]",
> - .help = "add host VLAN client (deprecated, use netdev_add instead)",
> - .cmd = hmp_host_net_add,
> - .command_completion = host_net_add_completion,
> - },
> -
> -STEXI
> -@item host_net_add
> -@findex host_net_add
> -Add host VLAN client. Deprecated, please use @code{netdev_add} instead.
> -ETEXI
> -
> - {
> - .name = "host_net_remove",
> - .args_type = "vlan_id:i,device:s",
> - .params = "vlan_id name",
> - .help = "remove host VLAN client (deprecated, use netdev_del instead)",
> - .cmd = hmp_host_net_remove,
> - .command_completion = host_net_remove_completion,
> - },
> -
> -STEXI
> -@item host_net_remove
> -@findex host_net_remove
> -Remove host VLAN client. Deprecated, please use @code{netdev_del} instead.
> -ETEXI
> -
> - {
> .name = "netdev_add",
> .args_type = "netdev:O",
> .params = "[user|tap|socket|vde|bridge|hubport|netmap|vhost-user],id=str[,prop=value][,...]",
> diff --git a/hmp.h b/hmp.h
> index 1143db4..b897338 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -132,9 +132,6 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
> const char *str);
> void migrate_set_parameter_completion(ReadLineState *rs, int nb_args,
> const char *str);
> -void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str);
> -void host_net_remove_completion(ReadLineState *rs, int nb_args,
> - const char *str);
> void delvm_completion(ReadLineState *rs, int nb_args, const char *str);
> void loadvm_completion(ReadLineState *rs, int nb_args, const char *str);
> void hmp_rocker(Monitor *mon, const QDict *qdict);
> diff --git a/monitor.c b/monitor.c
> index 373bb8d..a4f1f28 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -3574,67 +3574,6 @@ void migrate_set_parameter_completion(ReadLineState *rs, int nb_args,
> }
> }
>
> -void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str)
> -{
> - int i;
> - size_t len;
> - if (nb_args != 2) {
> - return;
> - }
> - len = strlen(str);
> - readline_set_completion_index(rs, len);
> - for (i = 0; host_net_devices[i]; i++) {
> - if (!strncmp(host_net_devices[i], str, len)) {
> - readline_add_completion(rs, host_net_devices[i]);
> - }
> - }
> -}
> -
> -void host_net_remove_completion(ReadLineState *rs, int nb_args, const char *str)
> -{
> - NetClientState *ncs[MAX_QUEUE_NUM];
> - int count, i, len;
> -
> - len = strlen(str);
> - readline_set_completion_index(rs, len);
> - if (nb_args == 2) {
> - count = qemu_find_net_clients_except(NULL, ncs,
> - NET_CLIENT_DRIVER_NONE,
> - MAX_QUEUE_NUM);
> - for (i = 0; i < MIN(count, MAX_QUEUE_NUM); i++) {
> - int id;
> - char name[16];
> -
> - if (net_hub_id_for_client(ncs[i], &id)) {
> - continue;
> - }
> - snprintf(name, sizeof(name), "%d", id);
> - if (!strncmp(str, name, len)) {
> - readline_add_completion(rs, name);
> - }
> - }
> - return;
> - } else if (nb_args == 3) {
> - count = qemu_find_net_clients_except(NULL, ncs,
> - NET_CLIENT_DRIVER_NIC,
> - MAX_QUEUE_NUM);
> - for (i = 0; i < MIN(count, MAX_QUEUE_NUM); i++) {
> - int id;
> - const char *name;
> -
> - if (ncs[i]->info->type == NET_CLIENT_DRIVER_HUBPORT ||
> - net_hub_id_for_client(ncs[i], &id)) {
> - continue;
> - }
> - name = ncs[i]->name;
> - if (!strncmp(str, name, len)) {
> - readline_add_completion(rs, name);
> - }
> - }
> - return;
> - }
> -}
> -
> static void vm_completion(ReadLineState *rs, const char *str)
> {
> size_t len;
> diff --git a/net/net.c b/net/net.c
> index cbd553d..2d05808 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -60,25 +60,6 @@
> static VMChangeStateEntry *net_change_state_entry;
> static QTAILQ_HEAD(, NetClientState) net_clients;
>
> -const char *host_net_devices[] = {
> - "tap",
> - "socket",
> -#ifdef CONFIG_NET_BRIDGE
> - "bridge",
> -#endif
> -#ifdef CONFIG_NETMAP
> - "netmap",
> -#endif
> -#ifdef CONFIG_SLIRP
> - "user",
> -#endif
> -#ifdef CONFIG_VDE
> - "vde",
> -#endif
> - "vhost-user",
> - NULL,
> -};
> -
> /***********************************************************/
> /* network device redirectors */
>
> @@ -1174,81 +1155,6 @@ static int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp)
> return ret;
> }
>
> -
> -static int net_host_check_device(const char *device)
> -{
> - int i;
> - for (i = 0; host_net_devices[i]; i++) {
> - if (!strncmp(host_net_devices[i], device,
> - strlen(host_net_devices[i]))) {
> - return 1;
> - }
> - }
> -
> - return 0;
> -}
> -
> -void hmp_host_net_add(Monitor *mon, const QDict *qdict)
> -{
> - const char *device = qdict_get_str(qdict, "device");
> - const char *opts_str = qdict_get_try_str(qdict, "opts");
> - Error *local_err = NULL;
> - QemuOpts *opts;
> - static bool warned;
> -
> - if (!warned && !qtest_enabled()) {
> - error_report("host_net_add is deprecated, use netdev_add instead");
> - warned = true;
> - }
> -
> - if (!net_host_check_device(device)) {
> - monitor_printf(mon, "invalid host network device %s\n", device);
> - return;
> - }
> -
> - opts = qemu_opts_parse_noisily(qemu_find_opts("net"),
> - opts_str ? opts_str : "", false);
> - if (!opts) {
> - return;
> - }
> -
> - qemu_opt_set(opts, "type", device, &error_abort);
> -
> - net_client_init(opts, false, &local_err);
> - if (local_err) {
> - error_report_err(local_err);
> - monitor_printf(mon, "adding host network device %s failed\n", device);
> - }
> -}
> -
> -void hmp_host_net_remove(Monitor *mon, const QDict *qdict)
> -{
> - NetClientState *nc;
> - int vlan_id = qdict_get_int(qdict, "vlan_id");
> - const char *device = qdict_get_str(qdict, "device");
> - static bool warned;
> -
> - if (!warned && !qtest_enabled()) {
> - error_report("host_net_remove is deprecated, use netdev_del instead");
> - warned = true;
> - }
> -
> - nc = net_hub_find_client_by_name(vlan_id, device);
> - if (!nc) {
> - error_report("Host network device '%s' on hub '%d' not found",
> - device, vlan_id);
> - return;
> - }
> - if (nc->info->type == NET_CLIENT_DRIVER_NIC) {
> - error_report("invalid host network device '%s'", device);
> - return;
> - }
> -
> - qemu_del_net_client(nc->peer);
> - qemu_del_net_client(nc);
> - qemu_opts_del(qemu_opts_find(qemu_find_opts("net"), device));
> -}
> -
> void netdev_add(QemuOpts *opts, Error **errp)
> {
> net_client_init(opts, true, errp);
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index 97025c2..36acfc9 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -2756,16 +2756,6 @@ by the ``convert -l snapshot_param'' argument instead.
> "autoload" parameter is now ignored. All bitmaps are automatically loaded
> from qcow2 images.
>
> -@section System emulator human monitor commands
> -
> -@subsection host_net_add (since 2.10.0)
> -
> -The ``host_net_add'' command is replaced by the ``netdev_add'' command.
> -
> -@subsection host_net_remove (since 2.10.0)
> -
> -The ``host_net_remove'' command is replaced by the ``netdev_del'' command.
> -
> @section System emulator devices
>
> @subsection ivshmem (since 2.6.0)
> diff --git a/tests/test-hmp.c b/tests/test-hmp.c
> index 5b7e447..5352c9c 100644
> --- a/tests/test-hmp.c
> +++ b/tests/test-hmp.c
> @@ -37,10 +37,8 @@ static const char *hmp_cmds[] = {
> "dump-guest-memory /dev/null 0 4096",
> "dump-guest-memory /dev/null",
> "gdbserver",
> - "host_net_add user id=net0",
> "hostfwd_add tcp::43210-:43210",
> "hostfwd_remove tcp::43210-:43210",
> - "host_net_remove 0 net0",
> "i /w 0",
> "log all",
> "log none",
> --
> 1.8.3.1
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2018-02-27 12:45 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-21 10:18 [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 1/7] net: Move error reporting from net_init_client/netdev to the calling site Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 2/7] net: List available netdevs with "-netdev help" Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 3/7] net: Only show vhost-user in the help text if CONFIG_POSIX is defined Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 4/7] net: Make net_client_init() static Thomas Huth
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 5/7] net: Remove the deprecated way of dumping network packets Thomas Huth
2018-02-21 16:31 ` Eric Blake
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 6/7] net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands Thomas Huth
2018-02-27 12:44 ` Dr. David Alan Gilbert
2018-02-21 10:18 ` [Qemu-devel] [PATCH v3 7/7] net: Add a new convenience option "--nic" to configure default/on-board NICs Thomas Huth
2018-02-21 10:41 ` [Qemu-devel] [PATCH v3 0/7] Improvements and clean-ups related to -net Mark Cave-Ayland
2018-02-21 11:26 ` Thomas Huth
2018-02-21 11:34 ` Paolo Bonzini
2018-02-27 7:53 ` Jason Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).