Newer versions of libvirt no longer let dnsmasq create a leases file,
they keep track of it themselves and provide an API to retrieve the
current list of leases. Use that to get the guest's IP address when
it's available.
---
I later realized that it might be more appropriate to use
$dom->get_interface_addresses(), but I'd already rewritten the
existing function this way and it works, so I left it.
lib/Sys/Virt/TCK/NetworkHelpers.pm | 9 +++++++++
scripts/nwfilter/100-ping-still-working.t | 2 +-
scripts/nwfilter/210-no-mac-spoofing.t | 2 +-
scripts/nwfilter/220-no-ip-spoofing.t | 2 +-
scripts/nwfilter/230-no-mac-broadcast.t | 2 +-
scripts/nwfilter/240-no-arp-spoofing.t | 2 +-
scripts/nwfilter/nwfilter_concurrent.sh | 4 ++--
7 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/lib/Sys/Virt/TCK/NetworkHelpers.pm b/lib/Sys/Virt/TCK/NetworkHelpers.pm
index 133064b..f6bf8f9 100644
--- a/lib/Sys/Virt/TCK/NetworkHelpers.pm
+++ b/lib/Sys/Virt/TCK/NetworkHelpers.pm
@@ -10,7 +10,16 @@ sub get_first_macaddress {
}
sub get_ip_from_leases{
+ my $conn = shift;
+ my $netname = shift;
my $mac = shift;
+
+ my $net = $conn->get_network_by_name($netname);
+ if ($net->can('get_dhcp_leases')) {
+ my @leases = $net->get_dhcp_leases($mac);
+ return @leases ? @leases[0]->{'ipaddr'} : undef;
+ }
+
my $tmp = `grep $mac /var/lib/libvirt/dnsmasq/default.leases`;
my @fields = split(/ /, $tmp);
my $ip = $fields[2];
diff --git a/scripts/nwfilter/100-ping-still-working.t
b/scripts/nwfilter/100-ping-still-working.t
index a20b95d..dc1efd2 100644
--- a/scripts/nwfilter/100-ping-still-working.t
+++ b/scripts/nwfilter/100-ping-still-working.t
@@ -69,7 +69,7 @@ sleep(10);
my $mac = get_first_macaddress($dom);
diag "mac is $mac";
-my $guestip = get_ip_from_leases($mac);
+my $guestip = get_ip_from_leases($conn, "default", $mac);
diag "ip is $guestip";
# check ebtables entry
diff --git a/scripts/nwfilter/210-no-mac-spoofing.t
b/scripts/nwfilter/210-no-mac-spoofing.t
index b81fc4a..03001a8 100644
--- a/scripts/nwfilter/210-no-mac-spoofing.t
+++ b/scripts/nwfilter/210-no-mac-spoofing.t
@@ -69,7 +69,7 @@ sleep(10);
my $mac = get_first_macaddress($dom);
diag "mac is $mac";
-my $guestip = get_ip_from_leases($mac);
+my $guestip = get_ip_from_leases($conn, "default", $mac);
diag "ip is $guestip";
# check ebtables entry
diff --git a/scripts/nwfilter/220-no-ip-spoofing.t
b/scripts/nwfilter/220-no-ip-spoofing.t
index 3a0213d..d447a19 100644
--- a/scripts/nwfilter/220-no-ip-spoofing.t
+++ b/scripts/nwfilter/220-no-ip-spoofing.t
@@ -60,7 +60,7 @@ sleep(30);
my $mac = get_first_macaddress($dom);
diag "mac is $mac";
-my $guestip = get_ip_from_leases($mac);
+my $guestip = get_ip_from_leases($conn, "default", $mac);
diag "ip is $guestip";
# check ebtables entry
diff --git a/scripts/nwfilter/230-no-mac-broadcast.t
b/scripts/nwfilter/230-no-mac-broadcast.t
index 16ce60d..9d00dc4 100644
--- a/scripts/nwfilter/230-no-mac-broadcast.t
+++ b/scripts/nwfilter/230-no-mac-broadcast.t
@@ -68,7 +68,7 @@ sleep(10);
my $mac = get_first_macaddress($dom);
diag "mac is $mac";
-my $guestip = get_ip_from_leases($mac);
+my $guestip = get_ip_from_leases($conn, "default", $mac);
diag "ip is $guestip";
# check ebtables entry
diff --git a/scripts/nwfilter/240-no-arp-spoofing.t
b/scripts/nwfilter/240-no-arp-spoofing.t
index 284033d..f1e6870 100644
--- a/scripts/nwfilter/240-no-arp-spoofing.t
+++ b/scripts/nwfilter/240-no-arp-spoofing.t
@@ -70,7 +70,7 @@ sleep(10);
my $mac = get_first_macaddress($dom);
diag "mac is $mac";
-my $guestip = get_ip_from_leases($mac);
+my $guestip = get_ip_from_leases($conn, "default", $mac);
diag "ip is $guestip";
# check ebtables entry
diff --git a/scripts/nwfilter/nwfilter_concurrent.sh
b/scripts/nwfilter/nwfilter_concurrent.sh
index 4c9b878..359e2ab 100644
--- a/scripts/nwfilter/nwfilter_concurrent.sh
+++ b/scripts/nwfilter/nwfilter_concurrent.sh
@@ -242,9 +242,9 @@ runTest()
[ $? -ne 0 ] && rm -rf "${tmpdir}" && return 1;
- # Test runs for a maximum of 5 minutes
+ # Test runs for a maximum of 10 minutes
now=`date +%s`
- test_end=$(($now + 5 * 60))
+ test_end=$(($now + 10 * 60))
while :;
do
--
2.13.6