Patchwork [v4,05/10] net: tap/tap-win32: introduce info_dict

login
register
mail settings
Submitter Miguel Di Ciurcio Filho
Date May 18, 2010, 5:07 p.m.
Message ID <1274202469-9332-6-git-send-email-miguel.filho@gmail.com>
Download mbox | patch
Permalink /patch/52900/
State New
Headers show

Comments

Miguel Di Ciurcio Filho - May 18, 2010, 5:07 p.m.
Signed-off-by: Miguel Di Ciurcio Filho <miguel.filho@gmail.com>
---
 net/tap-win32.c |    9 ++++++++-
 net/tap.c       |   18 +++++++++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)
Luiz Capitulino - May 27, 2010, 5:50 p.m.
On Tue, 18 May 2010 14:07:44 -0300
Miguel Di Ciurcio Filho <miguel.filho@gmail.com> wrote:

> Signed-off-by: Miguel Di Ciurcio Filho <miguel.filho@gmail.com>
> ---
>  net/tap-win32.c |    9 ++++++++-
>  net/tap.c       |   18 +++++++++++++++++-
>  2 files changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/net/tap-win32.c b/net/tap-win32.c
> index 74348da..54c6725 100644
> --- a/net/tap-win32.c
> +++ b/net/tap-win32.c
> @@ -32,6 +32,8 @@
>  #include "net.h"
>  #include "sysemu.h"
>  #include "qemu-error.h"
> +#include "qdict.h"
> +#include "qstring.h"
>  #include <stdio.h>
>  #include <windows.h>
>  #include <winioctl.h>
> @@ -691,7 +693,12 @@ static int tap_win32_init(VLANState *vlan, const char *model,
>      s = DO_UPCAST(TAPState, nc, nc);
>  
>      snprintf(s->nc.info_str, sizeof(s->nc.info_str),
> -             "tap: ifname=%s", ifname);
> +                "tap: ifname=%s", ifname);

 Did you change this by accident?

> +
> +    nc->info_dict = qdict_new()
> +
> +    qdict_put(nc->info_dict, "ifname", qstring_from_str(ifname));
> +    qdict_put(nc->info_dict, "model", qstring_from_str("tap"));

 So, this is the kind of thing that deserves attention when documenting,
we need to make it clear in the doc what's each format we support, ie.
xen, tap, vde, dump, slirp and socket.

>  
>      s->handle = handle;
>  
> diff --git a/net/tap.c b/net/tap.c
> index 0147dab..d71f312 100644
> --- a/net/tap.c
> +++ b/net/tap.c
> @@ -39,6 +39,9 @@
>  #include "qemu-char.h"
>  #include "qemu-common.h"
>  #include "qemu-error.h"
> +#include "qjson.h"
> +#include "qdict.h"
> +#include "qint.h"
>  
>  #include "net/tap-linux.h"
>  
> @@ -448,17 +451,30 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
>  
>      if (qemu_opt_get(opts, "fd")) {
>          snprintf(s->nc.info_str, sizeof(s->nc.info_str), "fd=%d", fd);
> +        assert(s->nc.info_dict == NULL);
> +
> +        s->nc.info_dict = qdict_new();
> +        qdict_put(s->nc.info_dict, "fd", qint_from_int(fd));
> +
>      } else {
>          const char *ifname, *script, *downscript;
> +        QObject *obj;
>  
>          ifname     = qemu_opt_get(opts, "ifname");
>          script     = qemu_opt_get(opts, "script");
>          downscript = qemu_opt_get(opts, "downscript");
>  
>          snprintf(s->nc.info_str, sizeof(s->nc.info_str),
> -                 "ifname=%s,script=%s,downscript=%s",
> +                "ifname=%s,script=%s,downscript=%s",

 Another accidental change, I think.

>                   ifname, script, downscript);
>  
> +        obj = qobject_from_jsonf("{ 'model': 'tap', 'ifname': %s, \
> +            'script': %s,'downscript': %s }",
> +            ifname, script, downscript);
> +
> +        assert(s->nc.info_dict == NULL);
> +        s->nc.info_dict = qobject_to_qdict(obj);
> +
>          if (strcmp(downscript, "no") != 0) {
>              snprintf(s->down_script, sizeof(s->down_script), "%s", downscript);
>              snprintf(s->down_script_arg, sizeof(s->down_script_arg), "%s", ifname);

Patch

diff --git a/net/tap-win32.c b/net/tap-win32.c
index 74348da..54c6725 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -32,6 +32,8 @@ 
 #include "net.h"
 #include "sysemu.h"
 #include "qemu-error.h"
+#include "qdict.h"
+#include "qstring.h"
 #include <stdio.h>
 #include <windows.h>
 #include <winioctl.h>
@@ -691,7 +693,12 @@  static int tap_win32_init(VLANState *vlan, const char *model,
     s = DO_UPCAST(TAPState, nc, nc);
 
     snprintf(s->nc.info_str, sizeof(s->nc.info_str),
-             "tap: ifname=%s", ifname);
+                "tap: ifname=%s", ifname);
+
+    nc->info_dict = qdict_new()
+
+    qdict_put(nc->info_dict, "ifname", qstring_from_str(ifname));
+    qdict_put(nc->info_dict, "model", qstring_from_str("tap"));
 
     s->handle = handle;
 
diff --git a/net/tap.c b/net/tap.c
index 0147dab..d71f312 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -39,6 +39,9 @@ 
 #include "qemu-char.h"
 #include "qemu-common.h"
 #include "qemu-error.h"
+#include "qjson.h"
+#include "qdict.h"
+#include "qint.h"
 
 #include "net/tap-linux.h"
 
@@ -448,17 +451,30 @@  int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
 
     if (qemu_opt_get(opts, "fd")) {
         snprintf(s->nc.info_str, sizeof(s->nc.info_str), "fd=%d", fd);
+        assert(s->nc.info_dict == NULL);
+
+        s->nc.info_dict = qdict_new();
+        qdict_put(s->nc.info_dict, "fd", qint_from_int(fd));
+
     } else {
         const char *ifname, *script, *downscript;
+        QObject *obj;
 
         ifname     = qemu_opt_get(opts, "ifname");
         script     = qemu_opt_get(opts, "script");
         downscript = qemu_opt_get(opts, "downscript");
 
         snprintf(s->nc.info_str, sizeof(s->nc.info_str),
-                 "ifname=%s,script=%s,downscript=%s",
+                "ifname=%s,script=%s,downscript=%s",
                  ifname, script, downscript);
 
+        obj = qobject_from_jsonf("{ 'model': 'tap', 'ifname': %s, \
+            'script': %s,'downscript': %s }",
+            ifname, script, downscript);
+
+        assert(s->nc.info_dict == NULL);
+        s->nc.info_dict = qobject_to_qdict(obj);
+
         if (strcmp(downscript, "no") != 0) {
             snprintf(s->down_script, sizeof(s->down_script), "%s", downscript);
             snprintf(s->down_script_arg, sizeof(s->down_script_arg), "%s", ifname);