]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/networking/templates/default/nftables.erb
Centralise enablement of backports
[chef.git] / cookbooks / networking / templates / default / nftables.erb
index 778e57a218768fb84fe03ba4c343b8ad7fddc4d7..363e846565253191c03f50aa160cc9d02192e74a 100644 (file)
@@ -24,8 +24,8 @@ block() {
   for address in "$@"
   do
     case "$address" in
-      *.*) /usr/sbin/nft add element inet chef-filter ip-blocklist "{ $address }";;
-      *:*) /usr/sbin/nft add element inet chef-filter ip6-blocklist "{ $address }";;
+      *.*) /usr/sbin/nft --check add element inet chef-filter ip-blocklist "{ $address }" && /usr/sbin/nft add element inet chef-filter ip-blocklist "{ $address }" ;;
+      *:*) /usr/sbin/nft --check add element inet chef-filter ip6-blocklist "{ $address }" && /usr/sbin/nft add element inet chef-filter ip6-blocklist "{ $address }" ;;
     esac
   done
 }
@@ -34,12 +34,17 @@ unblock() {
   for address in "$@"
   do
     case "$address" in
-      *.*) /usr/sbin/nft delete element inet chef-filter ip-blocklist "{ $address }";;
-      *:*) /usr/sbin/nft delete element inet chef-filter ip6-blocklist "{ $address }";;
+      *.*) /usr/sbin/nft --check delete element inet chef-filter ip-blocklist "{ $address }" && /usr/sbin/nft delete element inet chef-filter ip-blocklist "{ $address }" ;;
+      *:*) /usr/sbin/nft --check delete element inet chef-filter ip6-blocklist "{ $address }" && /usr/sbin/nft delete element inet chef-filter ip6-blocklist "{ $address }" ;;
     esac
   done
 }
 
+flush() {
+  /usr/sbin/nft --check flush set inet chef-filter ip-blocklist && /usr/sbin/nft flush set inet chef-filter ip-blocklist
+  /usr/sbin/nft --check flush set inet chef-filter ip6-blocklist && /usr/sbin/nft flush set inet chef-filter ip6-blocklist
+}
+
 command=$1
 shift
 
@@ -49,6 +54,7 @@ case "$command" in
   reload) reload;;
   block) block "$@";;
   unblock) unblock "$@";;
+  flush) flush;;
 esac
 
 exit 0