Default to parse-options because some people like `ping -R`
[flowspec-xdp] / install.sh
index d93664c4146c92015f0d6b07b40e5a6e3467fd34..66ea534e0e9c41e64b87f00df40f7e0fc77ad691 100755 (executable)
@@ -1,11 +1,11 @@
 #!/bin/bash
 set -e
 
-RULES="$(birdc show route table flowspec4)
-$(birdc show route table flowspec6)"
+RULES="$(birdc show route table flowspec4 primary all)
+$(birdc show route table flowspec6 primary all)"
 
-echo "$RULES" | ./genrules.py --8021q=drop-vlan --v6frag=ignore-parse-if-rule --ihl=drop-options
-clang -std=c99 -pedantic -Wall -Wextra -Wno-pointer-arith -Wno-unused-variable -Os -emit-llvm -c xdp.c -o - | llc -march=bpf -filetype=obj -o xdp
+echo "$RULES" | ./genrules.py --8021q=drop-vlan --v6frag=ignore-parse-if-rule --ihl=parse-options
+clang -g -std=c99 -pedantic -Wall -Wextra -Wno-pointer-arith -Wno-unused-variable -O3 -emit-llvm -c xdp.c -o - | llc -O3 -march=bpf -filetype=obj -o xdp
 
 echo "Before unload drop count was:"
 ./dropcount.sh || echo "Not loaded"
@@ -13,4 +13,9 @@ echo "Before unload drop count was:"
 ip link set "$1" xdp off
 ip link set "$1" xdpgeneric off
 # Note that sometimes the automated fallback does not work properly so we have to || generic here
-ip link set "$1" xdp obj xdp sec xdp_drop || ip link set "$1" xdpgeneric obj xdp sec xdp_drop
+ip link set "$1" xdpoffload obj xdp sec xdp_drop || (
+       echo "Failed to install in NIC, testing in driver..." && ip link set "$1" xdpdrv obj xdp sec xdp_drop || (
+               echo "Failed to install in driver, using generic..." && ip link set "$1" xdpgeneric obj xdp sec xdp_drop
+       )
+)
+echo "$RULES" | grep "^flow. {" > installed-rules.txt