Re-factor this code so that it can be used for NIC hotplug too. The awkward arguments are needed to allow use to do "pci_add auto nic macaddr=..." * src/qemu_conf.c: factor the nic string formatting code into its own function --- src/qemu_conf.c | 37 +++++++++++++++++++++++++++---------- 1 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/qemu_conf.c b/src/qemu_conf.c index 4043d70..679dac3 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -833,6 +833,30 @@ qemudNetworkIfaceConnect(virConnectPtr conn, return NULL; } +static int +qemuBuildNicStr(virConnectPtr conn, + virDomainNetDefPtr net, + const char *prefix, + char type_sep, + int vlan, + char **str) +{ + if (virAsprintf(str, + "%snic%cmacaddr=%02x:%02x:%02x:%02x:%02x:%02x,vlan=%d%s%s", + prefix ? prefix : "", + type_sep, + net->mac[0], net->mac[1], + net->mac[2], net->mac[3], + net->mac[4], net->mac[5], + vlan, + (net->model ? ",model=" : ""), + (net->model ? net->model : "")) < 0) { + virReportOOMError(conn); + return -1; + } + + return 0; +} static int qemudBuildCommandLineChrDevStr(virDomainChrDefPtr dev, char *buf, @@ -1366,21 +1390,14 @@ int qemudBuildCommandLine(virConnectPtr conn, } else { int vlan = 0; for (i = 0 ; i < def->nnets ; i++) { - char nic[100]; virDomainNetDefPtr net = def->nets[i]; + char *nic; - if (snprintf(nic, sizeof(nic), - "nic,macaddr=%02x:%02x:%02x:%02x:%02x:%02x,vlan=%d%s%s", - net->mac[0], net->mac[1], - net->mac[2], net->mac[3], - net->mac[4], net->mac[5], - vlan, - (net->model ? ",model=" : ""), - (net->model ? net->model : "")) >= sizeof(nic)) + if (qemuBuildNicStr(conn, net, NULL, ',', vlan, &nic) < 0) goto error; ADD_ARG_LIT("-net"); - ADD_ARG_LIT(nic); + ADD_ARG(nic); ADD_ARG_LIT("-net"); switch (net->type) { -- 1.6.2.5 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list