diff mbox

[4/7] monitor: Add host_net_add device argument completion.

Message ID 1400540600-1328-5-git-send-email-kroosec@gmail.com
State New
Headers show

Commit Message

Hani Benhabiles May 19, 2014, 11:03 p.m. UTC
Also fix the parameters documentation.

Signed-off-by: Hani Benhabiles <hani@linux.com>
---
 hmp-commands.hx |  3 ++-
 hmp.h           |  1 +
 monitor.c       | 14 ++++++++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)

Comments

Stefan Hajnoczi May 23, 2014, 12:05 p.m. UTC | #1
On Tue, May 20, 2014 at 12:03:17AM +0100, Hani Benhabiles wrote:
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index 919af6e..6aaec1b 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -1209,9 +1209,10 @@ ETEXI
>      {
>          .name       = "host_net_add",
>          .args_type  = "device:s,opts:s?",
> -        .params     = "tap|user|socket|vde|netmap|dump [options]",
> +        .params     = "tap|user|socket|vde|bridge|dump [options]",

Why did you delete "netmap"?  I guess "bridge" should have been appended.

> diff --git a/monitor.c b/monitor.c
> index 6a3a5c9..365c66a 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -4593,6 +4593,20 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
>      }
>  }
>  
> +void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str)
> +{
> +    if (nb_args != 2) {
> +        return;
> +    }
> +    readline_set_completion_index(rs, strlen(str));
> +    add_completion_option(rs, str, "tap");
> +    add_completion_option(rs, str, "user");
> +    add_completion_option(rs, str, "socket");
> +    add_completion_option(rs, str, "vde");
> +    add_completion_option(rs, str, "dump");
> +    add_completion_option(rs, str, "bridge");

Please take a look at net_host_check_device() and share the list from
there.  (Some of the netdevs depend on build-time options.)
Hani Benhabiles May 25, 2014, 4:12 p.m. UTC | #2
On Fri, May 23, 2014 at 02:05:03PM +0200, Stefan Hajnoczi wrote:
> On Tue, May 20, 2014 at 12:03:17AM +0100, Hani Benhabiles wrote:
> > diff --git a/hmp-commands.hx b/hmp-commands.hx
> > index 919af6e..6aaec1b 100644
> > --- a/hmp-commands.hx
> > +++ b/hmp-commands.hx
> > @@ -1209,9 +1209,10 @@ ETEXI
> >      {
> >          .name       = "host_net_add",
> >          .args_type  = "device:s,opts:s?",
> > -        .params     = "tap|user|socket|vde|netmap|dump [options]",
> > +        .params     = "tap|user|socket|vde|bridge|dump [options]",
> 
> Why did you delete "netmap"?  I guess "bridge" should have been appended.
> 

Because "netmap" fails the net_host_check_device() check:

(qemu) host_net_add user
(qemu) host_net_add foooo
invalid host network device foooo
(qemu) host_net_add netmap
invalid host network device netmap

Should "netmap" be added there ?

> > diff --git a/monitor.c b/monitor.c
> > index 6a3a5c9..365c66a 100644
> > --- a/monitor.c
> > +++ b/monitor.c
> > @@ -4593,6 +4593,20 @@ void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
> >      }
> >  }
> >  
> > +void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str)
> > +{
> > +    if (nb_args != 2) {
> > +        return;
> > +    }
> > +    readline_set_completion_index(rs, strlen(str));
> > +    add_completion_option(rs, str, "tap");
> > +    add_completion_option(rs, str, "user");
> > +    add_completion_option(rs, str, "socket");
> > +    add_completion_option(rs, str, "vde");
> > +    add_completion_option(rs, str, "dump");
> > +    add_completion_option(rs, str, "bridge");
> 
> Please take a look at net_host_check_device() and share the list from
> there.  (Some of the netdevs depend on build-time options.)

Ok, will add a patch to share the valid_params_list[] in include/net/net.h.
Stefan Hajnoczi May 26, 2014, 9:20 a.m. UTC | #3
On Sun, May 25, 2014 at 05:12:55PM +0100, Hani Benhabiles wrote:
> On Fri, May 23, 2014 at 02:05:03PM +0200, Stefan Hajnoczi wrote:
> > On Tue, May 20, 2014 at 12:03:17AM +0100, Hani Benhabiles wrote:
> > > diff --git a/hmp-commands.hx b/hmp-commands.hx
> > > index 919af6e..6aaec1b 100644
> > > --- a/hmp-commands.hx
> > > +++ b/hmp-commands.hx
> > > @@ -1209,9 +1209,10 @@ ETEXI
> > >      {
> > >          .name       = "host_net_add",
> > >          .args_type  = "device:s,opts:s?",
> > > -        .params     = "tap|user|socket|vde|netmap|dump [options]",
> > > +        .params     = "tap|user|socket|vde|bridge|dump [options]",
> > 
> > Why did you delete "netmap"?  I guess "bridge" should have been appended.
> > 
> 
> Because "netmap" fails the net_host_check_device() check:
> 
> (qemu) host_net_add user
> (qemu) host_net_add foooo
> invalid host network device foooo
> (qemu) host_net_add netmap
> invalid host network device netmap
> 
> Should "netmap" be added there ?

Probably because your QEMU was not built with (optional) netmap support.
It's primarily used on FreeBSD but there is Linux code as well:
https://code.google.com/p/netmap/

Stefan
diff mbox

Patch

diff --git a/hmp-commands.hx b/hmp-commands.hx
index 919af6e..6aaec1b 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1209,9 +1209,10 @@  ETEXI
     {
         .name       = "host_net_add",
         .args_type  = "device:s,opts:s?",
-        .params     = "tap|user|socket|vde|netmap|dump [options]",
+        .params     = "tap|user|socket|vde|bridge|dump [options]",
         .help       = "add host VLAN client",
         .mhandler.cmd = net_host_device_add,
+        .command_completion = host_net_add_completion,
     },
 
 STEXI
diff --git a/hmp.h b/hmp.h
index 0c814d0..22ee836 100644
--- a/hmp.h
+++ b/hmp.h
@@ -109,5 +109,6 @@  void watchdog_action_completion(ReadLineState *rs, int nb_args,
                                 const char *str);
 void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
                                        const char *str);
+void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str);
 
 #endif
diff --git a/monitor.c b/monitor.c
index 6a3a5c9..365c66a 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4593,6 +4593,20 @@  void migrate_set_capability_completion(ReadLineState *rs, int nb_args,
     }
 }
 
+void host_net_add_completion(ReadLineState *rs, int nb_args, const char *str)
+{
+    if (nb_args != 2) {
+        return;
+    }
+    readline_set_completion_index(rs, strlen(str));
+    add_completion_option(rs, str, "tap");
+    add_completion_option(rs, str, "user");
+    add_completion_option(rs, str, "socket");
+    add_completion_option(rs, str, "vde");
+    add_completion_option(rs, str, "dump");
+    add_completion_option(rs, str, "bridge");
+}
+
 static void monitor_find_completion_by_table(Monitor *mon,
                                              const mon_cmd_t *cmd_table,
                                              char **args,