[libvirt] [PATCH 3/5] macvtap support for libvirt -- qemu support

Daniel Veillard veillard at redhat.com
Thu Feb 11 13:32:35 UTC 2010


On Thu, Feb 11, 2010 at 07:46:59AM -0500, Stefan Berger wrote:
> Daniel Veillard <veillard at redhat.com> wrote on 02/11/2010 05:12:07 AM:
> 
> 
> > 
> > Please respond to veillard
> > 
> > On Mon, Feb 08, 2010 at 02:37:18PM -0500, Stefan Berger wrote:
> > > This part adds support for qemu making a macvtap tap device available
> > > via file descriptor passed to qemu command line. This also attempts to
> > > tear down the macvtap device when a VM terminates. This includes 
> support
> > > for attachment and detachment to/from running VM.
> > > 
> > > Signed-off-by: Stefan Berger <stefanb at us.ibm.com>
> > [...]
> > > 
> > >  int
> > > +qemudPhysIfaceConnect(virConnectPtr conn,
> > > +                      virDomainNetDefPtr net,
> > > +                      char *linkdev,
> > > +                      int brmode)
> > > +{
> > > +    int rc;
> > > +#if defined(WITH_MACVTAP)
> > > +    char *res_ifname = NULL;
> > > +    int hasBusyDev = 0;
> > > +
> > > +    delMacvtapByMACAddress(conn, net->mac, &hasBusyDev);
> > > +
> > > +    if (hasBusyDev) {
> > > +        virReportSystemError(NULL, errno, "%s",
> > > +                             _("A macvtap with the same MAC 
> > address is in use"));
> > > +        return -1;
> > > +    }
> > > +
> > > +    rc = openMacvtapTap(conn, net->ifname, net->mac, linkdev, brmode,
> > > +                        &res_ifname);
> > > +    if (rc > 0) {
> > 
> >   since openMacvtapTap seems to return an fd, rc == 0 sounds a
> > correct possible return, or am I missing something ?
> 
> I'll fix this. Should be rc >= 0, with 0 as a possible filedescriptor.

  Okay I was expecting this but wanted to be sure :-)

> > 
> > > +        VIR_FREE(net->ifname);
> > > +        net->ifname = res_ifname;
> > > +    }
> > > +#else
> > > +    (void)net;
> > > +    (void)linkdev;
> > > +    (void)brmode;
> > > +    qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> > > +                     "%s", _("No support for macvtap device"));
> > > +    rc = -1;
> > > +#endif
> > > +    return rc;
> > > +}
> > > +
> > 
> >   Since qemudPhysIfaceConnect can return -1, 0 or > 0 all with different
> > semantic, I think a comment describing the function and return value
> > is in order.
> 
> Added description of function in upcoming patch.
> 
> > 
> > > +int
> > >  qemudNetworkIfaceConnect(virConnectPtr conn,
> > >                           struct qemud_driver *driver,
> > >                           virDomainNetDefPtr net,
> > > @@ -2520,6 +2558,7 @@ qemuBuildHostNetStr(virConnectPtr conn,
> > >      switch (net->type) {
> > >      case VIR_DOMAIN_NET_TYPE_NETWORK:
> > >      case VIR_DOMAIN_NET_TYPE_BRIDGE:
> > > +    case VIR_DOMAIN_NET_TYPE_DIRECT:
> > >          virBufferAddLit(&buf, "tap");
> > >          virBufferVSprintf(&buf, "%cfd=%s", type_sep, tapfd);
> > >          type_sep = ',';
> > 
> >   Otherwise looks fine, ACK once resolved :-)
> 
> Will repost.

  okay, thanks, after rebase please :-)

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list