[libvirt] [PATCH] apibuild: Turn hidden_macros into array
by Michal Privoznik
This is an array, not a hash table. It makes no problem with
newer pythons, but with python2.6 it is a problem:
File "../../docs/apibuild.py", line 117
"VIR_DEPRECATED", # internal macro to mark deprecated apis
^
SyntaxError: invalid syntax
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
docs/apibuild.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/apibuild.py b/docs/apibuild.py
index 9c82c4a..d065d56 100755
--- a/docs/apibuild.py
+++ b/docs/apibuild.py
@@ -113,10 +113,10 @@ ignored_macros = {
}
# macros that should be completely skipped
-hidden_macros = {
+hidden_macros = [
"VIR_DEPRECATED", # internal macro to mark deprecated apis
"VIR_EXPORT_VAR", # internal macro to mark exported vars
-}
+]
def escape(raw):
raw = string.replace(raw, '&', '&')
--
2.7.3
8 years, 7 months
[libvirt] [PATCH] docs: apibuild: Fix for python 2.6
by Peter Krempa
Ancient python didn't like the new list added in 99283874. Convert it to
a dict.
---
Pushed under the build breaker rule.
docs/apibuild.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/apibuild.py b/docs/apibuild.py
index 9c82c4a..8882759 100755
--- a/docs/apibuild.py
+++ b/docs/apibuild.py
@@ -114,8 +114,8 @@ ignored_macros = {
# macros that should be completely skipped
hidden_macros = {
- "VIR_DEPRECATED", # internal macro to mark deprecated apis
- "VIR_EXPORT_VAR", # internal macro to mark exported vars
+ "VIR_DEPRECATED": "internal macro to mark deprecated apis",
+ "VIR_EXPORT_VAR": "internal macro to mark exported vars",
}
def escape(raw):
--
2.8.1
8 years, 7 months
[libvirt] migration: why did we choose port 49152-49215 for migration as default?
by Zhangbo (Oscar)
Hi all:
As we know, "32768~61000" are random ports reserved for customized use. 49152-49215 is in that range.
We think that setting migration port into this range, is a little risky. Because other applications may have already taken these ports before we migrate a guest, then the migration job would fail.
So, why did we choose "49152-49215" as the default port range for migration, any specific purpose? Thanks in advance.
Oscar.
8 years, 7 months
[libvirt] [PATCH] vz: make more accurate closing connection to sdk
by Nikolay Shirokovskiy
Current code for example can call unsubscribe if connection
succeeds but subscribing fails. This will probabaly lead
only to spurious error messages without any actual inconsistencies
but nevertheless.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy(a)virtuozzo.com>
---
NOTE!!! this patch is applied on top of migration series
src/vz/vz_driver.c | 9 ++------
src/vz/vz_sdk.c | 65 +++++++++++++++++++++++++++---------------------------
src/vz/vz_sdk.h | 2 --
3 files changed, 34 insertions(+), 42 deletions(-)
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index 8264ac0..1e56837 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -160,11 +160,7 @@ static void vzDriverDispose(void * obj)
{
vzDriverPtr driver = obj;
- if (driver->server) {
- prlsdkUnsubscribeFromPCSEvents(driver);
- prlsdkDisconnect(driver);
- }
-
+ prlsdkDisconnect(driver);
virObjectUnref(driver->domains);
virObjectUnref(driver->caps);
virObjectUnref(driver->xmlopt);
@@ -318,8 +314,7 @@ vzDriverObjNew(void)
!(driver->domains = virDomainObjListNew()) ||
!(driver->domainEventState = virObjectEventStateNew()) ||
(vzInitVersion(driver) < 0) ||
- (prlsdkConnect(driver) < 0) ||
- (prlsdkSubscribeToPCSEvents(driver) < 0)
+ (prlsdkConnect(driver) < 0)
) {
virObjectUnref(driver);
return NULL;
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index a96fc96..5b425d7 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -39,6 +39,8 @@
static int
prlsdkUUIDParse(const char *uuidstr, unsigned char *uuid);
+static PRL_RESULT
+prlsdkEventsHandler(PRL_HANDLE prlEvent, PRL_VOID_PTR opaque);
VIR_LOG_INIT("parallels.sdk");
@@ -284,41 +286,62 @@ prlsdkConnect(vzDriverPtr driver)
job = PrlSrv_LoginLocalEx(driver->server, NULL, 0,
PSL_HIGH_SECURITY, PACF_NON_INTERACTIVE_MODE);
if (PRL_FAILED(getJobResult(job, &result)))
- goto cleanup;
+ goto destroy;
pret = PrlResult_GetParam(result, &response);
- prlsdkCheckRetGoto(pret, cleanup);
+ prlsdkCheckRetGoto(pret, logoff);
pret = prlsdkGetStringParamBuf(PrlLoginResponse_GetSessionUuid,
response, session_uuid, sizeof(session_uuid));
- prlsdkCheckRetGoto(pret, cleanup);
+ prlsdkCheckRetGoto(pret, logoff);
if (prlsdkUUIDParse(session_uuid, driver->session_uuid) < 0)
- goto cleanup;
+ goto logoff;
+
+ pret = PrlSrv_RegEventHandler(driver->server,
+ prlsdkEventsHandler,
+ driver);
+ prlsdkCheckRetGoto(pret, logoff);
ret = 0;
cleanup:
- if (ret < 0) {
- PrlHandle_Free(driver->server);
- driver->server = PRL_INVALID_HANDLE;
- }
-
PrlHandle_Free(result);
PrlHandle_Free(response);
return ret;
+
+ logoff:
+ job = PrlSrv_Logoff(driver->server);
+ waitJob(job);
+
+ destroy:
+ PrlHandle_Free(driver->server);
+ driver->server = PRL_INVALID_HANDLE;
+
+ goto cleanup;
}
void
prlsdkDisconnect(vzDriverPtr driver)
{
PRL_HANDLE job;
+ PRL_RESULT ret;
+
+ if (driver->server == PRL_INVALID_HANDLE)
+ return;
+
+ ret = PrlSrv_UnregEventHandler(driver->server,
+ prlsdkEventsHandler,
+ driver);
+ if (PRL_FAILED(ret))
+ logPrlError(ret);
job = PrlSrv_Logoff(driver->server);
waitJob(job);
PrlHandle_Free(driver->server);
+ driver->server = PRL_INVALID_HANDLE;
}
static int
@@ -1951,30 +1974,6 @@ prlsdkEventsHandler(PRL_HANDLE prlEvent, PRL_VOID_PTR opaque)
return PRL_ERR_SUCCESS;
}
-int prlsdkSubscribeToPCSEvents(vzDriverPtr driver)
-{
- PRL_RESULT pret = PRL_ERR_UNINITIALIZED;
-
- pret = PrlSrv_RegEventHandler(driver->server,
- prlsdkEventsHandler,
- driver);
- prlsdkCheckRetGoto(pret, error);
- return 0;
-
- error:
- return -1;
-}
-
-void prlsdkUnsubscribeFromPCSEvents(vzDriverPtr driver)
-{
- PRL_RESULT ret = PRL_ERR_UNINITIALIZED;
- ret = PrlSrv_UnregEventHandler(driver->server,
- prlsdkEventsHandler,
- driver);
- if (PRL_FAILED(ret))
- logPrlError(ret);
-}
-
PRL_RESULT prlsdkStart(PRL_HANDLE sdkdom)
{
PRL_HANDLE job = PRL_INVALID_HANDLE;
diff --git a/src/vz/vz_sdk.h b/src/vz/vz_sdk.h
index 3d27d12..757e174 100644
--- a/src/vz/vz_sdk.h
+++ b/src/vz/vz_sdk.h
@@ -34,8 +34,6 @@ int prlsdkUpdateDomain(vzDriverPtr driver, virDomainObjPtr dom);
int
prlsdkLoadDomain(vzDriverPtr driver,
virDomainObjPtr dom);
-int prlsdkSubscribeToPCSEvents(vzDriverPtr driver);
-void prlsdkUnsubscribeFromPCSEvents(vzDriverPtr driver);
PRL_RESULT prlsdkStart(PRL_HANDLE sdkdom);
PRL_RESULT prlsdkKill(PRL_HANDLE sdkdom);
PRL_RESULT prlsdkStop(PRL_HANDLE sdkdom);
--
1.8.3.1
8 years, 7 months
[libvirt] [PATCH] docs: remove reference to non-existent "igmp-ipv6" protocol
by Laine Stump
IGMP is used on IPv4 networks set setup multicast group
memberships. On IPv6, this job is done by Multicast Listener Discovery
(MLD), which uses ICMPv6 packets rather than using its own IP protocol
number.
The nwfilter documentation lists "igmp-ipv6" as one of the possible
protocols, but this is ignored (and stripped from the xml). This patch
removes that erroneous reference.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1038888
---
docs/formatnwfilter.html.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/formatnwfilter.html.in b/docs/formatnwfilter.html.in
index 4a60e2e..d1e5d31 100644
--- a/docs/formatnwfilter.html.in
+++ b/docs/formatnwfilter.html.in
@@ -1781,7 +1781,7 @@
<h5><a name="nwfelemsRulesProtoMiscv6">IGMP, ESP, AH, UDPLITE, 'ALL' over IPv6</a></h5>
<p>
- Protocol ID: <code>igmp-ipv6</code>, <code>esp-ipv6</code>, <code>ah-ipv6</code>, <code>udplite-ipv6</code>, <code>all-ipv6</code>
+ Protocol ID: <code>esp-ipv6</code>, <code>ah-ipv6</code>, <code>udplite-ipv6</code>, <code>all-ipv6</code>
<br/>
Note: The chain parameter is ignored for this type of traffic
and should either be omitted or set to <code>root</code>.
--
2.5.5
8 years, 7 months
[libvirt] [RFC] changing/regenerating domain uuid on migration
by Nikolay Shirokovskiy
Hi all.
Consider next usecase. There are active domain DA on host A and active domain
DB on host B and the uuids of domains are the same. This is quite uncommon of
course but still possible. If we have option to change uuid on migration
then migration of DA to host B is possible and if we don't have the option
we have to stop/edit/start DA to migrate.
What is you opinion on subject? Can this functionality be taken into upstream
and in what form? In form of setting uuid as a migration parameter or option to
regenerate uuid on destination?
Nikolay
8 years, 7 months
[libvirt] [RFC] relax offline migration requirements to --xml
by Nikolay Shirokovskiy
Hi, all.
I'm thinking of leveraging of existing migration API to support offline clone
in virtuozzo. AFAIK offline migration is basically just copying of domain
config to the other side and defining it there. It is even possible to slightly
mutate it thru options like --dname or --xml but mutation restrictions are the same
as in case of active domain migration which is quite tight for an offline clone
case. In case of clone we want to change uuid, MACs etc. Well the changes
itself could be done by mgmt but this requires that libvirt drops the
restictive checks for --xml option. What is your evaluation of this approach?
Nikolay
8 years, 7 months
[libvirt] [PATCH] qemu: Limit maximum block device I/O tune values
by Martin Kletzander
The values are currently limited to LLONG_MAX which causes some
problems. QEMU conveniently changed their maximum to 1e15 (1 PB) which
is enough for some time and we need to adapt to that so that we don't
throw "Unknown error" messages. Strictly limiting these values actually
fixes some corner case values (off-by-one checks in QEMU probably).
Since values out of the new specified range do not overflow anything,
change the type of error as well.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1317531
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/qemu/qemu_command.c | 30 +++++++++++++++---------------
src/qemu/qemu_command.h | 2 ++
src/qemu/qemu_driver.c | 6 +++---
3 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 2fb967acbfe8..ef4a62dafb5b 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -1394,22 +1394,22 @@ qemuBuildDriveStr(virConnectPtr conn,
goto error;
}
- if (disk->blkdeviotune.total_bytes_sec > LLONG_MAX ||
- disk->blkdeviotune.read_bytes_sec > LLONG_MAX ||
- disk->blkdeviotune.write_bytes_sec > LLONG_MAX ||
- disk->blkdeviotune.total_iops_sec > LLONG_MAX ||
- disk->blkdeviotune.read_iops_sec > LLONG_MAX ||
- disk->blkdeviotune.write_iops_sec > LLONG_MAX ||
- disk->blkdeviotune.total_bytes_sec_max > LLONG_MAX ||
- disk->blkdeviotune.read_bytes_sec_max > LLONG_MAX ||
- disk->blkdeviotune.write_bytes_sec_max > LLONG_MAX ||
- disk->blkdeviotune.total_iops_sec_max > LLONG_MAX ||
- disk->blkdeviotune.read_iops_sec_max > LLONG_MAX ||
- disk->blkdeviotune.write_iops_sec_max > LLONG_MAX ||
- disk->blkdeviotune.size_iops_sec > LLONG_MAX) {
- virReportError(VIR_ERR_OVERFLOW,
+ if (disk->blkdeviotune.total_bytes_sec > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.read_bytes_sec > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.write_bytes_sec > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.total_iops_sec > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.read_iops_sec > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.write_iops_sec > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.total_bytes_sec_max > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.read_bytes_sec_max > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.write_bytes_sec_max > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.total_iops_sec_max > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.read_iops_sec_max > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.write_iops_sec_max > QEMU_BLOCK_IOTUNE_MAX ||
+ disk->blkdeviotune.size_iops_sec > QEMU_BLOCK_IOTUNE_MAX) {
+ virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
_("block I/O throttle limit must "
- "be less than %llu using QEMU"), LLONG_MAX);
+ "be less than %llu using QEMU"), QEMU_BLOCK_IOTUNE_MAX);
goto error;
}
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index 2e2f133ac341..1e9ce6690603 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -40,6 +40,8 @@
# define QEMU_DRIVE_HOST_PREFIX "drive-"
# define QEMU_FSDEV_HOST_PREFIX "fsdev-"
+# define QEMU_BLOCK_IOTUNE_MAX 1000000000000000LL
+
VIR_ENUM_DECL(qemuVideo)
char *qemuBuildObjectCommandlineFromJSON(const char *type,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 055f0714ddf3..90f541cf6d74 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17526,10 +17526,10 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
for (i = 0; i < nparams; i++) {
virTypedParameterPtr param = ¶ms[i];
- if (param->value.ul > LLONG_MAX) {
- virReportError(VIR_ERR_OVERFLOW,
+ if (param->value.ul > QEMU_BLOCK_IOTUNE_MAX) {
+ virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
_("block I/O throttle limit value must"
- " be less than %llu"), LLONG_MAX);
+ " be less than %llu"), QEMU_BLOCK_IOTUNE_MAX);
goto endjob;
}
--
2.8.1
8 years, 7 months
[libvirt] [PATCH v2] virconf: Handle conf file without ending newline
by Cole Robinson
$ echo -n 'log_level=1' > ~/.config/libvirt/libvirtd.conf
$ libvirtd --timeout=10
2014-10-10 10:30:56.394+0000: 6626: info : libvirt version: 1.1.3.6, package: 1.fc20 (Fedora Project, 2014-09-08-17:50:42, buildvm-05.phx2.fedoraproject.org)
2014-10-10 10:30:56.394+0000: 6626: error : main:1261 : Can't load config file: configuration file syntax error: /home/rjones/.config/libvirt/libvirtd.conf:1: expecting a value: /home/rjones/.config/libvirt/libvirtd.conf
Rather than try to fix this in the depths of the parser, just catch
the case when a config file doesn't end in a newline, and manually
append a newline to the content before parsing
https://bugzilla.redhat.com/show_bug.cgi?id=1151409
---
v2:
Properly NULL deliminate string (thanks pkrempa)
Hey, there's a virconf test suite. Add a new test case
src/util/virconf.c | 11 ++++++++++-
tests/confdata/no-newline.conf | 1 +
tests/confdata/no-newline.out | 1 +
3 files changed, 12 insertions(+), 1 deletion(-)
create mode 100644 tests/confdata/no-newline.conf
create mode 100644 tests/confdata/no-newline.out
diff --git a/src/util/virconf.c b/src/util/virconf.c
index 5915bc2..7c98588 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
@@ -765,7 +765,7 @@ virConfReadFile(const char *filename, unsigned int flags)
{
char *content;
int len;
- virConfPtr conf;
+ virConfPtr conf = NULL;
VIR_DEBUG("filename=%s", NULLSTR(filename));
@@ -777,8 +777,17 @@ virConfReadFile(const char *filename, unsigned int flags)
if ((len = virFileReadAll(filename, MAX_CONFIG_FILE_SIZE, &content)) < 0)
return NULL;
+ if (len && len < MAX_CONFIG_FILE_SIZE && content[len - 1] != '\n') {
+ VIR_DEBUG("appending newline to busted config file %s", filename);
+ if (VIR_REALLOC_N(content, len + 1) < 0)
+ goto cleanup;
+ content[len++] = '\n';
+ content[len] = '\0';
+ }
+
conf = virConfParse(filename, content, len, flags);
+ cleanup:
VIR_FREE(content);
return conf;
diff --git a/tests/confdata/no-newline.conf b/tests/confdata/no-newline.conf
new file mode 100644
index 0000000..77e082e
--- /dev/null
+++ b/tests/confdata/no-newline.conf
@@ -0,0 +1 @@
+log_level=1
\ No newline at end of file
diff --git a/tests/confdata/no-newline.out b/tests/confdata/no-newline.out
new file mode 100644
index 0000000..c001761
--- /dev/null
+++ b/tests/confdata/no-newline.out
@@ -0,0 +1 @@
+log_level = 1
--
2.7.3
8 years, 7 months
[libvirt] [PATCH] network: fix DHCPv6 on networks with prefix != 64
by Laine Stump
According to the dnsmasq manpage, the netmask for IPv4 address ranges
will be auto-deteremined from the interface dnsmasq is listening on,
but it can't do this for IPv6 for some reason - it instead assumes a
network prefix of 64 for all IPv6 address ranges. If this is
incorrect, dnsmasq will refuse to give out an address to clients,
instead logging this message:
dnsmasq-dhcp[2380]: no address range available for DHCPv6 request via virbr0
The solution is for libvirt to add ",$prefix" to all IPv6 dhcp-range
arguments when building the dnsmasq.conf file.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1033739
---
src/network/bridge_driver.c | 21 +++++++++++++++++++--
tests/networkxml2confdata/dhcp6-nat-network.conf | 2 +-
tests/networkxml2confdata/dhcp6-network.conf | 2 +-
.../dhcp6host-routed-network.conf | 2 +-
4 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 73236ff..29c5feb 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -1180,6 +1180,15 @@ networkDnsmasqConfContents(virNetworkObjPtr network,
ipdef = ipv4def ? ipv4def : ipv6def;
while (ipdef) {
+ int prefix;
+
+ prefix = virNetworkIpDefPrefix(ipdef);
+ if (prefix < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("bridge '%s' has an invalid prefix"),
+ network->def->bridge);
+ goto cleanup;
+ }
for (r = 0; r < ipdef->nranges; r++) {
int thisRange;
@@ -1187,8 +1196,12 @@ networkDnsmasqConfContents(virNetworkObjPtr network,
!(eaddr = virSocketAddrFormat(&ipdef->ranges[r].end)))
goto cleanup;
- virBufferAsprintf(&configbuf, "dhcp-range=%s,%s\n",
+ virBufferAsprintf(&configbuf, "dhcp-range=%s,%s",
saddr, eaddr);
+ if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET6))
+ virBufferAsprintf(&configbuf, ",%d", prefix);
+ virBufferAddLit(&configbuf, "\n");
+
VIR_FREE(saddr);
VIR_FREE(eaddr);
thisRange = virSocketAddrGetRange(&ipdef->ranges[r].start,
@@ -1210,7 +1223,11 @@ networkDnsmasqConfContents(virNetworkObjPtr network,
char *bridgeaddr = virSocketAddrFormat(&ipdef->address);
if (!bridgeaddr)
goto cleanup;
- virBufferAsprintf(&configbuf, "dhcp-range=%s,static\n", bridgeaddr);
+ virBufferAsprintf(&configbuf, "dhcp-range=%s,static",
+ bridgeaddr);
+ if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET6))
+ virBufferAsprintf(&configbuf, ",%d", prefix);
+ virBufferAddLit(&configbuf, "\n");
VIR_FREE(bridgeaddr);
}
diff --git a/tests/networkxml2confdata/dhcp6-nat-network.conf b/tests/networkxml2confdata/dhcp6-nat-network.conf
index 922eb7a..17076b8 100644
--- a/tests/networkxml2confdata/dhcp6-nat-network.conf
+++ b/tests/networkxml2confdata/dhcp6-nat-network.conf
@@ -10,7 +10,7 @@ bind-dynamic
interface=virbr0
dhcp-range=192.168.122.2,192.168.122.254
dhcp-no-override
-dhcp-range=2001:db8:ac10:fd01::1:10,2001:db8:ac10:fd01::1:ff
+dhcp-range=2001:db8:ac10:fd01::1:10,2001:db8:ac10:fd01::1:ff,64
dhcp-lease-max=493
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
diff --git a/tests/networkxml2confdata/dhcp6-network.conf b/tests/networkxml2confdata/dhcp6-network.conf
index 064515f..8270690 100644
--- a/tests/networkxml2confdata/dhcp6-network.conf
+++ b/tests/networkxml2confdata/dhcp6-network.conf
@@ -10,7 +10,7 @@ expand-hosts
except-interface=lo
bind-dynamic
interface=virbr0
-dhcp-range=2001:db8:ac10:fd01::1:10,2001:db8:ac10:fd01::1:ff
+dhcp-range=2001:db8:ac10:fd01::1:10,2001:db8:ac10:fd01::1:ff,64
dhcp-lease-max=240
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
diff --git a/tests/networkxml2confdata/dhcp6host-routed-network.conf b/tests/networkxml2confdata/dhcp6host-routed-network.conf
index ad6db36..5728ee4 100644
--- a/tests/networkxml2confdata/dhcp6host-routed-network.conf
+++ b/tests/networkxml2confdata/dhcp6host-routed-network.conf
@@ -10,7 +10,7 @@ bind-dynamic
interface=virbr1
dhcp-range=192.168.122.1,static
dhcp-no-override
-dhcp-range=2001:db8:ac10:fd01::1,static
+dhcp-range=2001:db8:ac10:fd01::1,static,64
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/local.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/local.addnhosts
enable-ra
--
2.5.5
8 years, 7 months