Daniel Veillard <veillard(a)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(a)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.
> + 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.
Stefan
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/