<br><tt><font size=2>Daniel Veillard <veillard@redhat.com> wrote
on 02/11/2010 05:12:07 AM:<br>
<br>
</font></tt>
<br><tt><font size=2>> <br>
> Please respond to veillard</font></tt>
<br><tt><font size=2>> <br>
> On Mon, Feb 08, 2010 at 02:37:18PM -0500, Stefan Berger wrote:<br>
> > This part adds support for qemu making a macvtap tap device available<br>
> > via file descriptor passed to qemu command line. This also attempts
to<br>
> > tear down the macvtap device when a VM terminates. This includes
support<br>
> > for attachment and detachment to/from running VM.<br>
> > <br>
> > Signed-off-by: Stefan Berger <stefanb@us.ibm.com><br>
> [...]<br>
> >  <br>
> >  int<br>
> > +qemudPhysIfaceConnect(virConnectPtr conn,<br>
> > +                  
   virDomainNetDefPtr net,<br>
> > +                  
   char *linkdev,<br>
> > +                  
   int brmode)<br>
> > +{<br>
> > +    int rc;<br>
> > +#if defined(WITH_MACVTAP)<br>
> > +    char *res_ifname = NULL;<br>
> > +    int hasBusyDev = 0;<br>
> > +<br>
> > +    delMacvtapByMACAddress(conn, net->mac, &hasBusyDev);<br>
> > +<br>
> > +    if (hasBusyDev) {<br>
> > +        virReportSystemError(NULL, errno,
"%s",<br>
> > +                  
          _("A macvtap with the same MAC
<br>
> address is in use"));<br>
> > +        return -1;<br>
> > +    }<br>
> > +<br>
> > +    rc = openMacvtapTap(conn, net->ifname, net->mac,
linkdev, brmode,<br>
> > +                  
     &res_ifname);<br>
> > +    if (rc > 0) {<br>
> <br>
>   since openMacvtapTap seems to return an fd, rc == 0 sounds
a<br>
> correct possible return, or am I missing something ?</font></tt>
<br>
<br><tt><font size=2>I'll fix this. Should be rc >= 0, with 0 as a possible
filedescriptor.</font></tt>
<br><tt><font size=2><br>
> <br>
> > +        VIR_FREE(net->ifname);<br>
> > +        net->ifname = res_ifname;<br>
> > +    }<br>
> > +#else<br>
> > +    (void)net;<br>
> > +    (void)linkdev;<br>
> > +    (void)brmode;<br>
> > +    qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,<br>
> > +                  
  "%s", _("No support for macvtap device"));<br>
> > +    rc = -1;<br>
> > +#endif<br>
> > +    return rc;<br>
> > +}<br>
> > +<br>
> <br>
>   Since qemudPhysIfaceConnect can return -1, 0 or > 0 all
with different<br>
> semantic, I think a comment describing the function and return value<br>
> is in order.</font></tt>
<br>
<br><tt><font size=2>Added description of function in upcoming patch.</font></tt>
<br><tt><font size=2><br>
> <br>
> > +int<br>
> >  qemudNetworkIfaceConnect(virConnectPtr conn,<br>
> >                  
        struct qemud_driver *driver,<br>
> >                  
        virDomainNetDefPtr net,<br>
> > @@ -2520,6 +2558,7 @@ qemuBuildHostNetStr(virConnectPtr conn,<br>
> >      switch (net->type) {<br>
> >      case VIR_DOMAIN_NET_TYPE_NETWORK:<br>
> >      case VIR_DOMAIN_NET_TYPE_BRIDGE:<br>
> > +    case VIR_DOMAIN_NET_TYPE_DIRECT:<br>
> >          virBufferAddLit(&buf, "tap");<br>
> >          virBufferVSprintf(&buf,
"%cfd=%s", type_sep, tapfd);<br>
> >          type_sep = ',';<br>
> <br>
>   Otherwise looks fine, ACK once resolved :-)</font></tt>
<br>
<br><tt><font size=2>Will repost.</font></tt>
<br>
<br><tt><font size=2>   Stefan</font></tt>
<br>
<br><tt><font size=2><br>
> <br>
> Daniel<br>
> <br>
> -- <br>
> Daniel Veillard      | libxml Gnome XML XSLT toolkit
 </font></tt><a href=http://xmlsoft.org/><tt><font size=2>http://xmlsoft.org/</font></tt></a><tt><font size=2><br>
> daniel@veillard.com  | Rpmfind RPM search engine </font></tt><a href=http://rpmfind.net/><tt><font size=2>http://rpmfind.net/</font></tt></a><tt><font size=2><br>
> </font></tt><a href=http://veillard.com/><tt><font size=2>http://veillard.com/</font></tt></a><tt><font size=2>
| virtualization library  </font></tt><a href=http://libvirt.org/><tt><font size=2>http://libvirt.org/</font></tt></a><tt><font size=2><br>
</font></tt>