Skip to content

Commit

Permalink
selftests/net: prepare cmsg_ipv6.sh for ipv4
Browse files Browse the repository at this point in the history
Move IPV6_TCLASS and IPV6_HOPLIMIT into loops, to be able to use them
for IP_TOS and IP_TTL in a follow-on patch.

Indentation in this file is a mix of four spaces and tabs for double
indents. To minimize code churn, maintain that pattern.

Very small diff if viewing with -w.

Signed-off-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20250225022431.2083926-2-willemdebruijn.kernel@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Willem de Bruijn authored and Jakub Kicinski committed Feb 27, 2025
1 parent 3ba0752 commit c1d6d62
Showing 1 changed file with 59 additions and 50 deletions.
109 changes: 59 additions & 50 deletions tools/testing/selftests/net/cmsg_ipv6.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,76 +64,85 @@ for ovr in setsock cmsg both diff; do
done

# IPV6_TCLASS
TOS=0x10
TOS2=0x20

ip -6 -netns $NS rule add tos $TOS lookup 300
ip -6 -netns $NS route add table 300 prohibit any
test_dscp() {
local -r TOS=0x10
local -r TOS2=0x20

for ovr in setsock cmsg both diff; do
for p in u i r; do
[ $p == "u" ] && prot=UDP
[ $p == "i" ] && prot=ICMP
[ $p == "r" ] && prot=RAW
ip -6 -netns $NS rule add tos $TOS lookup 300
ip -6 -netns $NS route add table 300 prohibit any

[ $ovr == "setsock" ] && m="-C"
[ $ovr == "cmsg" ] && m="-c"
[ $ovr == "both" ] && m="-C $((TOS2)) -c"
[ $ovr == "diff" ] && m="-C $((TOS )) -c"
for ovr in setsock cmsg both diff; do
for p in u i r; do
[ $p == "u" ] && prot=UDP
[ $p == "i" ] && prot=ICMP
[ $p == "r" ] && prot=RAW

$NSEXE nohup tcpdump --immediate-mode -p -ni dummy0 -w $TMPF -c 4 2> /dev/null &
BG=$!
sleep 0.05
[ $ovr == "setsock" ] && m="-C"
[ $ovr == "cmsg" ] && m="-c"
[ $ovr == "both" ] && m="-C $((TOS2)) -c"
[ $ovr == "diff" ] && m="-C $((TOS )) -c"

$NSEXE ./cmsg_sender -6 -p $p $m $((TOS2)) $TGT6 1234
check_result $? 0 "TCLASS $prot $ovr - pass"
$NSEXE nohup tcpdump --immediate-mode -p -ni dummy0 -w $TMPF -c 4 2> /dev/null &
BG=$!
sleep 0.05

while [ -d /proc/$BG ]; do
$NSEXE ./cmsg_sender -6 -p $p $m $((TOS2)) $TGT6 1234
done
check_result $? 0 "TCLASS $prot $ovr - pass"

tcpdump -r $TMPF -v 2>&1 | grep "class $TOS2" >> /dev/null
check_result $? 0 "TCLASS $prot $ovr - packet data"
rm $TMPF
while [ -d /proc/$BG ]; do
$NSEXE ./cmsg_sender -6 -p $p $m $((TOS2)) $TGT6 1234
done

[ $ovr == "both" ] && m="-C $((TOS )) -c"
[ $ovr == "diff" ] && m="-C $((TOS2)) -c"
tcpdump -r $TMPF -v 2>&1 | grep "class $TOS2" >> /dev/null
check_result $? 0 "TCLASS $prot $ovr - packet data"
rm $TMPF

$NSEXE ./cmsg_sender -6 -p $p $m $((TOS)) -s $TGT6 1234
check_result $? 1 "TCLASS $prot $ovr - rejection"
[ $ovr == "both" ] && m="-C $((TOS )) -c"
[ $ovr == "diff" ] && m="-C $((TOS2)) -c"

$NSEXE ./cmsg_sender -6 -p $p $m $((TOS)) -s $TGT6 1234
check_result $? 1 "TCLASS $prot $ovr - rejection"
done
done
done
}

# IPV6_HOPLIMIT
LIM=4
test_dscp

for ovr in setsock cmsg both diff; do
for p in u i r; do
[ $p == "u" ] && prot=UDP
[ $p == "i" ] && prot=ICMP
[ $p == "r" ] && prot=RAW
# IPV6_HOPLIMIT
test_hoplimit() {
local -r LIM=4

[ $ovr == "setsock" ] && m="-L"
[ $ovr == "cmsg" ] && m="-l"
[ $ovr == "both" ] && m="-L $LIM -l"
[ $ovr == "diff" ] && m="-L $((LIM + 1)) -l"
for ovr in setsock cmsg both diff; do
for p in u i r; do
[ $p == "u" ] && prot=UDP
[ $p == "i" ] && prot=ICMP
[ $p == "r" ] && prot=RAW

$NSEXE nohup tcpdump --immediate-mode -p -ni dummy0 -w $TMPF -c 4 2> /dev/null &
BG=$!
sleep 0.05
[ $ovr == "setsock" ] && m="-L"
[ $ovr == "cmsg" ] && m="-l"
[ $ovr == "both" ] && m="-L $LIM -l"
[ $ovr == "diff" ] && m="-L $((LIM + 1)) -l"

$NSEXE ./cmsg_sender -6 -p $p $m $LIM $TGT6 1234
check_result $? 0 "HOPLIMIT $prot $ovr - pass"
$NSEXE nohup tcpdump --immediate-mode -p -ni dummy0 -w $TMPF -c 4 2> /dev/null &
BG=$!
sleep 0.05

while [ -d /proc/$BG ]; do
$NSEXE ./cmsg_sender -6 -p $p $m $LIM $TGT6 1234
done
check_result $? 0 "HOPLIMIT $prot $ovr - pass"

tcpdump -r $TMPF -v 2>&1 | grep "hlim $LIM[^0-9]" >> /dev/null
check_result $? 0 "HOPLIMIT $prot $ovr - packet data"
rm $TMPF
while [ -d /proc/$BG ]; do
$NSEXE ./cmsg_sender -6 -p $p $m $LIM $TGT6 1234
done

tcpdump -r $TMPF -v 2>&1 | grep "hlim $LIM[^0-9]" >> /dev/null
check_result $? 0 "HOPLIMIT $prot $ovr - packet data"
rm $TMPF
done
done
done
}

test_hoplimit

# IPV6 exthdr
for p in u i r; do
Expand Down

0 comments on commit c1d6d62

Please sign in to comment.