diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3d4a6da469..d8c80325f6 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3645,20 +3645,20 @@ qemuBuildHostNetStr(virDomainNetDefPtr net, for (i = 0; i < net->guestIP.nips; i++) { const virNetDevIPAddr *ip = net->guestIP.ips[i]; g_autofree char *addr = NULL; - const char *prefix = ""; if (!(addr = virSocketAddrFormat(&ip->address))) return NULL; - if (VIR_SOCKET_ADDR_IS_FAMILY(&ip->address, AF_INET)) - prefix = "net="; - if (VIR_SOCKET_ADDR_IS_FAMILY(&ip->address, AF_INET6)) - prefix = "ipv6-net="; - - virBufferAsprintf(&buf, "%s%s", prefix, addr); - if (ip->prefix) - virBufferAsprintf(&buf, "/%u", ip->prefix); - virBufferAddChar(&buf, ','); + if (VIR_SOCKET_ADDR_IS_FAMILY(&ip->address, AF_INET)) { + virBufferAsprintf(&buf, "net=%s", addr); + if (ip->prefix) + virBufferAsprintf(&buf, "/%u", ip->prefix); + virBufferAddChar(&buf, ','); + } else if (VIR_SOCKET_ADDR_IS_FAMILY(&ip->address, AF_INET6)) { + virBufferAsprintf(&buf, "ipv6-prefix=%s,", addr); + if (ip->prefix) + virBufferAsprintf(&buf, "ipv6-prefixlen=%u,", ip->prefix); + } } } break; diff --git a/tests/qemuxml2argvdata/net-user-addr.args b/tests/qemuxml2argvdata/net-user-addr.args index 6cc82d9e62..5f1de305e0 100644 --- a/tests/qemuxml2argvdata/net-user-addr.args +++ b/tests/qemuxml2argvdata/net-user-addr.args @@ -27,6 +27,7 @@ server,nowait \ -usb \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \ -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \ --netdev user,net=172.17.2.0/24,ipv6-net=2001:db8:ac10:fd01::/64,id=hostnet0 \ +-netdev user,net=172.17.2.0/24,ipv6-prefix=2001:db8:ac10:fd01::,\ +ipv6-prefixlen=64,id=hostnet0 \ -device rtl8139,netdev=hostnet0,id=net0,mac=00:11:22:33:44:55,bus=pci.0,\ addr=0x3