1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4NS=ns 5IP6=2001:db8:1::1/64 6TGT6=2001:db8:1::2 7 8cleanup() 9{ 10 ip netns del $NS 11} 12 13trap cleanup EXIT 14 15NSEXE="ip netns exec $NS" 16 17# Namespaces 18ip netns add $NS 19 20$NSEXE sysctl -w net.ipv4.ping_group_range='0 2147483647' > /dev/null 21 22# Connectivity 23ip -netns $NS link add type dummy 24ip -netns $NS link set dev dummy0 up 25ip -netns $NS addr add $IP6 dev dummy0 26 27# Test 28BAD=0 29TOTAL=0 30 31check_result() { 32 ((TOTAL++)) 33 if [ $1 -ne $2 ]; then 34 echo " Case $3 returned $1, expected $2" 35 ((BAD++)) 36 fi 37} 38 39# IPV6_DONTFRAG 40for ovr in setsock cmsg both diff; do 41 for df in 0 1; do 42 for p in u i r; do 43 [ $p == "u" ] && prot=UDP 44 [ $p == "i" ] && prot=ICMP 45 [ $p == "r" ] && prot=RAW 46 47 [ $ovr == "setsock" ] && m="-F $df" 48 [ $ovr == "cmsg" ] && m="-f $df" 49 [ $ovr == "both" ] && m="-F $df -f $df" 50 [ $ovr == "diff" ] && m="-F $((1 - df)) -f $df" 51 52 $NSEXE ./cmsg_sender -s -S 2000 -6 -p $p $m $TGT6 1234 53 check_result $? $df "DONTFRAG $prot $ovr" 54 done 55 done 56done 57 58# Summary 59if [ $BAD -ne 0 ]; then 60 echo "FAIL - $BAD/$TOTAL cases failed" 61 exit 1 62else 63 echo "OK" 64 exit 0 65fi 66