mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-30 05:50:53 +03:00
65 lines
929 B
Bash
65 lines
929 B
Bash
linux_ipt_avail()
|
|
{
|
|
exists iptables && exists ip6tables
|
|
}
|
|
linux_maybe_iptables_fwtype()
|
|
{
|
|
linux_ipt_avail && FWTYPE=iptables
|
|
}
|
|
linux_nft_avail()
|
|
{
|
|
exists nft
|
|
}
|
|
linux_fwtype()
|
|
{
|
|
[ -n "$FWTYPE" ] && return
|
|
|
|
FWTYPE=unsupported
|
|
|
|
linux_get_subsys
|
|
if [ "$SUBSYS" = openwrt ] ; then
|
|
# linux kernel is new enough if fw4 is there
|
|
if [ -x /sbin/fw4 ] && linux_nft_avail ; then
|
|
FWTYPE=nftables
|
|
else
|
|
linux_maybe_iptables_fwtype
|
|
fi
|
|
else
|
|
SUBSYS=
|
|
# generic linux
|
|
# flowtable is implemented since kernel 4.16
|
|
if linux_nft_avail && linux_min_version 4 16; then
|
|
FWTYPE=nftables
|
|
else
|
|
linux_maybe_iptables_fwtype
|
|
fi
|
|
fi
|
|
|
|
export FWTYPE
|
|
}
|
|
|
|
get_fwtype()
|
|
{
|
|
[ -n "$FWTYPE" ] && return
|
|
|
|
local UNAME="$(uname)"
|
|
|
|
case "$UNAME" in
|
|
Linux)
|
|
linux_fwtype
|
|
;;
|
|
FreeBSD)
|
|
if exists ipfw ; then
|
|
FWTYPE=ipfw
|
|
else
|
|
FWTYPE=unsupported
|
|
fi
|
|
;;
|
|
*)
|
|
FWTYPE=unsupported
|
|
;;
|
|
esac
|
|
|
|
export FWTYPE
|
|
}
|