core/nftables/nftables.init

55 lines
882 B
Bash

#!/bin/sh
#
# /etc/rc.d/nftables: start/stop nftables
#
PROG=/usr/bin/nft
CONF=/etc/nftables.nft
LOADOPTS="-f"
SHOWOPTS="-s list ruleset"
RESETRULES="flush ruleset"
_store() {
umask 022
NFTABLES_STORE=${1:-$CONF}
tmp_save="${NFTABLES_STORE}.tmp"
$PROG $SHOWOPTS > "$tmp_save"
retval=$?
if [ ${retval} ]; then
mv "${tmp_save}" "${NFTABLES_STORE}"
fi
unset NFTABLES_STORE tmp_save retval
}
case $1 in
start)
$PROG $LOADOPTS $CONF
;;
stop)
$PROG "$RESETRULES"
;;
restart)
$0 stop
$0 start
;;
status)
if [ "$($PROG $SHOWOPTS | head -c1 | wc -c )" -ne 0 ]; then
printf '%s\n' \
"Some rules are loaded, view them with \"$PROG $SHOWOPTS\"."
else
printf '%s\n' "There are no rules loaded!"
fi
;;
show)
$PROG $SHOWOPTS
;;
store)
_store "$2"
;;
*)
echo "Usage: $0 [start|stop|restart|status|show|store]"
;;
esac
# End of file