* The makefile produces the nft and iptables capable `pbr` package and the `pbr-iptables` package for legacy setups * This replaces `vpnbypass` and `vpn-policy-routing` packages * I'm soliciting feedback on this package and my intention is to update the version to 1.0.0 before this is merged, but I need the feedback on this and luci-app-pbr before then. Signed-off-by: Stan Grishin <stangri@melmac.ca>
58 lines
1.7 KiB
Bash
58 lines
1.7 KiB
Bash
#!/bin/sh
|
|
# shellcheck disable=SC1091,SC3037,SC3043
|
|
|
|
readonly packageName='pbr'
|
|
readonly __OK__='\033[0;32m[\xe2\x9c\x93]\033[0m'
|
|
|
|
pbr_iface_setup() {
|
|
local iface="${1}"
|
|
local proto
|
|
config_get proto "${iface}" proto
|
|
case "${iface}" in
|
|
(lan|loopback) return 0 ;;
|
|
esac
|
|
case "${proto}" in
|
|
(gre*|nebula|relay|vti*|vxlan|xfrm) return 0 ;;
|
|
(none)
|
|
uci -q set "network.${iface}_rt=route"
|
|
uci -q set "network.${iface}_rt.interface=${iface}"
|
|
uci -q set "network.${iface}_rt.target=0.0.0.0/0"
|
|
uci -q set "network.${iface}_rt6=route6"
|
|
uci -q set "network.${iface}_rt6.interface=${iface}"
|
|
uci -q set "network.${iface}_rt6.target=::/0"
|
|
;;
|
|
esac
|
|
echo -en "Setting up ${packageName} routing tables for ${iface}... "
|
|
uci -q set "network.${iface}.ip4table=${packageName}_${iface%6}"
|
|
uci -q set "network.${iface}.ip6table=${packageName}_${iface%6}"
|
|
if ! grep -q -E -e "^[0-9]+\s+${packageName}_${iface%6}$" /etc/iproute2/rt_tables; then
|
|
sed -i -e "\$a $(($(sort -r -n /etc/iproute2/rt_tables | grep -o -E -m 1 "^[0-9]+")+1))\t${packageName}_${iface%6}" \
|
|
/etc/iproute2/rt_tables
|
|
fi
|
|
echo -e "${__OK__}"
|
|
}
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/network.sh
|
|
config_load network
|
|
config_foreach pbr_iface_setup interface
|
|
network_flush_cache
|
|
network_find_wan iface
|
|
network_find_wan6 iface6
|
|
# shellcheck disable=SC2154
|
|
[ -n "$iface" ] && uci -q batch << EOF
|
|
set network.default='rule'
|
|
set network.default.lookup='${packageName}_${iface%6}'
|
|
set network.default.priority='80000'
|
|
EOF
|
|
[ -n "$iface6" ] && uci -q batch << EOF
|
|
set network.default6='rule6'
|
|
set network.default6.lookup='${packageName}_${iface6%6}'
|
|
set network.default6.priority='80000'
|
|
EOF
|
|
uci commit network
|
|
echo -en "Restarting network... "
|
|
/etc/init.d/network restart
|
|
echo -e "${__OK__}"
|
|
|
|
exit 0
|