Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/testing/selftests/net/forwarding/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  tc_tunnel_key.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

ALL_TESTS="tunnel_key_nofrag_test"

NUM_NETIFS=4
source tc_common.sh
source lib.sh

tcflags="skip_hw"

h1_create()
{
 simple_if_init $h1 192.0.2.1/24
 forwarding_enable
 mtu_set $h1 1500
 tunnel_create h1-et vxlan 192.0.2.1 192.0.2.2 dev $h1 dstport 0 external
 tc qdisc add dev h1-et clsact
 mtu_set h1-et 1230
 mtu_restore $h1
 mtu_set $h1 1000
}

h1_destroy()
{
 tc qdisc del dev h1-et clsact
 tunnel_destroy h1-et
 forwarding_restore
 mtu_restore $h1
 simple_if_fini $h1 192.0.2.1/24
}

h2_create()
{
 simple_if_init $h2 192.0.2.2/24
}

h2_destroy()
{
 simple_if_fini $h2 192.0.2.2/24
}

switch_create()
{
 simple_if_init $swp1 192.0.2.2/24
 tc qdisc add dev $swp1 clsact
 simple_if_init $swp2 192.0.2.1/24
}

switch_destroy()
{
 simple_if_fini $swp2 192.0.2.1/24
 tc qdisc del dev $swp1 clsact
 simple_if_fini $swp1 192.0.2.2/24
}

setup_prepare()
{
 h1=${NETIFS[p1]}
 swp1=${NETIFS[p2]}

 swp2=${NETIFS[p3]}
 h2=${NETIFS[p4]}

 h1mac=$(mac_get $h1)
 h2mac=$(mac_get $h2)

 swp1origmac=$(mac_get $swp1)
 swp2origmac=$(mac_get $swp2)
 ip link set $swp1 address $h2mac
 ip link set $swp2 address $h1mac

 vrf_prepare

 h1_create
 h2_create
 switch_create

 if ! tc action add action tunnel_key help 2>&1 | grep -q nofrag; then
  log_test "SKIP: iproute doesn't support nofrag"
  exit $ksft_skip
 fi
}

cleanup()
{
 pre_cleanup

 switch_destroy
 h2_destroy
 h1_destroy

 vrf_cleanup

 ip link set $swp2 address $swp2origmac
 ip link set $swp1 address $swp1origmac
}

tunnel_key_nofrag_test()
{
 RET=0
 local i

 tc filter add dev $swp1 ingress protocol ip pref 100 handle 100 \
  flower src_ip 192.0.2.1 dst_ip 192.0.2.2 ip_proto udp \
  ip_flags nofrag action drop
 tc filter add dev $swp1 ingress protocol ip pref 101 handle 101 \
  flower src_ip 192.0.2.1 dst_ip 192.0.2.2 ip_proto udp \
  ip_flags firstfrag action drop
 tc filter add dev $swp1 ingress protocol ip pref 102 handle 102 \
  flower src_ip 192.0.2.1 dst_ip 192.0.2.2 ip_proto udp \
  ip_flags nofirstfrag action drop

 # test 'nofrag' set
 tc filter add dev h1-et egress protocol all pref 1 handle 1 matchall $tcflags \
  action tunnel_key set src_ip 192.0.2.1 dst_ip 192.0.2.2 id 42 nofrag index 10
 $MZ h1-et -c 1 -p 930 -a 00:aa:bb:cc:dd:ee -b 00:ee:dd:cc:bb:aa -t ip -q
 tc_check_packets "dev $swp1 ingress" 100 1
 check_err $? "packet smaller than MTU was not tunneled"

 $MZ h1-et -c 1 -p 931 -a 00:aa:bb:cc:dd:ee -b 00:ee:dd:cc:bb:aa -t ip -q
 tc_check_packets "dev $swp1 ingress" 100 1
 check_err $? "packet bigger than MTU matched nofrag (nofrag was set)"
 tc_check_packets "dev $swp1 ingress" 101 0
 check_err $? "packet bigger than MTU matched firstfrag (nofrag was set)"
 tc_check_packets "dev $swp1 ingress" 102 0
 check_err $? "packet bigger than MTU matched nofirstfrag (nofrag was set)"

 # test 'nofrag' cleared
 tc actions change action tunnel_key set src_ip 192.0.2.1 dst_ip 192.0.2.2 id 42 index 10
 $MZ h1-et -c 1 -p 931 -a 00:aa:bb:cc:dd:ee -b 00:ee:dd:cc:bb:aa -t ip -q
 tc_check_packets "dev $swp1 ingress" 100 1
 check_err $? "packet bigger than MTU matched nofrag (nofrag was unset)"
 tc_check_packets "dev $swp1 ingress" 101 1
 check_err $? "packet bigger than MTU didn't match firstfrag (nofrag was unset) "
 tc_check_packets "dev $swp1 ingress" 102 1
 check_err $? "packet bigger than MTU didn't match nofirstfrag (nofrag was unset) "

 for i in 100 101 102; do
  tc filter del dev $swp1 ingress protocol ip pref $i handle $i flower
 done
 tc filter del dev h1-et egress pref 1 handle 1 matchall

 log_test "tunnel_key nofrag ($tcflags)"
}

trap cleanup EXIT

setup_prepare
setup_wait

tests_run

tc_offload_check
if [[ $? -ne 0 ]]; then
 log_info "Could not test offloaded functionality"
else
 tcflags="skip_sw"
 tests_run
fi

exit $EXIT_STATUS

Messung V0.5
C=93 H=91 G=91

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.