Re: [PATCH net v4] selftests: net: add test for destination in broadcast packets
From: Brett Sheffield <hidden>
Date: 2025-08-29 11:44:52
Also in:
stable
On 2025-08-29 12:19, Simon Horman wrote:
On Thu, Aug 28, 2025 at 01:42:42PM +0200, Oscar Maes wrote:quoted
Add test to check the broadcast ethernet destination field is set correctly. This test sends a broadcast ping, captures it using tcpdump and ensures that all bits of the 6 octet ethernet destination address are correctly set by examining the output capture file. Signed-off-by: Oscar Maes <redacted> Co-authored-by: Brett A C Sheffield [off-list ref]...quoted
+test_broadcast_ether_dst() { + local rc=0 + CAPFILE=$(mktemp -u cap.XXXXXXXXXX) + OUTPUT=$(mktemp -u out.XXXXXXXXXX) + + echo "Testing ethernet broadcast destination" + + # start tcpdump listening for icmp + # tcpdump will exit after receiving a single packet + # timeout will kill tcpdump if it is still running after 2s + timeout 2s ip netns exec "${CLIENT_NS}" \ + tcpdump -i link0 -c 1 -w "${CAPFILE}" icmp &> "${OUTPUT}" & + pid=$! + slowwait 1 grep -qs "listening" "${OUTPUT}" + + # send broadcast ping + ip netns exec "${CLIENT_NS}" \ + ping -W0.01 -c1 -b 255.255.255.255 &> /dev/null + + # wait for tcpdump for exit after receiving packet + wait "${pid}"Hi Oscar and Brett, I am concerned that if something goes wrong this may block forever. Also, I'm wondering if this test could make use of the tcpdump helpers provided in tools/testing/selftests/net/forwarding/lib.sh
tcpdump is started with `timeout 2s`, which will kill it if the 2s timeout is exceeded. Is that not sufficient here?
quoted
+ + # compare ethernet destination field to ff:ff:ff:ff:ff:ff + ether_dst=$(tcpdump -r "${CAPFILE}" -tnne 2>/dev/null | \ + awk '{sub(/,/,"",$3); print $3}') + if [[ "${ether_dst}" == "ff:ff:ff:ff:ff:ff" ]]; then + echo "[ OK ]" + rc="${ksft_pass}" + else + echo "[FAIL] expected dst ether addr to be ff:ff:ff:ff:ff:ff," \ + "got ${ether_dst}" + rc="${ksft_fail}" + fi + + return "${rc}" +}...
bacs --