From 1f24c1494a85d663fa36047922a7974a292a46a7 Mon Sep 17 00:00:00 2001 From: Martin Kletzander Date: Tue, 11 Aug 2015 15:09:29 +0200 Subject: [PATCH] conf: Don't try formating non-existing addresses Commit a6f9af8292b6 added checking for address colisions between starting and ending addresses of forwarding addresses, but forgot that there might be no addresses set at all. Signed-off-by: Martin Kletzander --- src/conf/network_conf.c | 23 +++++++++++++--- .../nat-network-forward-nat-no-address.xml | 25 ++++++++++++++++++ .../nat-network-forward-nat-no-address.xml | 26 +++++++++++++++++++ tests/networkxml2xmltest.c | 1 + 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 tests/networkxml2xmlin/nat-network-forward-nat-no-address.xml create mode 100644 tests/networkxml2xmlout/nat-network-forward-nat-no-address.xml diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 374d723788..c1cbd76c68 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1731,9 +1731,26 @@ virNetworkForwardNatDefParseXML(const char *networkName, goto cleanup; } - /* verify that start <= end */ - if (virSocketAddrGetRange(&def->addr.start, &def->addr.end, NULL, 0) < 0) - goto cleanup; + if (addrStart && addrEnd) { + /* verify that start <= end */ + if (virSocketAddrGetRange(&def->addr.start, &def->addr.end, NULL, 0) < 0) + goto cleanup; + } else { + if (addrStart) { + virReportError(VIR_ERR_XML_ERROR, + _("Only start address '%s' specified in in " + " in network '%s'"), + addrStart, networkName); + goto cleanup; + } + if (addrEnd) { + virReportError(VIR_ERR_XML_ERROR, + _("Only end address '%s' specified in in " + " in network '%s'"), + addrEnd, networkName); + goto cleanup; + } + } /* ports for SNAT and MASQUERADE */ nNatPorts = virXPathNodeSet("./port", ctxt, &natPortNodes); diff --git a/tests/networkxml2xmlin/nat-network-forward-nat-no-address.xml b/tests/networkxml2xmlin/nat-network-forward-nat-no-address.xml new file mode 100644 index 0000000000..97a64526e9 --- /dev/null +++ b/tests/networkxml2xmlin/nat-network-forward-nat-no-address.xml @@ -0,0 +1,25 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/networkxml2xmlout/nat-network-forward-nat-no-address.xml b/tests/networkxml2xmlout/nat-network-forward-nat-no-address.xml new file mode 100644 index 0000000000..f19e34deec --- /dev/null +++ b/tests/networkxml2xmlout/nat-network-forward-nat-no-address.xml @@ -0,0 +1,26 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/networkxml2xmltest.c b/tests/networkxml2xmltest.c index 290336edbe..8d60aa8fc6 100644 --- a/tests/networkxml2xmltest.c +++ b/tests/networkxml2xmltest.c @@ -99,6 +99,7 @@ mymain(void) DO_TEST("nat-network-dns-forward-plain"); DO_TEST("nat-network-dns-forwarders"); DO_TEST("nat-network-forward-nat-address"); + DO_TEST("nat-network-forward-nat-no-address"); DO_TEST("8021Qbh-net"); DO_TEST("direct-net"); DO_TEST("host-bridge-net");