{
struct network_driver *driver = net->conn->networkPrivateData;
virNetworkObjPtr network;
+ virNetworkDefPtr def;
char *ret = NULL;
virCheckFlags(VIR_NETWORK_XML_INACTIVE, NULL);
goto cleanup;
}
- ret = virNetworkDefFormat(network->def, flags);
+ if ((flags & VIR_NETWORK_XML_INACTIVE) && network->newDef)
+ def = network->newDef;
+ else
+ def = network->def;
+
+ ret = virNetworkDefFormat(def, flags);
cleanup:
if (network)
{NULL, 0, 0, NULL}
};
+static char *vshNetworkGetXMLDesc(virNetworkPtr network)
+{
+ unsigned int flags = VIR_NETWORK_XML_INACTIVE;
+ char *doc = virNetworkGetXMLDesc(network, flags);
+
+ if (!doc && last_error->code == VIR_ERR_INVALID_ARG) {
+ /* The server side libvirt doesn't support
+ * VIR_NETWORK_XML_INACTIVE, so retry without it.
+ */
+ virFreeError(last_error);
+ last_error = NULL;
+ flags &= ~VIR_NETWORK_XML_INACTIVE;
+ doc = virNetworkGetXMLDesc(network, flags);
+ }
+ return doc;
+}
+
static bool
cmdNetworkEdit(vshControl *ctl, const vshCmd *cmd)
{
bool ret = false;
virNetworkPtr network = NULL;
virNetworkPtr network_edited = NULL;
- unsigned int flags = 0;
if (!vshConnectionUsability(ctl, ctl->conn))
goto cleanup;
if (network == NULL)
goto cleanup;
-#define EDIT_GET_XML virNetworkGetXMLDesc(network, flags)
+#define EDIT_GET_XML vshNetworkGetXMLDesc(network)
#define EDIT_NOT_CHANGED \
vshPrint(ctl, _("Network %s XML configuration not changed.\n"), \
virNetworkGetName (network)); \
This is equivalent to:
- virsh net-dumpxml network > network.xml
+ virsh net-dumpxml --inactive network > network.xml
vi network.xml (or make changes with your other text editor)
virsh net-define network.xml