0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 ALL_TESTS="
0022 ping_ipv4
0023 test_defprio
0024 "
0025
0026 lib_dir=$(dirname $0)/../../../net/forwarding
0027
0028 NUM_NETIFS=2
0029 : ${HIT_TIMEOUT:=1000}
0030 source $lib_dir/lib.sh
0031
0032 declare -a APP
0033
0034 defprio_install()
0035 {
0036 local dev=$1; shift
0037 local prio=$1; shift
0038 local app="app=$prio,1,0"
0039
0040 lldptool -T -i $dev -V APP $app >/dev/null
0041 lldpad_app_wait_set $dev
0042 APP[$prio]=$app
0043 }
0044
0045 defprio_uninstall()
0046 {
0047 local dev=$1; shift
0048 local prio=$1; shift
0049 local app=${APP[$prio]}
0050
0051 lldptool -T -i $dev -V APP -d $app >/dev/null
0052 lldpad_app_wait_del
0053 unset APP[$prio]
0054 }
0055
0056 defprio_flush()
0057 {
0058 local dev=$1; shift
0059 local prio
0060
0061 if ((${
0062 lldptool -T -i $dev -V APP -d ${APP[@]} >/dev/null
0063 fi
0064 lldpad_app_wait_del
0065 APP=()
0066 }
0067
0068 h1_create()
0069 {
0070 simple_if_init $h1 192.0.2.1/28
0071 }
0072
0073 h1_destroy()
0074 {
0075 simple_if_fini $h1 192.0.2.1/28
0076 }
0077
0078 switch_create()
0079 {
0080 ip link set dev $swp1 up
0081 ip addr add dev $swp1 192.0.2.2/28
0082 }
0083
0084 switch_destroy()
0085 {
0086 defprio_flush $swp1
0087 ip addr del dev $swp1 192.0.2.2/28
0088 ip link set dev $swp1 down
0089 }
0090
0091 setup_prepare()
0092 {
0093 h1=${NETIFS[p1]}
0094 swp1=${NETIFS[p2]}
0095
0096 vrf_prepare
0097
0098 h1_create
0099 switch_create
0100 }
0101
0102 cleanup()
0103 {
0104 pre_cleanup
0105
0106 switch_destroy
0107 h1_destroy
0108
0109 vrf_cleanup
0110 }
0111
0112 ping_ipv4()
0113 {
0114 ping_test $h1 192.0.2.2
0115 }
0116
0117 __test_defprio()
0118 {
0119 local prio_install=$1; shift
0120 local prio_observe=$1; shift
0121 local key
0122 local t1
0123 local i
0124
0125 RET=0
0126
0127 defprio_install $swp1 $prio_install
0128
0129 local t0=$(ethtool_stats_get $swp1 rx_frames_prio_$prio_observe)
0130 mausezahn -q $h1 -d 100m -c 10 -t arp reply
0131 t1=$(busywait "$HIT_TIMEOUT" until_counter_is ">= $((t0 + 10))" \
0132 ethtool_stats_get $swp1 rx_frames_prio_$prio_observe)
0133
0134 check_err $? "Default priority $prio_install/$prio_observe: Expected to capture 10 packets, got $((t1 - t0))."
0135 log_test "Default priority $prio_install/$prio_observe"
0136
0137 defprio_uninstall $swp1 $prio_install
0138 }
0139
0140 test_defprio()
0141 {
0142 local prio
0143
0144 for prio in {0..7}; do
0145 __test_defprio $prio $prio
0146 done
0147
0148 defprio_install $swp1 3
0149 __test_defprio 0 3
0150 __test_defprio 1 3
0151 __test_defprio 2 3
0152 __test_defprio 4 4
0153 __test_defprio 5 5
0154 __test_defprio 6 6
0155 __test_defprio 7 7
0156 defprio_uninstall $swp1 3
0157 }
0158
0159 trap cleanup EXIT
0160
0161 setup_prepare
0162 setup_wait
0163
0164 tests_run
0165
0166 exit $EXIT_STATUS