Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  tc_flower_cfm.sh   Sprache: Shell

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

ALL_TESTS="match_cfm_opcode match_cfm_level match_cfm_level_and_opcode"
NUM_NETIFS=2
source tc_common.sh
source lib.sh

h1_create()
{
 simple_if_init $h1
}

h1_destroy()
{
 simple_if_fini $h1
}

h2_create()
{
 simple_if_init $h2
 tc qdisc add dev $h2 clsact
}

h2_destroy()
{
 tc qdisc del dev $h2 clsact
 simple_if_fini $h2
}

u8_to_hex()
{
 local u8=$1; shift

 printf "%02x" $u8
}

generate_cfm_hdr()
{
 local mdl=$1; shift
 local op=$1; shift
 local flags=$1; shift
 local tlv_offset=$1; shift

 local cfm_hdr=$(:
                )"$(u8_to_hex $((mdl << 5))):"$(  : MD level and Version
                )"$(u8_to_hex $op):"$(   : OpCode
                )"$(u8_to_hex $flags):"$(  : Flags
                )"$(u8_to_hex $tlv_offset)"$(  : TLV offset
                )

 echo $cfm_hdr
}

match_cfm_opcode()
{
 local ethtype="89 02"; readonly ethtype
 RET=0

 tc filter add dev $h2 ingress protocol cfm pref 1 handle 101 \
    flower cfm op 47 action drop
 tc filter add dev $h2 ingress protocol cfm pref 1 handle 102 \
    flower cfm op 43 action drop

 pkt="$ethtype $(generate_cfm_hdr 7 47 0 32)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
 pkt="$ethtype $(generate_cfm_hdr 6 5 0 4)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

 tc_check_packets "dev $h2 ingress" 101 1
 check_err $? "Did not match on correct opcode"

 tc_check_packets "dev $h2 ingress" 102 0
 check_err $? "Matched on the wrong opcode"

 pkt="$ethtype $(generate_cfm_hdr 0 43 0 12)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

 tc_check_packets "dev $h2 ingress" 101 1
 check_err $? "Matched on the wrong opcode"

 tc_check_packets "dev $h2 ingress" 102 1
 check_err $? "Did not match on correct opcode"

 tc filter del dev $h2 ingress protocol cfm pref 1 handle 101 flower
 tc filter del dev $h2 ingress protocol cfm pref 1 handle 102 flower

 log_test "CFM opcode match test"
}

match_cfm_level()
{
 local ethtype="89 02"; readonly ethtype
 RET=0

 tc filter add dev $h2 ingress protocol cfm pref 1 handle 101 \
    flower cfm mdl 5 action drop
 tc filter add dev $h2 ingress protocol cfm pref 1 handle 102 \
    flower cfm mdl 3 action drop
 tc filter add dev $h2 ingress protocol cfm pref 1 handle 103 \
    flower cfm mdl 0 action drop

 pkt="$ethtype $(generate_cfm_hdr 5 42 0 12)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
 pkt="$ethtype $(generate_cfm_hdr 6 1 0 70)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
 pkt="$ethtype $(generate_cfm_hdr 0 1 0 70)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

 tc_check_packets "dev $h2 ingress" 101 1
 check_err $? "Did not match on correct level"

 tc_check_packets "dev $h2 ingress" 102 0
 check_err $? "Matched on the wrong level"

 tc_check_packets "dev $h2 ingress" 103 1
 check_err $? "Did not match on correct level"

 pkt="$ethtype $(generate_cfm_hdr 3 0 0 4)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

 tc_check_packets "dev $h2 ingress" 101 1
 check_err $? "Matched on the wrong level"

 tc_check_packets "dev $h2 ingress" 102 1
 check_err $? "Did not match on correct level"

 tc_check_packets "dev $h2 ingress" 103 1
 check_err $? "Matched on the wrong level"

 tc filter del dev $h2 ingress protocol cfm pref 1 handle 101 flower
 tc filter del dev $h2 ingress protocol cfm pref 1 handle 102 flower
 tc filter del dev $h2 ingress protocol cfm pref 1 handle 103 flower

 log_test "CFM level match test"
}

match_cfm_level_and_opcode()
{
 local ethtype="89 02"; readonly ethtype
 RET=0

 tc filter add dev $h2 ingress protocol cfm pref 1 handle 101 \
    flower cfm mdl 5 op 41 action drop
 tc filter add dev $h2 ingress protocol cfm pref 1 handle 102 \
    flower cfm mdl 7 op 42 action drop

 pkt="$ethtype $(generate_cfm_hdr 5 41 0 4)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
 pkt="$ethtype $(generate_cfm_hdr 7 3 0 4)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
 pkt="$ethtype $(generate_cfm_hdr 3 42 0 12)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

 tc_check_packets "dev $h2 ingress" 101 1
 check_err $? "Did not match on correct level and opcode"

 tc_check_packets "dev $h2 ingress" 102 0
 check_err $? "Matched on the wrong level and opcode"

 pkt="$ethtype $(generate_cfm_hdr 7 42 0 12)"
 $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

 tc_check_packets "dev $h2 ingress" 101 1
 check_err $? "Matched on the wrong level and opcode"

 tc_check_packets "dev $h2 ingress" 102 1
 check_err $? "Did not match on correct level and opcode"

 tc filter del dev $h2 ingress protocol cfm pref 1 handle 101 flower
 tc filter del dev $h2 ingress protocol cfm pref 1 handle 102 flower

 log_test "CFM opcode and level match test"
}

setup_prepare()
{
 h1=${NETIFS[p1]}
 h2=${NETIFS[p2]}
 h1mac=$(mac_get $h1)
 h2mac=$(mac_get $h2)

 vrf_prepare

 h1_create
 h2_create
}

cleanup()
{
 pre_cleanup

 h2_destroy
 h1_destroy

 vrf_cleanup
}

trap cleanup EXIT

setup_prepare
setup_wait

tests_run

exit $EXIT_STATUS

Messung V0.5
C=95 H=95 G=94

¤ Dauer der Verarbeitung: 0.4 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge