With hotplug, we're going to want to pass a tapfd name rather than an actual file descriptor, so prepare the way by passing a string tapfd to qemuBuildHostNetStr(). * src/qemu_conf.h: qemuBuildHostNetStr() takes a string tapfd now * src/qemu_conf.c: pass qemuBuildHostNetStr() a string rather than an actual file descriptor * src/qemu_driver.c: update qemudDomainAttachNetDevice() for change --- src/qemu_conf.c | 17 ++++++++++++----- src/qemu_conf.h | 2 +- src/qemu_driver.c | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/qemu_conf.c b/src/qemu_conf.c index ed77153..e875435 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -910,13 +910,13 @@ qemuBuildHostNetStr(virConnectPtr conn, const char *prefix, char type_sep, int vlan, - int tapfd, + const char *tapfd, char **str) { switch (net->type) { case VIR_DOMAIN_NET_TYPE_NETWORK: case VIR_DOMAIN_NET_TYPE_BRIDGE: - if (virAsprintf(str, "%stap%cfd=%d,vlan=%d%s%s", + if (virAsprintf(str, "%stap%cfd=%s,vlan=%d%s%s", prefix ? prefix : "", type_sep, tapfd, vlan, (net->hostnet_name ? ",name=" : ""), @@ -1534,7 +1534,7 @@ int qemudBuildCommandLine(virConnectPtr conn, for (i = 0 ; i < def->nnets ; i++) { virDomainNetDefPtr net = def->nets[i]; char *nic, *host; - int tapfd = -1; + char *tapfd_name = NULL; net->vlan = i; @@ -1550,7 +1550,7 @@ int qemudBuildCommandLine(virConnectPtr conn, if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK || net->type == VIR_DOMAIN_NET_TYPE_BRIDGE) { - tapfd = qemudNetworkIfaceConnect(conn, driver, net, qemuCmdFlags); + int tapfd = qemudNetworkIfaceConnect(conn, driver, net, qemuCmdFlags); if (tapfd < 0) goto error; @@ -1560,14 +1560,21 @@ int qemudBuildCommandLine(virConnectPtr conn, } (*tapfds)[(*ntapfds)++] = tapfd; + + if (virAsprintf(&tapfd_name, "%d", tapfd) < 0) + goto no_memory; } if (qemuBuildHostNetStr(conn, net, NULL, ',', - net->vlan, tapfd, &host) < 0) + net->vlan, tapfd_name, &host) < 0) { + VIR_FREE(tapfd_name); goto error; + } ADD_ARG_LIT("-net"); ADD_ARG(host); + + VIR_FREE(tapfd_name); } } diff --git a/src/qemu_conf.h b/src/qemu_conf.h index 8ad5f94..8150a54 100644 --- a/src/qemu_conf.h +++ b/src/qemu_conf.h @@ -150,7 +150,7 @@ int qemuBuildHostNetStr (virConnectPtr conn, const char *prefix, char type_sep, int vlan, - int tapfd, + const char *tapfd, char **str); int qemuBuildNicStr (virConnectPtr conn, diff --git a/src/qemu_driver.c b/src/qemu_driver.c index c4683ae..7f4e2a1 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -4587,7 +4587,7 @@ static int qemudDomainAttachNetDevice(virConnectPtr conn, net->vlan = vm->def->nets[i]->vlan; if (qemuBuildHostNetStr(conn, net, - "host_net_add ", ' ', net->vlan, -1, &cmd) < 0) + "host_net_add ", ' ', net->vlan, NULL, &cmd) < 0) return -1; remove_cmd = NULL; -- 1.6.2.5 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list