Clean up length checks with a macro and comment strange semantics
[flowspec-xdp] / dropcount.sh
1 #!/bin/bash
2 function PRINTCNT() {
3 if [ "$KEY" != "" ]; then
4         if [ "$KEY" = "0x00000000" ]; then
5                 echo "Invalid packet length: $CNT"
6         elif [ "$KEY" = "0x00000001" ]; then
7                 echo "Invalid VLAN tag: $CNT"
8         elif [ "$KEY" = "0x00000002" ]; then
9                 echo "Invalid/rejected IHL IPv4 field: $CNT"
10         elif [ "$KEY" = "0x00000003" ]; then
11                 echo "Rejected IPv6 fragments: $CNT"
12         else
13                 echo "$KEY: $CNT"
14         fi
15 fi
16 CNT=0
17 }
18 bpftool map show | grep drop_cnt_map | awk '{ print $1 }' | tr -d ':' | while read IF; do
19         bpftool map dump id "$IF" | {
20                 KEY=""
21                 CNT=0
22                 while read LINE; do
23                         case "$LINE" in
24                                 "key:") ;;
25                                 "value"*)
26                                         CNT=$(( $CNT + $(echo "$LINE" | awk '{ print "0x" $11 $10 $9 $8 $7 $6 $5 $4 }') ))
27                                         ;;
28                                 "Found "*) ;;
29                                 *)
30                                         PRINTCNT
31                                         KEY=$(echo "$LINE" | awk '{ print "0x" $4 $3 $2 $1 }')
32                                         ;;
33                         esac
34                 done
35                 PRINTCNT
36         }
37 done