Regression tests for the ARP implementation in the kernel. The test suite runs on the machine LOCAL, the kernel under test is running on REMOTE. On LOCAL Scapy is generating ARP packes and sends them to REMOTE. The replies to LOCAL are analyzed. The kernel log files are fetched from REMOTE via SCP and grepped for messages. The ARP table of REMOTE is inspected via SSH login. Interfaces and adresses on REMOTE and LOCAL must be preconfigured. The test manually adds entries into the REMOTE ARP table and tries to overwrite them with fake ARP packets. Some addresses are on the REMOTE interface facing LOCAL other are on a second interface. The ARP input code has different cases for that. So all possible log messages from ARP input can be triggered by a subtest. Additionally check that REMOTE can answer a Proxy ARP Requests. EXAMPLE To run this test I use the following configuration files. You should choose a different set of MAC and IP addresses. - My local machine where I run the regression test: /etc/hosts # to login to qemu with SSH via IPv6 link-local fe80::725f:caff:fe21:8d70%tap0 q70 /etc/hostname.tap0 lladdr fe:e1:ba:d0:d5:6d up inet 10.188.70.17 255.255.255.0 inet6 eui64 /etc/hostname.tap1 up - My qemu where the kernel under test is running /etc/hostname.vio0 lladdr 70:5f:ca:21:8d:70 inet 10.188.70.70 255.255.255.0 inet6 eui64 /etc/hostname.vio1 inet 10.188.211.70 255.255.255.0 - My environment when executing the test LOCAL_IF=tap0 LOCAL_MAC=fe:e1:ba:d0:d5:6d REMOTE_MAC=70:5f:ca:21:8d:70 FAKE_MAC=12:34:56:78:9a:bc PROXY_MAC=00:90:27:bb:cc:dd REMOTE_SSH=q70 LOCAL_ADDR=10.188.70.17 REMOTE_ADDR=10.188.70.70 FAKE_ADDR=10.188.70.188 OTHER_ADDR=10.188.211.70 OTHER_FAKE_ADDR=10.188.211.188 export LOCAL_IF LOCAL_MAC REMOTE_MAC FAKE_MAC REMOTE_SSH LOCAL_ADDR REMOTE_ADDR export FAKE_ADDR OTHER_ADDR OTHER_FAKE_ADDR