static bool cmdNetworkDumpXML(vshControl *ctl, const vshCmd *cmd) { virNetworkPtr network; bool ret = true; char *dump; unsigned int flags = 0; int inactive; if (!(network = virshCommandOptNetwork(ctl, cmd, NULL))) return false; inactive = vshCommandOptBool(cmd, "inactive"); if (inactive) flags |= VIR_NETWORK_XML_INACTIVE; dump = virNetworkGetXMLDesc(network, flags); if (dump != NULL) { vshPrint(ctl, "%s", dump); VIR_FREE(dump); } else { ret = false; } virNetworkFree(network); return ret; }
Result NetControlThread::getVirtNetXMLDesc() { Result result; QString name = task.object; result.name = name; bool read = false; char *Returns = nullptr; if ( task.srcConnPtr==nullptr ) { result.result = false; result.err = "Connection pointer is NULL."; return result; }; virNetworkPtr network = virNetworkLookupByName( *task.srcConnPtr, name.toUtf8().data()); if ( network!=nullptr ) { Returns = virNetworkGetXMLDesc( network, VIR_NETWORK_XML_INACTIVE); if ( Returns==nullptr ) result.err = sendConnErrors(); else read = true; virNetworkFree(network); } else result.err = sendConnErrors(); QTemporaryFile f; f.setAutoRemove(false); f.setFileTemplate( QString("%1%2XML_Desc-XXXXXX.xml") .arg(QDir::tempPath()).arg(QDir::separator())); read = f.open(); if (read) f.write(Returns); result.fileName.append(f.fileName()); f.close(); if ( Returns!=nullptr ) free(Returns); result.result = read; result.msg.append(QString("'<b>%1</b>' Network %2 XML'ed") .arg(name).arg((read)?"":"don't")); return result; }
/** * gvir_network_get_config: * @network: the network * @flags: the flags * @err: Place-holder for possible errors * * Returns: (transfer full): the config. The returned object should be * unreffed with g_object_unref() when no longer needed. */ GVirConfigNetwork *gvir_network_get_config(GVirNetwork *network, guint flags, GError **err) { GVirNetworkPrivate *priv; gchar *xml; g_return_val_if_fail(GVIR_IS_NETWORK(network), NULL); g_return_val_if_fail(err == NULL || *err == NULL, NULL); priv = network->priv; if (!(xml = virNetworkGetXMLDesc(priv->handle, flags))) { gvir_set_error_literal(err, GVIR_NETWORK_ERROR, 0, "Unable to get network XML config"); return NULL; } GVirConfigNetwork *conf = gvir_config_network_new_from_xml(xml, err); free(xml); return conf; }