#!/bin/sh # shellcheck disable=SC3037,SC3043 readonly pbrFunctionsFile='/etc/init.d/pbr' if [ -s "$pbrFunctionsFile" ]; then # shellcheck source=../../etc/init.d/pbr . "$pbrFunctionsFile" else printf "%b: pbr init.d file (%s) not found! \n" '\033[0;31mERROR\033[0m' "$pbrFunctionsFile" fi # shellcheck disable=SC2317 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_add network route "${iface}_rt" uci_set network "${iface}_rt" interface "${iface}" uci_set network "${iface}_rt" target '0.0.0.0/0' uci_add route6 network "${iface}_rt6" uci_set network "${iface}_rt6" interface "${iface}" uci_set network "${iface}_rt6" target '::/0' ;; esac echo -en "Setting up ${packageName} routing tables for ${iface}... " uci_set 'network' "${iface}" 'ip4table' "${packageName}_${iface%6}" uci_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__}" } 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