selftests/bpf: test bpf flow dissection
Adds a test that sends different types of packets over multiple tunnels and verifies that valid packets are dissected correctly. To do so, a tc-flower rule is added to drop packets on UDP src port 9, and packets are sent from ports 8, 9, and 10. Only the packets on port 9 should be dropped. Because tc-flower relies on the flow dissector to match flows, correct classification demonstrates correct dissection. Also add support logic to load the BPF program and to inject the test packets. Signed-off-by: Petar Penkov <ppenkov@google.com> Signed-off-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:

committed by
Alexei Starovoitov

parent
9c98b13cc3
commit
50b3ed57de
36
tools/testing/selftests/bpf/with_tunnels.sh
Executable file
36
tools/testing/selftests/bpf/with_tunnels.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# setup tunnels for flow dissection test
|
||||
|
||||
readonly SUFFIX="test_$(mktemp -u XXXX)"
|
||||
CONFIG="remote 127.0.0.2 local 127.0.0.1 dev lo"
|
||||
|
||||
setup() {
|
||||
ip link add "ipip_${SUFFIX}" type ipip ${CONFIG}
|
||||
ip link add "gre_${SUFFIX}" type gre ${CONFIG}
|
||||
ip link add "sit_${SUFFIX}" type sit ${CONFIG}
|
||||
|
||||
echo "tunnels before test:"
|
||||
ip tunnel show
|
||||
|
||||
ip link set "ipip_${SUFFIX}" up
|
||||
ip link set "gre_${SUFFIX}" up
|
||||
ip link set "sit_${SUFFIX}" up
|
||||
}
|
||||
|
||||
|
||||
cleanup() {
|
||||
ip tunnel del "ipip_${SUFFIX}"
|
||||
ip tunnel del "gre_${SUFFIX}"
|
||||
ip tunnel del "sit_${SUFFIX}"
|
||||
|
||||
echo "tunnels after test:"
|
||||
ip tunnel show
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
setup
|
||||
"$@"
|
||||
exit "$?"
|
Reference in New Issue
Block a user