mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
2.7 KiB
166 lines
2.7 KiB
#!/bin/bash |
|
# SPDX-License-Identifier: GPL-2.0 |
|
|
|
# Test for port-default priority. Non-IP packets ingress $swp1 and are |
|
# prioritized according to the default priority specified at the port. |
|
# rx_octets_prio_* counters are used to verify the prioritization. |
|
# |
|
# +-----------------------+ |
|
# | H1 | |
|
# | + $h1 | |
|
# | | 192.0.2.1/28 | |
|
# +----|------------------+ |
|
# | |
|
# +----|------------------+ |
|
# | SW | | |
|
# | + $swp1 | |
|
# | 192.0.2.2/28 | |
|
# | APP=<prio>,1,0 | |
|
# +-----------------------+ |
|
|
|
ALL_TESTS=" |
|
ping_ipv4 |
|
test_defprio |
|
" |
|
|
|
lib_dir=$(dirname $0)/../../../net/forwarding |
|
|
|
NUM_NETIFS=2 |
|
: ${HIT_TIMEOUT:=1000} # ms |
|
source $lib_dir/lib.sh |
|
|
|
declare -a APP |
|
|
|
defprio_install() |
|
{ |
|
local dev=$1; shift |
|
local prio=$1; shift |
|
local app="app=$prio,1,0" |
|
|
|
lldptool -T -i $dev -V APP $app >/dev/null |
|
lldpad_app_wait_set $dev |
|
APP[$prio]=$app |
|
} |
|
|
|
defprio_uninstall() |
|
{ |
|
local dev=$1; shift |
|
local prio=$1; shift |
|
local app=${APP[$prio]} |
|
|
|
lldptool -T -i $dev -V APP -d $app >/dev/null |
|
lldpad_app_wait_del |
|
unset APP[$prio] |
|
} |
|
|
|
defprio_flush() |
|
{ |
|
local dev=$1; shift |
|
local prio |
|
|
|
if ((${#APP[@]})); then |
|
lldptool -T -i $dev -V APP -d ${APP[@]} >/dev/null |
|
fi |
|
lldpad_app_wait_del |
|
APP=() |
|
} |
|
|
|
h1_create() |
|
{ |
|
simple_if_init $h1 192.0.2.1/28 |
|
} |
|
|
|
h1_destroy() |
|
{ |
|
simple_if_fini $h1 192.0.2.1/28 |
|
} |
|
|
|
switch_create() |
|
{ |
|
ip link set dev $swp1 up |
|
ip addr add dev $swp1 192.0.2.2/28 |
|
} |
|
|
|
switch_destroy() |
|
{ |
|
defprio_flush $swp1 |
|
ip addr del dev $swp1 192.0.2.2/28 |
|
ip link set dev $swp1 down |
|
} |
|
|
|
setup_prepare() |
|
{ |
|
h1=${NETIFS[p1]} |
|
swp1=${NETIFS[p2]} |
|
|
|
vrf_prepare |
|
|
|
h1_create |
|
switch_create |
|
} |
|
|
|
cleanup() |
|
{ |
|
pre_cleanup |
|
|
|
switch_destroy |
|
h1_destroy |
|
|
|
vrf_cleanup |
|
} |
|
|
|
ping_ipv4() |
|
{ |
|
ping_test $h1 192.0.2.2 |
|
} |
|
|
|
__test_defprio() |
|
{ |
|
local prio_install=$1; shift |
|
local prio_observe=$1; shift |
|
local key |
|
local t1 |
|
local i |
|
|
|
RET=0 |
|
|
|
defprio_install $swp1 $prio_install |
|
|
|
local t0=$(ethtool_stats_get $swp1 rx_frames_prio_$prio_observe) |
|
mausezahn -q $h1 -d 100m -c 10 -t arp reply |
|
t1=$(busywait "$HIT_TIMEOUT" until_counter_is ">= $((t0 + 10))" \ |
|
ethtool_stats_get $swp1 rx_frames_prio_$prio_observe) |
|
|
|
check_err $? "Default priority $prio_install/$prio_observe: Expected to capture 10 packets, got $((t1 - t0))." |
|
log_test "Default priority $prio_install/$prio_observe" |
|
|
|
defprio_uninstall $swp1 $prio_install |
|
} |
|
|
|
test_defprio() |
|
{ |
|
local prio |
|
|
|
for prio in {0..7}; do |
|
__test_defprio $prio $prio |
|
done |
|
|
|
defprio_install $swp1 3 |
|
__test_defprio 0 3 |
|
__test_defprio 1 3 |
|
__test_defprio 2 3 |
|
__test_defprio 4 4 |
|
__test_defprio 5 5 |
|
__test_defprio 6 6 |
|
__test_defprio 7 7 |
|
defprio_uninstall $swp1 3 |
|
} |
|
|
|
trap cleanup EXIT |
|
|
|
setup_prepare |
|
setup_wait |
|
|
|
tests_run |
|
|
|
exit $EXIT_STATUS
|
|
|