mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-07 00:50:50 +00:00
netinet tests: test carp source MAC address
Ensure that (multicast) CARP packets are sent with the expected source MAC address. Reviewed by: melifaro Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D39454
This commit is contained in:
parent
20be1b4fc4
commit
5e2e3615d9
|
@ -24,6 +24,8 @@ ATF_TESTS_SH= arp \
|
||||||
output \
|
output \
|
||||||
redirect
|
redirect
|
||||||
|
|
||||||
|
ATF_TESTS_PYTEST+= carp.py
|
||||||
|
|
||||||
TEST_METADATA.divert+= required_programs="python"
|
TEST_METADATA.divert+= required_programs="python"
|
||||||
TEST_METADATA.forward+= required_programs="python"
|
TEST_METADATA.forward+= required_programs="python"
|
||||||
TEST_METADATA.output+= required_programs="python"
|
TEST_METADATA.output+= required_programs="python"
|
||||||
|
|
53
tests/sys/netinet/carp.py
Normal file
53
tests/sys/netinet/carp.py
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
import pytest
|
||||||
|
from atf_python.sys.net.tools import ToolsHelper
|
||||||
|
from atf_python.sys.net.vnet import VnetTestTemplate
|
||||||
|
|
||||||
|
sc = None
|
||||||
|
|
||||||
|
|
||||||
|
def filter_f(x):
|
||||||
|
ip = x.getlayer(sc.IP)
|
||||||
|
if not ip:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return ip.proto == 112
|
||||||
|
|
||||||
|
|
||||||
|
class TestCarp(VnetTestTemplate):
|
||||||
|
REQUIRED_MODULES = ["carp"]
|
||||||
|
TOPOLOGY = {
|
||||||
|
"vnet1": {"ifaces": ["if1"]},
|
||||||
|
"if1": {"prefixes4": [("192.0.2.1/24", "192.0.2.2/24")]},
|
||||||
|
}
|
||||||
|
|
||||||
|
def setup_method(self, method):
|
||||||
|
global sc
|
||||||
|
if sc is None:
|
||||||
|
import scapy.all as _sc
|
||||||
|
|
||||||
|
sc = _sc
|
||||||
|
super().setup_method(method)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def check_carp_src_mac(self, pkts):
|
||||||
|
for p in pkts:
|
||||||
|
if not filter_f(p):
|
||||||
|
continue
|
||||||
|
|
||||||
|
print("Packet src mac {}".format(p.src))
|
||||||
|
|
||||||
|
if p.src != "00:00:5e:00:01:01":
|
||||||
|
raise
|
||||||
|
|
||||||
|
def test_source_mac(self):
|
||||||
|
"Test carp packets source address"
|
||||||
|
|
||||||
|
if1 = self.vnet.iface_alias_map["if1"]
|
||||||
|
|
||||||
|
ToolsHelper.print_output(
|
||||||
|
"ifconfig {} add vhid 1 192.0.2.203/24".format(if1.name)
|
||||||
|
)
|
||||||
|
|
||||||
|
carp_pkts = sc.sniff(iface=if1.name, stop_filter=filter_f, timeout=5)
|
||||||
|
|
||||||
|
self.check_carp_src_mac(carp_pkts)
|
Loading…
Reference in a new issue