[libvirt] [PATCH] openvzDomainSetNetwork: use virCommand

Ján Tomko jtomko at redhat.com
Mon May 20 08:46:34 UTC 2013


On 05/19/2013 11:52 AM, Michal Privoznik wrote:
> Currently, the openvzDomainSetNetwork function constructs an
> array of strings representing a command line for VZCTL binary.
> This is a overkill since our virCommand APIs can cover all the
> functionality.
> ---
>  src/openvz/openvz_driver.c | 56 ++++++++++------------------------------------
>  1 file changed, 12 insertions(+), 44 deletions(-)
> 
> diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
> index 129e328..db41d72 100644
> --- a/src/openvz/openvz_driver.c
> +++ b/src/openvz/openvz_driver.c

snip snip snip

> @@ -922,37 +892,35 @@ openvzDomainSetNetwork(virConnectPtr conn, const char *vpsid,
>          if (!(opt = virBufferContentAndReset(&buf)))
>              goto no_memory;
>  
> -        ADD_ARG_LIT(opt) ;
> +        /* --netif_add ifname[,mac,host_ifname,host_mac] */
> +        virCommandAddArgList(cmd, "--netif_add", opt, NULL);
>          VIR_FREE(opt);
>      } else if (net->type == VIR_DOMAIN_NET_TYPE_ETHERNET &&
>                net->data.ethernet.ipaddr != NULL) {
>          /* --ipadd ip */
> -        ADD_ARG_LIT("--ipadd") ;
> -        ADD_ARG_LIT(net->data.ethernet.ipaddr) ;
> +        virCommandAddArgList(cmd, "--ipadd", net->data.ethernet.ipaddr, NULL);
>      }
>  
>      /* TODO: processing NAT and physical device */
>  
> -    if (prog[0] != NULL) {
> -        ADD_ARG_LIT("--save");
> -        if (virRun(prog, NULL) < 0) {
> +    if (cmd) {

cmd may be NULL here on OOM too.

> +        virCommandAddArg(cmd, "--save");
> +        if (virCommandRun(cmd, NULL) < 0) {
>             rc = -1;
>             goto exit;

Redundant goto (unless you initialize rc to -1 and use it to skip over
"rc = 0").

>          }
>      }
>  
>   exit:
> -    cmdExecFree(prog);
> +    virCommandFree(cmd);
>      return rc;
>  
>   no_memory:
>      VIR_FREE(opt);

opt is NULL here.

>      virReportError(VIR_ERR_INTERNAL_ERROR,
>                     _("Could not put argument to %s"), VZCTL);

I think a standard "out of memory" message would be more fitting here.
You could also rename 'exit' to 'cleanup' and get rid of the 'no_memory' label
completely.

Jan




More information about the libvir-list mailing list