* [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work
@ 2019-06-04 11:52 Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 1/3] MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends" Markus Armbruster
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Markus Armbruster @ 2019-06-04 11:52 UTC (permalink / raw)
To: qemu-devel; +Cc: jasowang
Markus Armbruster (3):
MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends"
net: Deprecate tap backend's parameter "helper"
qemu-bridge-helper: Document known shortcomings
MAINTAINERS | 1 +
qapi/net.json | 3 ++-
qemu-bridge-helper.c | 12 +++++++++++-
qemu-deprecated.texi | 4 ++++
qemu-options.hx | 18 ++----------------
5 files changed, 20 insertions(+), 18 deletions(-)
--
2.21.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 1/3] MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends"
2019-06-04 11:52 [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Markus Armbruster
@ 2019-06-04 11:52 ` Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper" Markus Armbruster
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Markus Armbruster @ 2019-06-04 11:52 UTC (permalink / raw)
To: qemu-devel; +Cc: jasowang
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
MAINTAINERS | 1 +
1 file changed, 1 insertion(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index a96829ea83..8b73f1f0d2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1936,6 +1936,7 @@ M: Jason Wang <jasowang@redhat.com>
S: Maintained
F: net/
F: include/net/
+F: qemu-bridge-helper.c
T: git https://github.com/jasowang/qemu.git net
F: qapi/net.json
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper"
2019-06-04 11:52 [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 1/3] MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends" Markus Armbruster
@ 2019-06-04 11:52 ` Markus Armbruster
2019-06-18 3:31 ` Jason Wang
2019-06-04 11:52 ` [Qemu-devel] [PATCH 3/3] qemu-bridge-helper: Document known shortcomings Markus Armbruster
2019-06-18 3:31 ` [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Jason Wang
3 siblings, 1 reply; 8+ messages in thread
From: Markus Armbruster @ 2019-06-04 11:52 UTC (permalink / raw)
To: qemu-devel; +Cc: jasowang
-netdev tap,helper=... is a useless duplicate of -netdev bridge.
Deprecate and de-document.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
qapi/net.json | 3 ++-
qemu-deprecated.texi | 4 ++++
qemu-options.hx | 18 ++----------------
3 files changed, 8 insertions(+), 17 deletions(-)
diff --git a/qapi/net.json b/qapi/net.json
index 5f7bff1637..59d79a1ae1 100644
--- a/qapi/net.json
+++ b/qapi/net.json
@@ -221,7 +221,8 @@
#
# @br: bridge name (since 2.8)
#
-# @helper: command to execute to configure bridge
+# @helper: command to execute to configure bridge (deprecated, use
+# type 'bridge' instead)
#
# @sndbuf: send buffer limit. Understands [TGMKkb] suffixes.
#
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index 50292d820b..52e7600ebc 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -48,6 +48,10 @@ for these file types is 'host_cdrom' or 'host_device' as appropriate.
The @option{name} parameter of the @option{-net} option is a synonym
for the @option{id} parameter, which should now be used instead.
+@subsection -netdev tap,helper=... (since 4.1)
+
+Use -netdev bridge instead.
+
@subsection -smp (invalid topologies) (since 3.1)
CPU topology properties should describe whole machine topology including
diff --git a/qemu-options.hx b/qemu-options.hx
index 39dc170429..3324203b51 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2121,7 +2121,7 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
" configure a host TAP network backend with ID 'str'\n"
#else
"-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
- " [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
+ " [,br=bridge][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
" [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
" [,poll-us=n]\n"
" configure a host TAP network backend with ID 'str'\n"
@@ -2130,8 +2130,6 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
" to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
" to deconfigure it\n"
" use '[down]script=no' to disable script execution\n"
- " use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
- " configure it\n"
" use 'fd=h' to connect to an already opened TAP interface\n"
" use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
" use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
@@ -2435,7 +2433,7 @@ qemu-system-i386 -nic 'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10
@end table
-@item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}][,helper=@var{helper}]
+@item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}]
Configure a host TAP network backend with ID @var{id}.
Use the network script @var{file} to configure it and the network script
@@ -2445,11 +2443,6 @@ automatically provides one. The default network configure script is
@file{/etc/qemu-ifdown}. Use @option{script=no} or @option{downscript=no}
to disable script execution.
-If running QEMU as an unprivileged user, use the network helper
-@var{helper} to configure the TAP interface and attach it to the bridge.
-The default network helper executable is @file{/path/to/qemu-bridge-helper}
-and the default bridge device is @file{br0}.
-
@option{fd}=@var{h} can be used to specify the handle of an already
opened host TAP interface.
@@ -2468,13 +2461,6 @@ qemu-system-i386 linux.img \
-netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
@end example
-@example
-#launch a QEMU instance with the default network helper to
-#connect a TAP device to bridge br0
-qemu-system-i386 linux.img -device virtio-net-pci,netdev=n1 \
- -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
-@end example
-
@item -netdev bridge,id=@var{id}[,br=@var{bridge}][,helper=@var{helper}]
Connect a host TAP network interface to a host bridge device.
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH 3/3] qemu-bridge-helper: Document known shortcomings
2019-06-04 11:52 [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 1/3] MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends" Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper" Markus Armbruster
@ 2019-06-04 11:52 ` Markus Armbruster
2019-06-18 3:31 ` [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Jason Wang
3 siblings, 0 replies; 8+ messages in thread
From: Markus Armbruster @ 2019-06-04 11:52 UTC (permalink / raw)
To: qemu-devel; +Cc: jasowang
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
qemu-bridge-helper.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
index f9940deefd..95624bc300 100644
--- a/qemu-bridge-helper.c
+++ b/qemu-bridge-helper.c
@@ -10,7 +10,17 @@
*
* This work is licensed under the terms of the GNU GPL, version 2. See
* the COPYING file in the top-level directory.
- *
+ */
+
+/*
+ * Known shortcomings:
+ * - There is no manual page
+ * - The syntax of the ACL file is not documented anywhere
+ * - parse_acl_file() doesn't report fopen() failure properly, fails
+ * to check ferror() after fgets() failure, arbitrarily truncates
+ * long lines, handles whitespace inconsistently, error messages
+ * don't point to the offending file and line, errors in included
+ * files are reported, but otherwise ignored, ...
*/
#include "qemu/osdep.h"
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper"
2019-06-04 11:52 ` [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper" Markus Armbruster
@ 2019-06-18 3:31 ` Jason Wang
2019-06-18 5:32 ` Markus Armbruster
0 siblings, 1 reply; 8+ messages in thread
From: Jason Wang @ 2019-06-18 3:31 UTC (permalink / raw)
To: Markus Armbruster, qemu-devel
On 2019/6/4 下午7:52, Markus Armbruster wrote:
> -netdev tap,helper=... is a useless duplicate of -netdev bridge.
> Deprecate and de-document.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This requires more thought as TAP could be used independently. Force
using a "bridge" backend may lead some confusion.
Thanks
> ---
> qapi/net.json | 3 ++-
> qemu-deprecated.texi | 4 ++++
> qemu-options.hx | 18 ++----------------
> 3 files changed, 8 insertions(+), 17 deletions(-)
>
> diff --git a/qapi/net.json b/qapi/net.json
> index 5f7bff1637..59d79a1ae1 100644
> --- a/qapi/net.json
> +++ b/qapi/net.json
> @@ -221,7 +221,8 @@
> #
> # @br: bridge name (since 2.8)
> #
> -# @helper: command to execute to configure bridge
> +# @helper: command to execute to configure bridge (deprecated, use
> +# type 'bridge' instead)
> #
> # @sndbuf: send buffer limit. Understands [TGMKkb] suffixes.
> #
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index 50292d820b..52e7600ebc 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -48,6 +48,10 @@ for these file types is 'host_cdrom' or 'host_device' as appropriate.
> The @option{name} parameter of the @option{-net} option is a synonym
> for the @option{id} parameter, which should now be used instead.
>
> +@subsection -netdev tap,helper=... (since 4.1)
> +
> +Use -netdev bridge instead.
> +
> @subsection -smp (invalid topologies) (since 3.1)
>
> CPU topology properties should describe whole machine topology including
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 39dc170429..3324203b51 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -2121,7 +2121,7 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
> " configure a host TAP network backend with ID 'str'\n"
> #else
> "-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
> - " [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
> + " [,br=bridge][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
> " [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
> " [,poll-us=n]\n"
> " configure a host TAP network backend with ID 'str'\n"
> @@ -2130,8 +2130,6 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
> " to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
> " to deconfigure it\n"
> " use '[down]script=no' to disable script execution\n"
> - " use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
> - " configure it\n"
> " use 'fd=h' to connect to an already opened TAP interface\n"
> " use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
> " use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
> @@ -2435,7 +2433,7 @@ qemu-system-i386 -nic 'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10
>
> @end table
>
> -@item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}][,helper=@var{helper}]
> +@item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}]
> Configure a host TAP network backend with ID @var{id}.
>
> Use the network script @var{file} to configure it and the network script
> @@ -2445,11 +2443,6 @@ automatically provides one. The default network configure script is
> @file{/etc/qemu-ifdown}. Use @option{script=no} or @option{downscript=no}
> to disable script execution.
>
> -If running QEMU as an unprivileged user, use the network helper
> -@var{helper} to configure the TAP interface and attach it to the bridge.
> -The default network helper executable is @file{/path/to/qemu-bridge-helper}
> -and the default bridge device is @file{br0}.
> -
> @option{fd}=@var{h} can be used to specify the handle of an already
> opened host TAP interface.
>
> @@ -2468,13 +2461,6 @@ qemu-system-i386 linux.img \
> -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
> @end example
>
> -@example
> -#launch a QEMU instance with the default network helper to
> -#connect a TAP device to bridge br0
> -qemu-system-i386 linux.img -device virtio-net-pci,netdev=n1 \
> - -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
> -@end example
> -
> @item -netdev bridge,id=@var{id}[,br=@var{bridge}][,helper=@var{helper}]
> Connect a host TAP network interface to a host bridge device.
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work
2019-06-04 11:52 [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Markus Armbruster
` (2 preceding siblings ...)
2019-06-04 11:52 ` [Qemu-devel] [PATCH 3/3] qemu-bridge-helper: Document known shortcomings Markus Armbruster
@ 2019-06-18 3:31 ` Jason Wang
3 siblings, 0 replies; 8+ messages in thread
From: Jason Wang @ 2019-06-18 3:31 UTC (permalink / raw)
To: Markus Armbruster, qemu-devel
On 2019/6/4 下午7:52, Markus Armbruster wrote:
> Markus Armbruster (3):
> MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends"
> net: Deprecate tap backend's parameter "helper"
> qemu-bridge-helper: Document known shortcomings
>
> MAINTAINERS | 1 +
> qapi/net.json | 3 ++-
> qemu-bridge-helper.c | 12 +++++++++++-
> qemu-deprecated.texi | 4 ++++
> qemu-options.hx | 18 ++----------------
> 5 files changed, 20 insertions(+), 18 deletions(-)
>
I've queued patch 1 and 3. For patch 2, it still require more thought
since tap is not tied to bridge in fact, it could be used independently.
Thanks
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper"
2019-06-18 3:31 ` Jason Wang
@ 2019-06-18 5:32 ` Markus Armbruster
2019-06-18 5:48 ` Jason Wang
0 siblings, 1 reply; 8+ messages in thread
From: Markus Armbruster @ 2019-06-18 5:32 UTC (permalink / raw)
To: Jason Wang; +Cc: qemu-devel
Jason Wang <jasowang@redhat.com> writes:
> On 2019/6/4 下午7:52, Markus Armbruster wrote:
>> -netdev tap,helper=... is a useless duplicate of -netdev bridge.
>> Deprecate and de-document.
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>
>
> This requires more thought as TAP could be used independently. Force
> using a "bridge" backend may lead some confusion.
Can you explain your qualms in a bit more detail?
The thoughts that led to this patch:
https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg03164.html
Consensus back then:
1. Add qemu-bridge-helper.c to Jason's "Network device backends"
2. Deprecate -netdev tap parameter "helper"
3. Improve documentation of -netdev bridge
4. Create a manual page for qemu-bridge-helper that also covers
/etc/qemu/bridge.conf.
5. Fix the nutty error handling in parse_acl_file()
This series covers the first two [PATCH 1+2], and records the remaining
three more permanently [PATCH 3].
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper"
2019-06-18 5:32 ` Markus Armbruster
@ 2019-06-18 5:48 ` Jason Wang
0 siblings, 0 replies; 8+ messages in thread
From: Jason Wang @ 2019-06-18 5:48 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel
On 2019/6/18 下午1:32, Markus Armbruster wrote:
> Jason Wang <jasowang@redhat.com> writes:
>
>> On 2019/6/4 下午7:52, Markus Armbruster wrote:
>>> -netdev tap,helper=... is a useless duplicate of -netdev bridge.
>>> Deprecate and de-document.
>>>
>>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>>
>> This requires more thought as TAP could be used independently. Force
>> using a "bridge" backend may lead some confusion.
> Can you explain your qualms in a bit more detail?
>
> The thoughts that led to this patch:
> https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg03164.html
>
> Consensus back then:
>
> 1. Add qemu-bridge-helper.c to Jason's "Network device backends"
>
> 2. Deprecate -netdev tap parameter "helper"
The problem comes from this point. The main reason is TAP could be used
without bridge e.g:
- you can simply assign an IP and and properly configure route table on
host to make it work
- or setup tc actions or using XDP to transfer packets between TAP and
another interfaces
- using AF_PACKET or other socket to capture the traffic and do the
forwarding in userspace
So it looks to me switching to use -netdev bridge is inappropriate.
Thanks
>
> 3. Improve documentation of -netdev bridge
>
> 4. Create a manual page for qemu-bridge-helper that also covers
> /etc/qemu/bridge.conf.
>
> 5. Fix the nutty error handling in parse_acl_file()
>
> This series covers the first two [PATCH 1+2], and records the remaining
> three more permanently [PATCH 3].
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-06-18 5:49 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-04 11:52 [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 1/3] MAINTAINERS: Add qemu-bridge-helper.c to "Network device backends" Markus Armbruster
2019-06-04 11:52 ` [Qemu-devel] [PATCH 2/3] net: Deprecate tap backend's parameter "helper" Markus Armbruster
2019-06-18 3:31 ` Jason Wang
2019-06-18 5:32 ` Markus Armbruster
2019-06-18 5:48 ` Jason Wang
2019-06-04 11:52 ` [Qemu-devel] [PATCH 3/3] qemu-bridge-helper: Document known shortcomings Markus Armbruster
2019-06-18 3:31 ` [Qemu-devel] [PATCH 0/3] Some qemu-bridge-helper work 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).