diff --git a/tests/sys/netinet/carp.py b/tests/sys/netinet/carp.py --- a/tests/sys/netinet/carp.py +++ b/tests/sys/netinet/carp.py @@ -39,6 +39,7 @@ if p.src != "00:00:5e:00:01:01": raise + @pytest.mark.require_progs(["scapy"]) def test_source_mac(self): "Test carp packets source address" @@ -52,6 +53,7 @@ self.check_carp_src_mac(carp_pkts) + @pytest.mark.require_progs(["scapy"]) def test_source_mac_vrrp(self): "Test VRRP packets source address" diff --git a/tests/sys/netinet/igmp.py b/tests/sys/netinet/igmp.py --- a/tests/sys/netinet/igmp.py +++ b/tests/sys/netinet/igmp.py @@ -80,6 +80,7 @@ sp = _sp super().setup_method(method) + @pytest.mark.require_progs(["scapy"]) def test_igmp3_join_leave(self): "Test that we send the expected join/leave IGMPv2 messages" diff --git a/tests/sys/netpfil/pf/frag6.py b/tests/sys/netpfil/pf/frag6.py --- a/tests/sys/netpfil/pf/frag6.py +++ b/tests/sys/netpfil/pf/frag6.py @@ -43,6 +43,7 @@ return False @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_dup_frag_hdr(self): "Test packets with duplicate fragment headers" srv_vnet = self.vnet_map["vnet2"] @@ -64,6 +65,7 @@ assert not p.getlayer(sp.ICMPv6EchoReply) @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_overlong(self): "Test overly long fragmented packet" @@ -112,6 +114,7 @@ ]) @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_overlap(self): "Ensure we discard packets with overlapping fragments" diff --git a/tests/sys/netpfil/pf/icmp.py b/tests/sys/netpfil/pf/icmp.py --- a/tests/sys/netpfil/pf/icmp.py +++ b/tests/sys/netpfil/pf/icmp.py @@ -86,6 +86,7 @@ vnet.pipe.send("Got ICMP destination unreachable packet") @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_inner_match(self): vnet = self.vnet_map["vnet1"] dst_vnet = self.vnet_map["vnet3"] @@ -160,6 +161,7 @@ return @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_fragmentation_needed(self): ToolsHelper.print_output("/sbin/route add default 192.0.2.1") diff --git a/tests/sys/netpfil/pf/nat64.py b/tests/sys/netpfil/pf/nat64.py --- a/tests/sys/netpfil/pf/nat64.py +++ b/tests/sys/netpfil/pf/nat64.py @@ -93,6 +93,7 @@ "pass in on %s inet6 af-to inet from 192.0.2.1" % ifname]) @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_tcp_rst(self): ToolsHelper.print_output("/sbin/route -6 add default 2001:db8::1") @@ -126,6 +127,7 @@ assert "A" in tcp.flags @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_udp_port_closed(self): ToolsHelper.print_output("/sbin/route -6 add default 2001:db8::1") @@ -147,6 +149,7 @@ assert udp.dport == 1222 @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_address_unreachable(self): ToolsHelper.print_output("/sbin/route -6 add default 2001:db8::1") @@ -172,6 +175,7 @@ assert ip6.hlim == 62 @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_udp_checksum(self): ToolsHelper.print_output("/sbin/route -6 add default 2001:db8::1") diff --git a/tests/sys/netpfil/pf/nat66.py b/tests/sys/netpfil/pf/nat66.py --- a/tests/sys/netpfil/pf/nat66.py +++ b/tests/sys/netpfil/pf/nat66.py @@ -140,6 +140,7 @@ assert found @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_npt_icmp(self): cl_vnet = self.vnet_map["vnet1"] ifname = cl_vnet.iface_alias_map["if1"].name @@ -168,6 +169,7 @@ self.check_icmp_too_big(sp, 12000, 5000) @pytest.mark.require_user("root") + @pytest.mark.require_progs(["scapy"]) def test_npt_route_to_icmp(self): cl_vnet = self.vnet_map["vnet1"] ifname = cl_vnet.iface_alias_map["if1"].name