2 # SPDX-License-Identifier: GPL-2.0
9 TMPF=$(mktemp --suffix ".pcap")
19 NSEXE="ip netns exec $NS"
21 tcpdump -h | grep immediate-mode >> /dev/null
23 echo "SKIP - tcpdump with --immediate-mode option required"
30 $NSEXE sysctl -w net.ipv4.ping_group_range='0 2147483647' > /dev/null
33 ip -netns $NS link add type dummy
34 ip -netns $NS link set dev dummy0 up
35 ip -netns $NS addr add $IP6 dev dummy0
43 if [ $1 -ne $2 ]; then
44 echo " Case $3 returned $1, expected $2"
50 for ovr in setsock cmsg both diff; do
53 [ $p == "u" ] && prot=UDP
54 [ $p == "i" ] && prot=ICMP
55 [ $p == "r" ] && prot=RAW
57 [ $ovr == "setsock" ] && m="-F $df"
58 [ $ovr == "cmsg" ] && m="-f $df"
59 [ $ovr == "both" ] && m="-F $df -f $df"
60 [ $ovr == "diff" ] && m="-F $((1 - df)) -f $df"
62 $NSEXE ./cmsg_sender -s -S 2000 -6 -p $p $m $TGT6 1234
63 check_result $? $df "DONTFRAG $prot $ovr"
72 ip -6 -netns $NS rule add tos $TOS lookup 300
73 ip -6 -netns $NS route add table 300 prohibit any
75 for ovr in setsock cmsg both diff; do
77 [ $p == "u" ] && prot=UDP
78 [ $p == "i" ] && prot=ICMP
79 [ $p == "r" ] && prot=RAW
81 [ $ovr == "setsock" ] && m="-C"
82 [ $ovr == "cmsg" ] && m="-c"
83 [ $ovr == "both" ] && m="-C $((TOS2)) -c"
84 [ $ovr == "diff" ] && m="-C $((TOS )) -c"
86 $NSEXE nohup tcpdump --immediate-mode -p -ni dummy0 -w $TMPF -c 4 2> /dev/null &
90 $NSEXE ./cmsg_sender -6 -p $p $m $((TOS2)) $TGT6 1234
91 check_result $? 0 "TCLASS $prot $ovr - pass"
93 while [ -d /proc/$BG ]; do
94 $NSEXE ./cmsg_sender -6 -p u $TGT6 1234
97 tcpdump -r $TMPF -v 2>&1 | grep "class $TOS2" >> /dev/null
98 check_result $? 0 "TCLASS $prot $ovr - packet data"
101 [ $ovr == "both" ] && m="-C $((TOS )) -c"
102 [ $ovr == "diff" ] && m="-C $((TOS2)) -c"
104 $NSEXE ./cmsg_sender -6 -p $p $m $((TOS)) -s $TGT6 1234
105 check_result $? 1 "TCLASS $prot $ovr - rejection"
112 for ovr in setsock cmsg both diff; do
114 [ $p == "u" ] && prot=UDP
115 [ $p == "i" ] && prot=ICMP
116 [ $p == "r" ] && prot=RAW
118 [ $ovr == "setsock" ] && m="-L"
119 [ $ovr == "cmsg" ] && m="-l"
120 [ $ovr == "both" ] && m="-L $LIM -l"
121 [ $ovr == "diff" ] && m="-L $((LIM + 1)) -l"
123 $NSEXE nohup tcpdump --immediate-mode -p -ni dummy0 -w $TMPF -c 4 2> /dev/null &
127 $NSEXE ./cmsg_sender -6 -p $p $m $LIM $TGT6 1234
128 check_result $? 0 "HOPLIMIT $prot $ovr - pass"
130 while [ -d /proc/$BG ]; do
131 $NSEXE ./cmsg_sender -6 -p u $TGT6 1234
134 tcpdump -r $TMPF -v 2>&1 | grep "hlim $LIM[^0-9]" >> /dev/null
135 check_result $? 0 "HOPLIMIT $prot $ovr - packet data"
142 # Very basic "does it crash" test
144 $NSEXE ./cmsg_sender -p $p -6 -H $h $TGT6 1234
145 check_result $? 0 "ExtHdr $prot $ovr - pass"
150 if [ $BAD -ne 0 ]; then
151 echo "FAIL - $BAD/$TOTAL cases failed"