[libvirt] [PATCHv2 0/2] Fix crash of libvirtd with <interaface type=network and hostdev forwarding
by Peter Krempa
Version 2 contains a fix of more callers in qemu and a whitespace cleanup.
Peter Krempa (2):
qemu: Remove hostdev entry when freeing the depending network entry
qemu_hotplug: Fix whitespace around addition in argument
src/conf/domain_conf.c | 26 ++++++++++++++++++--------
src/conf/domain_conf.h | 1 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_hotplug.c | 9 +++++++--
src/qemu/qemu_process.c | 2 ++
5 files changed, 29 insertions(+), 10 deletions(-)
--
1.8.3.2
11 years, 2 months
[libvirt] [PATCH 0/2] netcf: use only a single netcf instance for all connections
by Laine Stump
There is a good description in 2/2.
I'll be out of reach for the next several days, so unable to push even
if it gets ACKed before the freeze. I have done a rudimentary test and
it seems to work, but if someone with a suitable setup wants to do a
stress test with [many] connections, that would be very useful.
Laine Stump (2):
rename "struct interface_driver" to virNetcfDriverState
netcf driver: use a single netcf handle for all connections
src/interface/interface_backend_netcf.c | 209 ++++++++++++++++++++++----------
1 file changed, 144 insertions(+), 65 deletions(-)
--
1.7.11.7
11 years, 2 months
[libvirt] [PATCH] virsh: detect programming errors with option parsing
by Eric Blake
Noticed while reviewing another patch that had an accidental
mismatch due to refactoring. An audit of the code showed that
very few callers of vshCommandOpt were expecting a return of
-2, indicating programmer error, and of those that DID check,
they just propagated that status to yet another caller that
did not check. Fix this by making the code blatantly warn
the programmer, rather than silently ignoring it and possibly
doing the wrong thing downstream.
I know that we frown on assert()/abort() inside libvirtd
(libraries should NEVER kill the program that linked them),
but as virsh is an app rather than the library, and as this
is not the first use of assert() in virsh, I think this
approach is okay.
* tools/virsh.h (vshCommandOpt): Drop declaration.
* tools/virsh.c (vshCommandOpt): Make static, and add a
parameter. Abort on programmer errors rather than making callers
repeat that logic.
(vshCommandOptInt, vshCommandOptUInt, vshCommandOptUL)
(vshCommandOptString, vshCommandOptStringReq)
(vshCommandOptLongLong, vshCommandOptULongLong)
(vshCommandOptBool): Adjust callers.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
In response to my observation on Don's email:
https://www.redhat.com/archives/libvir-list/2013-August/msg00769.html
tools/virsh.c | 97 +++++++++++++++++++++--------------------------------------
tools/virsh.h | 5 +--
2 files changed, 35 insertions(+), 67 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index f65dc79..4c4e92c 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -25,6 +25,7 @@
#include <config.h>
#include "virsh.h"
+#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -1340,39 +1341,46 @@ vshCommandFree(vshCmd *cmd)
* @cmd: parsed command line to search
* @name: option name to search for
* @opt: result of the search
+ * @needData: true if option must be non-boolean
*
* Look up an option passed to CMD by NAME. Returns 1 with *OPT set
* to the option if found, 0 with *OPT set to NULL if the name is
* valid and the option is not required, -1 with *OPT set to NULL if
- * the option is required but not present, and -2 if NAME is not valid
- * (-2 indicates a programming error). No error messages are issued.
+ * the option is required but not present, and abort if NAME is not valid
+ * (which indicates a programming error). No error messages are issued
+ * if a value is returned.
*/
-int
-vshCommandOpt(const vshCmd *cmd, const char *name, vshCmdOpt **opt)
+static int
+vshCommandOpt(const vshCmd *cmd, const char *name, vshCmdOpt **opt,
+ bool needData)
{
vshCmdOpt *candidate = cmd->opts;
const vshCmdOptDef *valid = cmd->def->opts;
+ int ret = 0;
+
+ /* See if option is valid and/or required. */
+ *opt = NULL;
+ while (valid) {
+ assert(valid->name);
+ if (STREQ(name, valid->name))
+ break;
+ valid++;
+ }
+ if (needData && valid->type == VSH_OT_BOOL)
+ abort();
+ if (valid->flags & VSH_OFLAG_REQ)
+ ret = -1;
/* See if option is present on command line. */
while (candidate) {
if (STREQ(candidate->def->name, name)) {
*opt = candidate;
- return 1;
+ ret = 1;
+ break;
}
candidate = candidate->next;
}
-
- /* Option not present, see if command requires it. */
- *opt = NULL;
- while (valid) {
- if (!valid->name)
- break;
- if (STREQ(name, valid->name))
- return (valid->flags & VSH_OFLAG_REQ) == 0 ? 0 : -1;
- valid++;
- }
- /* If we got here, the name is unknown. */
- return -2;
+ return ret;
}
/**
@@ -1393,14 +1401,9 @@ vshCommandOptInt(const vshCmd *cmd, const char *name, int *value)
vshCmdOpt *arg;
int ret;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
if (ret <= 0)
return ret;
- if (!arg->data) {
- /* only possible on bool, but if name is bool, this is a
- * programming bug */
- return -2;
- }
if (virStrToLong_i(arg->data, NULL, 10, value) < 0)
return -1;
@@ -1423,14 +1426,9 @@ vshCommandOptUInt(const vshCmd *cmd, const char *name, unsigned int *value)
vshCmdOpt *arg;
int ret;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
if (ret <= 0)
return ret;
- if (!arg->data) {
- /* only possible on bool, but if name is bool, this is a
- * programming bug */
- return -2;
- }
if (virStrToLong_ui(arg->data, NULL, 10, value) < 0)
return -1;
@@ -1453,14 +1451,9 @@ vshCommandOptUL(const vshCmd *cmd, const char *name, unsigned long *value)
vshCmdOpt *arg;
int ret;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
if (ret <= 0)
return ret;
- if (!arg->data) {
- /* only possible on bool, but if name is bool, this is a
- * programming bug */
- return -2;
- }
if (virStrToLong_ul(arg->data, NULL, 10, value) < 0)
return -1;
@@ -1485,14 +1478,9 @@ vshCommandOptString(const vshCmd *cmd, const char *name, const char **value)
vshCmdOpt *arg;
int ret;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
if (ret <= 0)
return ret;
- if (!arg->data) {
- /* only possible on bool, but if name is bool, this is a
- * programming bug */
- return -2;
- }
if (!*arg->data && !(arg->def->flags & VSH_OFLAG_EMPTY_OK)) {
return -1;
@@ -1527,21 +1515,14 @@ vshCommandOptStringReq(vshControl *ctl,
/* clear out the value */
*value = NULL;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
/* option is not required and not present */
if (ret == 0)
return 0;
/* this should not be propagated here, just to be sure */
if (ret == -1)
error = N_("Mandatory option not present");
-
- if (ret == -2)
- error = N_("Programming error: Invalid option name");
-
- if (!arg->data)
- error = N_("Programming error: Requested option is a boolean");
-
- if (arg->data && !*arg->data && !(arg->def->flags & VSH_OFLAG_EMPTY_OK))
+ else if (!*arg->data && !(arg->def->flags & VSH_OFLAG_EMPTY_OK))
error = N_("Option argument is empty");
if (error) {
@@ -1569,14 +1550,9 @@ vshCommandOptLongLong(const vshCmd *cmd, const char *name,
vshCmdOpt *arg;
int ret;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
if (ret <= 0)
return ret;
- if (!arg->data) {
- /* only possible on bool, but if name is bool, this is a
- * programming bug */
- return -2;
- }
if (virStrToLong_ll(arg->data, NULL, 10, value) < 0)
return -1;
@@ -1599,14 +1575,9 @@ vshCommandOptULongLong(const vshCmd *cmd, const char *name,
vshCmdOpt *arg;
int ret;
- ret = vshCommandOpt(cmd, name, &arg);
+ ret = vshCommandOpt(cmd, name, &arg, true);
if (ret <= 0)
return ret;
- if (!arg->data) {
- /* only possible on bool, but if name is bool, this is a
- * programming bug */
- return -2;
- }
if (virStrToLong_ull(arg->data, NULL, 10, value) < 0)
return -1;
@@ -1659,7 +1630,7 @@ vshCommandOptBool(const vshCmd *cmd, const char *name)
{
vshCmdOpt *dummy;
- return vshCommandOpt(cmd, name, &dummy) == 1;
+ return vshCommandOpt(cmd, name, &dummy, false) == 1;
}
/**
diff --git a/tools/virsh.h b/tools/virsh.h
index a407428..382e00a 100644
--- a/tools/virsh.h
+++ b/tools/virsh.h
@@ -1,7 +1,7 @@
/*
* virsh.h: a shell to exercise the libvirt API
*
- * Copyright (C) 2005, 2007-2012 Red Hat, Inc.
+ * Copyright (C) 2005, 2007-2013 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -261,9 +261,6 @@ bool vshCmddefHelp(vshControl *ctl, const char *name);
const vshCmdGrp *vshCmdGrpSearch(const char *grpname);
bool vshCmdGrpHelp(vshControl *ctl, const char *name);
-int vshCommandOpt(const vshCmd *cmd, const char *name, vshCmdOpt **opt)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
- ATTRIBUTE_RETURN_CHECK;
int vshCommandOptInt(const vshCmd *cmd, const char *name, int *value)
ATTRIBUTE_NONNULL(3) ATTRIBUTE_RETURN_CHECK;
int vshCommandOptUInt(const vshCmd *cmd, const char *name,
--
1.8.3.1
11 years, 2 months
Re: [libvirt] Information needed regarding libvirt error
by Martin Kletzander
[cc'ing libvir-list]
On 08/26/2013 05:59 PM, arun abhinay wrote:
> Hi,
>
> Can you please consider this is an gentle reminder for my below request.
>
> Thanks
> Abhinay
>
> On Fri, Aug 23, 2013 at 1:01 PM, arun abhinay <arun.abhinay(a)gmail.com>wrote:
>
>> Hi Martin/Peter,
>>
Hi,
firstly, feel free to write to the list, not just particular people.
There are many more people on the list that may help you. Not
mentioning that those people you write might not be available, don't
have time etc.
There was a similar question to the one you've asked, you could have
checked that out before as well and reply on it. There's also a patch
fixing cpu-stats command, check it that helps.
>> In reference to
>> http://comments.gmane.org/gmane.comp.emulators.libvirt/62451
>>
>> We have created a VM on a qemu-kvm emulator using the domain.xml as
>> mentioned in attachment. The starting of the VM is sucessful but we are
>> facing issue while executing the command "cpu-stats <domain>". While
>> analysis we found below below log in libvirtd.log
>>
>> 2013-08-22 12:45:44.326+0000: 17554: warning : qemuSetupCgroupForVcpu:953
>> : Unable to get vcpus' pids
>>
This basically means that you have old qemu that doesn't support (I'm
guesing the command now) "query-vcpus" QMP command. The problem
probably lies somewhere else, even though my change might have caused
the other part to behave differently.
>> The complete logs while starting VM and while executing the "cpu-stats"
>> command are attached with this mail for reference. Can you please check and
>> provide us some inputs or pointers to get "cpu-stats" command working.
>>
>> I am new to using libvirt. Your inputs would be of great help to us.
>>
>> Libvrit and qemu-kvm verisons used are mentioned below
>> libvirt-1.0.6-1
>> qemu-kvm-0.14.1-1
>>
>> <<CLA_new-0.xml >> --> Domain.xml used to define VM
>> << libvirt_testing_starting_VG.log >> --> Log while staring VM
>> <<libvirt_testing_cpu_stats.log >> ---> Log while executing command
>> cpu_stats.
>>
According to the logs, it looks like it's completely the same like a
question already asked... Wanting to post the link here, I've found
that even the machine name is the same, so it shouldn't be a problem for
you to find it.
I'm looking at the issue now, so I'll see what I can do, but maybe in
the meantime sombody else will reply.
Martin
11 years, 2 months
[libvirt] [libvirt-glib] Add missing symbols to .sym files
by Christophe Fergeau
These symbols are in public headers, but were not listed in the
corresponding .sym file, causing them to be unavailable from
the resulting shared library.
I would have preferred not to export gvir_config_object_new_from_xml()
at all, but since the similar gvir_config_object_new() is already exported,
I've chosen to export it as well.
---
libvirt-gconfig/libvirt-gconfig.sym | 11 +++++++++++
libvirt-gobject/libvirt-gobject.sym | 4 ++++
2 files changed, 15 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
index be05ce4..72eafc1 100644
--- a/libvirt-gconfig/libvirt-gconfig.sym
+++ b/libvirt-gconfig/libvirt-gconfig.sym
@@ -599,4 +599,15 @@ LIBVIRT_GCONFIG_0.1.7 {
gvir_config_domain_device_get_alias;
} LIBVIRT_GCONFIG_0.1.6;
+LIBVIRT_GCONFIG_0.1.8 {
+global:
+ gvir_config_domain_get_uuid;
+ gvir_config_domain_set_uuid;
+
+ gvir_config_domain_graphics_rdp_set_multi_user;
+ gvir_config_domain_graphics_rdp_set_replace_user;
+
+ gvir_config_object_new_from_xml;
+} LIBVIRT_GCONFIG_0.1.7;
+
# .... define new API here using predicted next version number ....
diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym
index 9522167..edc876d 100644
--- a/libvirt-gobject/libvirt-gobject.sym
+++ b/libvirt-gobject/libvirt-gobject.sym
@@ -232,4 +232,8 @@ LIBVIRT_GOBJECT_0.1.5 {
gvir_connection_open_read_only_finish;
} LIBVIRT_GOBJECT_0.1.4;
+LIBVIRT_GOBJECT_0.1.8 {
+ gvir_connection_restore_domain_from_file_finish;
+} LIBVIRT_GOBJECT_0.1.5;
+
# .... define new API here using predicted next version number ....
--
1.8.3.1
11 years, 2 months
[libvirt] [PATCH] virt-sanlock-cleanup; Fix augtool usage
by Jiri Denemark
Surprisingly, augtool get (or print) returns "path = value" while we are
only interested in the value. We need to remove the "path = " part from
the augtool's output. The following is an example of the augtool command
as used in virt-sanlock-cleanup script:
$ augtool get /files/etc/libvirt/qemu-sanlock.conf/disk_lease_dir
/files/etc/libvirt/qemu-sanlock.conf/disk_lease_dir = /var/lib/libvirt/sanlock
---
tools/virt-sanlock-cleanup.in | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/virt-sanlock-cleanup.in b/tools/virt-sanlock-cleanup.in
index e0e8083..9855f42 100644
--- a/tools/virt-sanlock-cleanup.in
+++ b/tools/virt-sanlock-cleanup.in
@@ -26,7 +26,8 @@ fi
LOCKSPACE="__LIBVIRT__DISKS__"
-LOCKDIR=`augtool print '/files@sysconfdir(a)/libvirt/qemu-sanlock.conf/disk_lease_dir'`
+LOCKDIR=`augtool get '/files@sysconfdir(a)/libvirt/qemu-sanlock.conf/disk_lease_dir'`
+LOCKDIR=${LOCKDIR#* = }
if test $? != 0 || test "x$LOCKDIR" = "x" ; then
LOCKDIR="@localstatedir@/lib/libvirt/sanlock"
fi
--
1.8.3.2
11 years, 2 months
[libvirt] [PATCH] virsh: Fix debugging
by Martin Kletzander
Commit a0b6a36f "fixed" what abfff210 broke (URI precedence), but
there was still one more thing missing to fix. When using virsh
parameters to setup debugging, those weren't honored, because at the
time debugging was initializing, arguments weren't parsed yet. To
make ewerything work as expected, we need to initialize the debugging
twice, once before debugging (so we can debug option parsing properly)
and then again after these options are parsed.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
tools/virsh.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/virsh.c b/tools/virsh.c
index 2ea44a6..ac77156 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -2333,6 +2333,10 @@ vshInitDebug(vshControl *ctl)
static bool
vshInit(vshControl *ctl)
{
+ /* Since we have the commandline arguments parsed, we need to
+ * re-initialize all the debugging to make it work properly */
+ vshInitDebug(ctl);
+
if (ctl->conn)
return false;
--
1.8.3.2
11 years, 2 months
[libvirt] [PATCH] qemu: Remove hostdev entry when freeing the depending network entry
by Peter Krempa
When using a <interface type="network"> that points to a network with
hostdev forwarding mode a hostdev alias is created for the network. This
allias is inserted into the hostdev list, but is backed with a part of
the network object that it is connected to.
When a VM is being stopped qemuProcessStop() calls
networkReleaseActualDevice() which eventually frees the memory for the
hostdev object. Afterwards when the domain definition is being freed by
virDomainDefFree() an invalid pointer is accessed by
virDomainHostdevDefFree() and may cause a crash of the daemon.
This patch removes the entry in the hostdev list before freeing the
depending memory to avoid this issue.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1000973
---
src/qemu/qemu_process.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 128618b..2a69c8d 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4241,6 +4241,9 @@ void qemuProcessStop(virQEMUDriverPtr driver,
def = vm->def;
for (i = 0; i < def->nnets; i++) {
virDomainNetDefPtr net = def->nets[i];
+ virDomainHostdevDefPtr hostdev = virDomainNetGetActualHostdev(net);
+ int hostdev_index;
+
if (virDomainNetGetActualType(net) == VIR_DOMAIN_NET_TYPE_DIRECT) {
ignore_value(virNetDevMacVLanDeleteWithVPortProfile(
net->ifname, &net->mac,
@@ -4259,6 +4262,11 @@ void qemuProcessStop(virQEMUDriverPtr driver,
virDomainNetGetActualBridgeName(net),
net->ifname));
+ if (hostdev) {
+ if ((hostdev_index = virDomainHostdevFind(def, hostdev, NULL)) > 0)
+ virDomainHostdevRemove(def, hostdev_index);
+ }
+
networkReleaseActualDevice(net);
}
--
1.8.3.2
11 years, 2 months
[libvirt] [PATCH] virsh-pool.c: Don't jump over variable declaration
by Michal Privoznik
Since 785ff34bf8 we are using the outputStr variable in cleanup label.
However, there is a possibility to jump to the label before the variable
has been declared:
virsh-pool.c: In function 'cmdPoolList':
virsh-pool.c:1121:25: error: jump skips variable initialization [-Werror=jump-misses-init]
goto asprintf_failure;
^
virsh-pool.c:1308:1: note: label 'asprintf_failure' defined here
asprintf_failure:
^
virsh-pool.c:1267:11: note: 'outputStr' declared here
char *outputStr = NULL;
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Pushed under buil-breaker rule.
tools/virsh-pool.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c
index 3d3c61e..c771226 100644
--- a/tools/virsh-pool.c
+++ b/tools/virsh-pool.c
@@ -964,6 +964,7 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
const char *type = NULL;
bool details = vshCommandOptBool(cmd, "details");
bool inactive, all;
+ char *outputStr = NULL;
inactive = vshCommandOptBool(cmd, "inactive");
all = vshCommandOptBool(cmd, "all");
@@ -1264,7 +1265,6 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
/* Create the output template. Each column is sized according to
* the longest string.
*/
- char *outputStr = NULL;
ret = virAsprintf(&outputStr,
"%%-%lus %%-%lus %%-%lus %%-%lus %%%lus %%%lus %%%lus\n",
(unsigned long) nameStrLength,
--
1.8.1.5
11 years, 2 months
[libvirt] [PATCH v3 0/2] Add tests for network update XML parsing
by Ján Tomko
v1: https://www.redhat.com/archives/libvir-list/2013-July/msg01971.html
v2: https://www.redhat.com/archives/libvir-list/2013-August/msg00035.html
remove the spaces from other elements instead of adding one
v3:
rebase because of 4f595ba adding forwardPlainNames
Ján Tomko (2):
Remove the space before the slash in network XML
Test network update XML parsing
src/conf/network_conf.c | 26 +-
src/conf/network_conf.h | 9 +
src/libvirt_private.syms | 1 +
src/network/default.xml | 4 +-
src/test/test_driver.c | 4 +-
tests/Makefile.am | 9 +-
tests/networkxml2confdata/dhcp6-nat-network.xml | 20 +-
tests/networkxml2confdata/dhcp6-network.xml | 14 +-
.../dhcp6host-routed-network.xml | 16 +-
tests/networkxml2confdata/isolated-network.xml | 4 +-
.../networkxml2confdata/nat-network-dns-hosts.xml | 2 +-
.../nat-network-dns-srv-record-minimal.xml | 10 +-
.../nat-network-dns-srv-record.xml | 10 +-
.../nat-network-dns-txt-record.xml | 10 +-
tests/networkxml2confdata/nat-network.xml | 8 +-
tests/networkxml2confdata/netboot-network.xml | 8 +-
.../networkxml2confdata/netboot-proxy-network.xml | 6 +-
tests/networkxml2confdata/routed-network.xml | 2 +-
tests/networkxml2xmlin/bandwidth-network.xml | 4 +-
.../networkxml2xmlin/dhcp6host-routed-network.xml | 16 +-
tests/networkxml2xmlin/empty-allow-ipv6.xml | 2 +-
tests/networkxml2xmlin/isolated-network.xml | 4 +-
tests/networkxml2xmlin/nat-network-dns-hosts.xml | 2 +-
.../nat-network-dns-srv-record-minimal.xml | 10 +-
.../nat-network-dns-srv-record.xml | 10 +-
.../nat-network-dns-srv-records.xml | 27 ++
.../nat-network-dns-txt-record.xml | 10 +-
tests/networkxml2xmlin/nat-network.xml | 8 +-
tests/networkxml2xmlin/netboot-network.xml | 6 +-
tests/networkxml2xmlin/netboot-proxy-network.xml | 4 +-
tests/networkxml2xmlin/routed-network.xml | 2 +-
tests/networkxml2xmlout/bandwidth-network.xml | 4 +-
.../networkxml2xmlout/dhcp6host-routed-network.xml | 16 +-
tests/networkxml2xmlout/empty-allow-ipv6.xml | 2 +-
tests/networkxml2xmlout/host-bridge-net.xml | 2 +-
tests/networkxml2xmlout/isolated-network.xml | 4 +-
.../nat-network-dns-forward-plain.xml | 2 +-
tests/networkxml2xmlout/nat-network-dns-hosts.xml | 2 +-
.../nat-network-dns-srv-record-minimal.xml | 10 +-
.../nat-network-dns-srv-record.xml | 10 +-
.../nat-network-dns-srv-records.xml | 27 ++
.../nat-network-dns-txt-record.xml | 10 +-
tests/networkxml2xmlout/nat-network.xml | 8 +-
tests/networkxml2xmlout/netboot-network.xml | 8 +-
tests/networkxml2xmlout/netboot-proxy-network.xml | 6 +-
tests/networkxml2xmlout/routed-network.xml | 2 +-
tests/networkxml2xmltest.c | 3 +
.../networkxml2xmlupdatein/dhcp-range-existing.xml | 1 +
tests/networkxml2xmlupdatein/dhcp-range.xml | 1 +
.../dns-host-gateway-incomplete.xml | 3 +
tests/networkxml2xmlupdatein/dns-host-pudding.xml | 3 +
.../dns-txt-record-example.xml | 1 +
.../dns-txt-record-snowman.xml | 1 +
tests/networkxml2xmlupdatein/host-existing.xml | 1 +
tests/networkxml2xmlupdatein/host-incomplete.xml | 1 +
.../networkxml2xmlupdatein/host-new-incomplete.xml | 1 +
tests/networkxml2xmlupdatein/host-new.xml | 1 +
tests/networkxml2xmlupdatein/host-updated.xml | 1 +
tests/networkxml2xmlupdatein/interface-eth1.xml | 1 +
tests/networkxml2xmlupdatein/interface-eth47.xml | 1 +
.../networkxml2xmlupdatein/portgroup-alice-new.xml | 10 +
tests/networkxml2xmlupdatein/portgroup-alison.xml | 11 +
tests/networkxml2xmlupdatein/srv-record-donkey.xml | 1 +
.../networkxml2xmlupdatein/srv-record-invalid.xml | 1 +
.../networkxml2xmlupdatein/srv-record-protocol.xml | 1 +
.../networkxml2xmlupdatein/srv-record-service.xml | 1 +
tests/networkxml2xmlupdatein/srv-record.xml | 1 +
.../networkxml2xmlupdatein/unparsable-dns-host.xml | 1 +
.../dhcp6host-routed-network-another-range.xml | 27 ++
.../dhcp6host-routed-network-range.xml | 27 ++
.../nat-network-dns-more-hosts.xml | 19 ++
.../nat-network-dns-srv-record.xml | 26 ++
.../nat-network-dns-srv-records.xml | 27 ++
.../nat-network-dns-txt-none.xml | 23 ++
.../nat-network-dns-txt-records.xml | 27 ++
.../nat-network-forward-ifaces.xml | 27 ++
.../nat-network-host-updated.xml | 23 ++
.../networkxml2xmlupdateout/nat-network-hosts.xml | 24 ++
.../nat-network-no-forward-ifaces.xml | 24 ++
.../nat-network-no-hosts.xml | 10 +
.../nat-network-no-range.xml | 22 ++
.../nat-network-one-host.xml | 22 ++
tests/networkxml2xmlupdateout/nat-network.xml | 23 ++
.../openvswitch-net-modified.xml | 33 ++
.../openvswitch-net-more-portgroups.xml | 44 +++
.../openvswitch-net-without-alice.xml | 23 ++
tests/networkxml2xmlupdatetest.c | 372 +++++++++++++++++++++
87 files changed, 1096 insertions(+), 155 deletions(-)
create mode 100644 tests/networkxml2xmlin/nat-network-dns-srv-records.xml
create mode 100644 tests/networkxml2xmlout/nat-network-dns-srv-records.xml
create mode 100644 tests/networkxml2xmlupdatein/dhcp-range-existing.xml
create mode 100644 tests/networkxml2xmlupdatein/dhcp-range.xml
create mode 100644 tests/networkxml2xmlupdatein/dns-host-gateway-incomplete.xml
create mode 100644 tests/networkxml2xmlupdatein/dns-host-pudding.xml
create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-example.xml
create mode 100644 tests/networkxml2xmlupdatein/dns-txt-record-snowman.xml
create mode 100644 tests/networkxml2xmlupdatein/host-existing.xml
create mode 100644 tests/networkxml2xmlupdatein/host-incomplete.xml
create mode 100644 tests/networkxml2xmlupdatein/host-new-incomplete.xml
create mode 100644 tests/networkxml2xmlupdatein/host-new.xml
create mode 100644 tests/networkxml2xmlupdatein/host-updated.xml
create mode 100644 tests/networkxml2xmlupdatein/interface-eth1.xml
create mode 100644 tests/networkxml2xmlupdatein/interface-eth47.xml
create mode 100644 tests/networkxml2xmlupdatein/portgroup-alice-new.xml
create mode 100644 tests/networkxml2xmlupdatein/portgroup-alison.xml
create mode 100644 tests/networkxml2xmlupdatein/srv-record-donkey.xml
create mode 100644 tests/networkxml2xmlupdatein/srv-record-invalid.xml
create mode 100644 tests/networkxml2xmlupdatein/srv-record-protocol.xml
create mode 100644 tests/networkxml2xmlupdatein/srv-record-service.xml
create mode 100644 tests/networkxml2xmlupdatein/srv-record.xml
create mode 100644 tests/networkxml2xmlupdatein/unparsable-dns-host.xml
create mode 100644 tests/networkxml2xmlupdateout/dhcp6host-routed-network-another-range.xml
create mode 100644 tests/networkxml2xmlupdateout/dhcp6host-routed-network-range.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-more-hosts.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-srv-record.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-srv-records.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-none.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-dns-txt-records.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-forward-ifaces.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-host-updated.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-hosts.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-forward-ifaces.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-hosts.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-no-range.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network-one-host.xml
create mode 100644 tests/networkxml2xmlupdateout/nat-network.xml
create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-modified.xml
create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-more-portgroups.xml
create mode 100644 tests/networkxml2xmlupdateout/openvswitch-net-without-alice.xml
create mode 100644 tests/networkxml2xmlupdatetest.c
--
1.8.1.5
11 years, 2 months