Compare commits

...

1 Commits

Author SHA1 Message Date
Johannes Kimmel 0104373444 fff-layer3-config: add rules for router_ip
This forces routes for packets originating from a router_ip to be looked
up in the fff table.  If the router_ips don't happen to be included in
the client network's subnet, the decision defaults to a main table
lookup.  This causes packets to choose the wrong interface.

This patch forces packets from a router_ip to be routed via the fff table.

Fixes #175

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
2021-11-29 20:30:05 +01:00
1 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,5 @@
. /lib/functions.sh
configure() {
local router_ip
local router_ip6
@ -9,16 +11,46 @@ configure() {
# remove netmask entry that ships by default
uci -q del network.loopback.netmask
# clean old rules
remove_rules() {
local name="$1"
# check if filter was added by this script
if ! [ "$(uci -q get network.$name.addedbyautoconfig)" = '30-network-routerip' ]; then
return
fi
uci -q del network.$name
}
config_load network
config_foreach remove_rules rule
config_foreach remove_rules rule6
# add router_ip
router_ip=$(uci -q get gateway.meta.router_ip)
for ip in $router_ip; do
uci -q add_list network.loopback.ipaddr="$ip"
config=$(uci add network rule)
uci -q set network.$config.src="$ip"
uci -q set network.$config.lookup='fff'
# default prio for the ip4table interface option is 10000
uci -q set network.$config.priority='10000'
uci -q set network.$config.addedbyautoconfig='30-network-routerip'
done
# add router_ip6
router_ip6=$(uci -q get gateway.meta.router_ip6)
for ip in $router_ip6; do
uci -q add_list network.loopback.ip6addr="$ip"
config=$(uci add network rule6)
uci -q set network.$config.src="$ip"
uci -q set network.$config.lookup='fff'
# default prio for the ip6table interface option is 10000
uci -q set network.$config.priority='10000'
uci -q set network.$config.addedbyautoconfig='30-network-routerip'
done
}