On 19/02/2018 10:15, Thomas Huth wrote:
> 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.
> 
> Signed-off-by: Thomas Huth <th...@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..08049d9 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(1);
> +    } else {
>          /* Parse convenience option format ip6-net=fec0::0[/64] */
>          const char *ip6_net = qemu_opt_get(opts, "ipv6-net");
>  
> 

Reviewed-by: Paolo Bonzini <pbonz...@redhat.com>

Paolo

Reply via email to