qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() p


From: Jason Wang
Subject: Re: [Qemu-devel] [PATCH COLO-Frame v8 23/34] tap: Make launch_script() public
Date: Wed, 29 Jul 2015 16:57:49 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0


On 07/29/2015 04:45 PM, zhanghailiang wrote:
> We also change the parameters of launch_script().

A quick question (I don't go through the codes tough). What's the plan
for management(libvirt)? I believe some setup (iptables, fd creation)
should be offloaded to management (libvirt)?

Thanks

> Cc: Stefan Hajnoczi <address@hidden>
> Cc: Jason Wang <address@hidden>
> Signed-off-by: zhanghailiang <address@hidden>
> Signed-off-by: Li Zhijian <address@hidden>
> ---
>  include/net/tap.h |  2 ++
>  net/tap.c         | 31 ++++++++++++++++++-------------
>  2 files changed, 20 insertions(+), 13 deletions(-)
>
> diff --git a/include/net/tap.h b/include/net/tap.h
> index 5da4edc..ac99b31 100644
> --- a/include/net/tap.h
> +++ b/include/net/tap.h
> @@ -38,4 +38,6 @@ int tap_get_fd(NetClientState *nc);
>  struct vhost_net;
>  struct vhost_net *tap_get_vhost_net(NetClientState *nc);
>  
> +void launch_script(char *const args[], int fd, Error **errp);
> +
>  #endif /* QEMU_NET_TAP_H */
> diff --git a/net/tap.c b/net/tap.c
> index c2135cd..a715636 100644
> --- a/net/tap.c
> +++ b/net/tap.c
> @@ -60,9 +60,6 @@ typedef struct TAPState {
>      unsigned host_vnet_hdr_len;
>  } TAPState;
>  
> -static void launch_script(const char *setup_script, const char *ifname,
> -                          int fd, Error **errp);
> -
>  static void tap_send(void *opaque);
>  static void tap_writable(void *opaque);
>  
> @@ -305,7 +302,14 @@ static void tap_cleanup(NetClientState *nc)
>      qemu_purge_queued_packets(nc);
>  
>      if (s->down_script[0]) {
> -        launch_script(s->down_script, s->down_script_arg, s->fd, &err);
> +        char *args[3];
> +        char **parg;
> +
> +        parg = args;
> +        *parg++ = (char *)s->down_script;
> +        *parg++ = (char *)s->down_script_arg;
> +        *parg = NULL;
> +        launch_script(args, s->fd, &err);
>          if (err) {
>              error_report_err(err);
>          }
> @@ -382,12 +386,10 @@ static TAPState *net_tap_fd_init(NetClientState *peer,
>      return s;
>  }
>  
> -static void launch_script(const char *setup_script, const char *ifname,
> -                          int fd, Error **errp)
> +void launch_script(char *const args[], int fd, Error **errp)
>  {
>      int pid, status;
> -    char *args[3];
> -    char **parg;
> +    const char *setup_script = args[0];
>  
>      /* try to launch network script */
>      pid = fork();
> @@ -404,10 +406,6 @@ static void launch_script(const char *setup_script, 
> const char *ifname,
>                  close(i);
>              }
>          }
> -        parg = args;
> -        *parg++ = (char *)setup_script;
> -        *parg++ = (char *)ifname;
> -        *parg = NULL;
>          execv(setup_script, args);
>          _exit(1);
>      } else {
> @@ -611,7 +609,14 @@ static int net_tap_init(const NetdevTapOptions *tap, int 
> *vnet_hdr,
>      if (setup_script &&
>          setup_script[0] != '\0' &&
>          strcmp(setup_script, "no") != 0) {
> -        launch_script(setup_script, ifname, fd, &err);
> +        char *args[3];
> +        char **parg;
> +        parg = args;
> +        *parg++ = (char *)setup_script;
> +        *parg++ = (char *)ifname;
> +        *parg = NULL;
> +
> +        launch_script(args, fd, &err);
>          if (err) {
>              error_propagate(errp, err);
>              close(fd);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]