summaryrefslogtreecommitdiff
path: root/net-firewall/nftables/files/nftables.init-r1
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-11-25 22:39:15 +0000
committerV3n3RiX <venerix@redcorelinux.org>2020-11-25 22:39:15 +0000
commitd934827bf44b7cfcf6711964418148fa60877668 (patch)
tree0625f358789b5e015e49db139cc1dbc9be00428f /net-firewall/nftables/files/nftables.init-r1
parent2e34d110f164bf74d55fced27fe0000201b3eec5 (diff)
gentoo resync : 25.11.2020
Diffstat (limited to 'net-firewall/nftables/files/nftables.init-r1')
-rw-r--r--net-firewall/nftables/files/nftables.init-r1154
1 files changed, 89 insertions, 65 deletions
diff --git a/net-firewall/nftables/files/nftables.init-r1 b/net-firewall/nftables/files/nftables.init-r1
index 45b2abdbda77..60f1632f4551 100644
--- a/net-firewall/nftables/files/nftables.init-r1
+++ b/net-firewall/nftables/files/nftables.init-r1
@@ -1,105 +1,129 @@
#!/sbin/openrc-run
+# Copyright 2014-2017 Nicholas Vinson
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-extra_commands="check clear list panic save soft_panic"
+extra_commands="clear list panic save"
extra_started_commands="reload"
-
depend() {
need localmount #434774
before net
}
-checkkernel() {
- if ! /sbin/nft list ruleset >/dev/null 2>/dev/null ; then
- eerror "Your kernel lacks nftables support, please load"
- eerror "appropriate modules and try again."
- return 1
- fi
- return 0
+_nftables() {
+ export NFTABLES_SAVE SAVE_OPTIONS
+ /usr/libexec/nftables/nftables.sh "${@}"
}
-checkconfig() {
- if [ -z "${NFTABLES_SAVE}" -o ! -f "${NFTABLES_SAVE}" ] ; then
- eerror "Not starting nftables. First create some rules then run:"
- eerror "/etc/init.d/${SVCNAME} save"
- return 1
- fi
+start_pre() {
+ checkkernel || return 1
+ checkconfig || return 1
return 0
}
-start_pre() {
- checkconfig || return 1
- checkkernel || return 1
- check || return 1
+clear() {
+ _nftables clear || return 1
+ return 0
}
-start() {
- ebegin "Loading ${SVCNAME} state and starting firewall"
- /usr/libexec/nftables/nftables.sh load "${NFTABLES_SAVE}"
- eend $?
+list() {
+ _nftables list || return 1
+ return 0
}
-stop() {
- if [ "${SAVE_ON_STOP}" = "yes" ] ; then
- save || return 1
+panic() {
+ checkkernel || return 1
+ if service_started "${RC_SVCNAME}"; then
+ rc-service "${RC_SVCNAME}" stop
fi
- ebegin "Stopping firewall"
- if [ "${PANIC_ON_STOP}" = "hard" ]; then
- /usr/libexec/nftables/nftables.sh panic
- elif [ "${PANIC_ON_STOP}" = "soft" ]; then
- /usr/libexec/nftables/nftables.sh soft_panic
- else
- /usr/libexec/nftables/nftables.sh clear
+ ebegin "Dropping all packets"
+ clear
+ if nft create table ip filter >/dev/null 2>&1; then
+ nft -f /dev/stdin <<-EOF
+ table ip filter {
+ chain input {
+ type filter hook input priority 0;
+ drop
+ }
+ chain forward {
+ type filter hook forward priority 0;
+ drop
+ }
+ chain output {
+ type filter hook output priority 0;
+ drop
+ }
+ }
+ EOF
+ fi
+ if nft create table ip6 filter >/dev/null 2>&1; then
+ nft -f /dev/stdin <<-EOF
+ table ip6 filter {
+ chain input {
+ type filter hook input priority 0;
+ drop
+ }
+ chain forward {
+ type filter hook forward priority 0;
+ drop
+ }
+ chain output {
+ type filter hook output priority 0;
+ drop
+ }
+ }
+ EOF
fi
- eend $?
}
reload() {
- start_pre || return 1
+ checkkernel || return 1
+ ebegin "Flushing firewall"
+ clear
start
}
-clear() {
- ebegin "Clearing rules"
- /usr/libexec/nftables/nftables.sh clear
- eend $?
+save() {
+ ebegin "Saving nftables state"
+ checkpath -q -d "$(dirname "${NFTABLES_SAVE}")"
+ checkpath -q -m 0600 -f "${NFTABLES_SAVE}"
+ export SAVE_OPTIONS
+ _nftables store "${NFTABLES_SAVE}"
+ return $?
}
-list() {
- /usr/libexec/nftables/nftables.sh list
+start() {
+ ebegin "Loading nftables state and starting firewall"
+ clear
+ _nftables load "${NFTABLES_SAVE}"
+ eend ${?}
}
-check() {
- ebegin "Checking rules"
- /usr/libexec/nftables/nftables.sh check "${NFTABLES_SAVE}"
- eend $?
-}
+stop() {
+ if yesno "${SAVE_ON_STOP:-yes}"; then
+ save || return 1
+ fi
-save() {
- ebegin "Saving ${SVCNAME} state"
- checkpath -q -d "$(dirname "${NFTABLES_SAVE}")"
- checkpath -q -m 0600 -f "${NFTABLES_SAVE}"
- SAVE_OPTIONS="${SAVE_OPTIONS}" \
- /usr/libexec/nftables/nftables.sh store "${NFTABLES_SAVE}"
- eend $?
+ ebegin "Stopping firewall"
+ clear
+ eend ${?}
}
-panic() {
- if service_started ${SVCNAME}; then
- rc-service ${SVCNAME} zap
+checkconfig() {
+ if [ ! -f "${NFTABLES_SAVE}" ]; then
+ eerror "Not starting nftables. First create some rules then run:"
+ eerror "rc-service nftables save"
+ return 1
fi
- ebegin "Dropping all packets"
- /usr/libexec/nftables/nftables.sh panic
- eend $?
+ return 0
}
-soft_panic() {
- if service_started ${SVCNAME}; then
- rc-service ${SVCNAME} zap
+checkkernel() {
+ if ! nft list tables >/dev/null 2>&1; then
+ eerror "Your kernel lacks nftables support, please load"
+ eerror "appropriate modules and try again."
+ return 1
fi
- ebegin "Dropping new connections"
- /usr/libexec/nftables/nftables.sh soft_panic
- eend $?
+ return 0
}