Adding these parameters to the clean-traffic filter causes a
significant extra piece of code to be executed (a separate thread is
started up, which uses libpcap to capture DHCP traffic and learn the
IP address of the guest / test appliance), so let's get some test
coverage on that code.
Signed-off-by: Laine Stump <laine@laine.org>
---
Change from V1:
* set %filterparams to () instead of undef when not specified. (undef
caused a runtime error that I hadn't noticed, since the result was
the same)
* adjust to use NetAddr::IP object instead of string for networkip.
lib/Sys/Virt/TCK.pm | 11 ++++++++---
lib/Sys/Virt/TCK/DomainBuilder.pm | 8 +++++++-
scripts/nwfilter/220-no-ip-spoofing.t | 11 ++++++++++-
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/lib/Sys/Virt/TCK.pm b/lib/Sys/Virt/TCK.pm
index 3f650a8..f9d9f30 100644
--- a/lib/Sys/Virt/TCK.pm
+++ b/lib/Sys/Virt/TCK.pm
@@ -767,6 +767,7 @@ sub generic_machine_domain {
my $ostype = exists $params{ostype} ? $params{ostype} : "hvm";
my $fullos = exists $params{fullos} ? $params{fullos} : 0;
my $filterref = exists $params{filterref} ? $params{filterref} : undef;
+ my %filterparams = exists $params{filterparams} ? %{$params{filterparams}} : ();
if ($fullos) {
my %config = $self->get_image($caps, $ostype);
@@ -793,7 +794,8 @@ sub generic_machine_domain {
source => "default",
model => "virtio",
mac => "52:54:00:11:11:11",
- filterref => $filterref);
+ filterref => $filterref,
+ filterparams => \%filterparams);
my $xml = $b->as_xml();
# Cleanup the temporary interface
$b->rminterface();
@@ -898,6 +900,7 @@ sub generic_domain {
my $fullos = exists $params{fullos} ? $params{fullos} : 0;
my $netmode = exists $params{netmode} ? $params{netmode} : undef;
my $filterref = exists $params{filterref} ? $params{filterref} : undef;
+ my %filterparams = exists $params{filterparams} ? %{$params{filterparams}} : ();
my $caps = Sys::Virt::TCK::Capabilities->new(xml => $self->conn->get_capabilities);
@@ -918,7 +921,8 @@ sub generic_domain {
caps => $caps,
ostype => $ostype,
fullos => $fullos,
- filterref => $filterref);
+ filterref => $filterref,
+ filterparams => \%filterparams);
}
if ($netmode) {
if ($netmode eq "vepa") {
@@ -934,7 +938,8 @@ sub generic_domain {
source => "default",
model => "virtio",
mac => "52:54:00:11:11:11",
- filterref => $filterref);
+ filterref => $filterref,
+ filterparams => \%filterparams);
}
}
return $b;
diff --git a/lib/Sys/Virt/TCK/DomainBuilder.pm b/lib/Sys/Virt/TCK/DomainBuilder.pm
index fb9a31f..83cea15 100644
--- a/lib/Sys/Virt/TCK/DomainBuilder.pm
+++ b/lib/Sys/Virt/TCK/DomainBuilder.pm
@@ -459,8 +459,14 @@ sub as_xml {
type => $interface->{model});
}
if ($interface->{filterref}) {
- $w->emptyTag("filterref",
+ $w->startTag("filterref",
filter => $interface->{filterref});
+ foreach my $paramname (keys %{$interface->{filterparams}}) {
+ $w->emptyTag("parameter",
+ name => $paramname,
+ value => $interface->{filterparams}->{$paramname});
+ }
+ $w->endTag("filterref");
}
$w->endTag("interface");
}
diff --git a/scripts/nwfilter/220-no-ip-spoofing.t b/scripts/nwfilter/220-no-ip-spoofing.t
index 09bd51c..2f454c5 100644
--- a/scripts/nwfilter/220-no-ip-spoofing.t
+++ b/scripts/nwfilter/220-no-ip-spoofing.t
@@ -42,10 +42,19 @@ END {
$tck->cleanup if $tck;
}
+my $networkip = get_network_ip($conn, "default");
+my $networkipaddr = $networkip->addr();
+diag "network ip is $networkip, individual ip is $networkipaddr";
+
+
# create first domain and start it
my $xml = $tck->generic_domain(name => "tck", fullos => 1,
netmode => "network",
- filterref => "clean-traffic")->as_xml();
+ filterref => "clean-traffic",
+ filterparams => {
+ CTRL_IP_LEARNING => "dhcp",
+ DHCPSERVER => $networkipaddr
+ })->as_xml();
my $dom;
ok_domain(sub { $dom = $conn->define_domain($xml) }, "created persistent domain object");
--
2.14.3
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Thu, Mar 01, 2018 at 09:49:59PM -0500, Laine Stump wrote: > Adding these parameters to the clean-traffic filter causes a > significant extra piece of code to be executed (a separate thread is > started up, which uses libpcap to capture DHCP traffic and learn the > IP address of the guest / test appliance), so let's get some test > coverage on that code. > > Signed-off-by: Laine Stump <laine@laine.org> > --- > > Change from V1: > > * set %filterparams to () instead of undef when not specified. (undef > caused a runtime error that I hadn't noticed, since the result was > the same) > > * adjust to use NetAddr::IP object instead of string for networkip. > > lib/Sys/Virt/TCK.pm | 11 ++++++++--- > lib/Sys/Virt/TCK/DomainBuilder.pm | 8 +++++++- > scripts/nwfilter/220-no-ip-spoofing.t | 11 ++++++++++- > 3 files changed, 25 insertions(+), 5 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.