[Libvir] Virtual networking (not the rathole thread :-)

Karel Zak kzak at redhat.com
Mon Jan 29 08:27:03 UTC 2007


 pedant's quick glance: ;-)

On Thu, Jan 25, 2007 at 03:52:03PM +0000, Mark McLoughlin wrote:
> @@ -761,6 +813,61 @@ static int qemudParseXML(struct qemud_se
>  }
>  
>  
> +static char *
> +qemudNetworkIfaceConnect(struct qemud_server *server,
> +                         struct qemud_vm *vm,
> +                         struct qemud_vm_net_def *net)
> +{

 .....

> +
> +    snprintf(tapfdstr, sizeof(tapfdstr), "tap,fd=%d,script=", tapfd);
> +
> +    return strdup(tapfdstr);
         ^^^^^^^^^^^^^^^^^^^
  where is allocation check?

       if ((p = strdup(tapfdstr)))
           return p; 

> +
> + no_memory:
> +    qemudReportError(server, VIR_ERR_NO_MEMORY, "tapfds");
> + error:
> +    if (tapfd != -1)
> +        close(tapfd);
> +    return NULL;
> +}
> @@ -1653,6 +1774,18 @@ char *qemudGenerateXML(struct qemud_serv
>                                net->mac[3], net->mac[4], net->mac[5]) < 0)
>              goto no_memory;
>  
> +        if (net->type == QEMUD_NET_NETWORK) {
> +            if (qemudBufferPrintf(&buf, "      <network name='%s", net->dst.network.name) < 0)
> +                goto no_memory;
> +
> +            if (net->dst.network.tapifname[0] != '\0' &&
> +                qemudBufferPrintf(&buf, " tapifname='%s'", net->dst.network.tapifname) < 0)
> +                goto no_memory;
> +
> +            if (qemudBufferPrintf(&buf, "/>\n") < 0)
> +                goto no_memory;
> +        }
> +
>          if (qemudBufferPrintf(&buf, "    </interface>\n") < 0)
                          ^^^^^^

  There is also BufferAdd() which is cheaper than Printf if you
  needn't any string formatting.

>              goto no_memory;
>  

    Karel

-- 
 Karel Zak  <kzak at redhat.com>




More information about the libvir-list mailing list