
On 08/11/2015 09:21 AM, Martin Kletzander wrote:
On Tue, Aug 11, 2015 at 03:16:16PM +0200, Martin Kletzander wrote:
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 <mkletzan@redhat.com> --- src/conf/network_conf.c | 22 +++++++++++++++++++--- ....xml => nat-network-forward-nat-no-address.xml} | 1 - ....xml => nat-network-forward-nat-no-address.xml} | 1 - tests/networkxml2xmltest.c | 1 + 4 files changed, 20 insertions(+), 5 deletions(-) copy tests/networkxml2xmlin/{nat-network-forward-nat-address.xml => nat-network-forward-nat-no-address.xml} (93%) copy tests/networkxml2xmlout/{nat-network-forward-nat-address.xml => nat-network-forward-nat-no-address.xml} (93%)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 374d723788e1..f9d894b12046 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1731,9 +1731,25 @@ 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 <nat> in " + "<forward> in network '%s'"), + addrStart, networkName); + goto cleanup; + } + if (addrEnd) { + virReportError(VIR_ERR_XML_ERROR, + _("Only end address '%s' specified in <nat> in " + "<forward> in network '%s'"), + addrEnd, networkName);
I see the missing 'goto cleanup;' now, consider this squashed in as it already is in my tree:
diff --git c/src/conf/network_conf.c w/src/conf/network_conf.c index f9d894b12046..c1cbd76c6807 100644 --- c/src/conf/network_conf.c +++ w/src/conf/network_conf.c @@ -1748,6 +1748,7 @@ virNetworkForwardNatDefParseXML(const char *networkName, _("Only end address '%s' specified in <nat> in " "<forward> in network '%s'"), addrEnd, networkName); + goto cleanup; } }
ACK to the patch with that squashed in. Thanks for cleaning up after me :-)