|  | #!/bin/bash | 
|  | # SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | function pktgen { | 
|  | ../pktgen/pktgen_bench_xmit_mode_netif_receive.sh -i $IFC -s 64 \ | 
|  | -m 90:e2:ba:ff:ff:ff -d 192.168.0.1 -t 4 | 
|  | local dropped=`tc -s qdisc show dev $IFC | tail -3 | awk '/drop/{print $7}'` | 
|  | if [ "$dropped" == "0," ]; then | 
|  | echo "FAIL" | 
|  | else | 
|  | echo "Successfully filtered " $dropped " packets" | 
|  | fi | 
|  | } | 
|  |  | 
|  | function test { | 
|  | echo -n "Loading bpf program '$2'... " | 
|  | tc qdisc add dev $IFC clsact | 
|  | tc filter add dev $IFC ingress bpf da obj $1 sec $2 | 
|  | local status=$? | 
|  | if [ $status -ne 0 ]; then | 
|  | echo "FAIL" | 
|  | else | 
|  | echo "ok" | 
|  | pktgen | 
|  | fi | 
|  | tc qdisc del dev $IFC clsact | 
|  | } | 
|  |  | 
|  | IFC=test_veth | 
|  |  | 
|  | ip link add name $IFC type veth peer name pair_$IFC | 
|  | ip link set $IFC up | 
|  | ip link set pair_$IFC up | 
|  |  | 
|  | test ./parse_simple.o simple | 
|  | test ./parse_varlen.o varlen | 
|  | test ./parse_ldabs.o ldabs | 
|  | ip link del dev $IFC |