1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

Use uci config for routes only if setting for that is set

This commit is contained in:
Ycarus 2019-01-19 17:17:24 +01:00
parent 06ed97451f
commit e23f5f8f8b

View file

@ -116,41 +116,50 @@ interface_multipath_settings() {
[ -n "$ipaddr" ] && [ -n "$netmask" ] && netmask=`ipcalc.sh $ipaddr $netmask | sed -n '/NETMASK=/{;s/.*=//;s/ .*//;p;}'`
[ -n "$ipaddr" ] && [ -n "$netmask" ] && network=`ipcalc.sh $ipaddr $netmask | sed -n '/NETWORK=/{;s/.*=//;s/ .*//;p;}'`
fi
#ip rule del table $id > /dev/null 2>&1
#ip route flush $id > /dev/null 2>&1
uci -q batch <<-EOF >/dev/null
delete network.${config}_rule
delete network.${config}_route
delete network.${config}_route_default
commit network
EOF
if [ -n "$gateway" ] && [ -n "$network" ]; then
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
uci -q batch <<-EOF >/dev/null
delete network.${config}_rule
set network.${config}_rule=rule
set network.${config}_rule.lookup=${id}
set network.${config}_rule.priority=0
set network.${config}_rule.src="${ipaddr}/32"
delete network.${config}_route
set network.${config}_route=route
set network.${config}_route.interface=${config}
set network.${config}_route.target=${network}
set network.${config}_route.netmask=${netmask}
set network.${config}_route.table=${id}
delete network.${config}_route_default
set network.${config}_route_default=route
set network.${config}_route_default.interface=${config}
set network.${config}_route_default.target='0.0.0.0'
set network.${config}_route_default.netmask='0.0.0.0'
set network.${config}_route_default.gateway=$gateway
set network.${config}_route_default.table=${id}
commit network
EOF
#ip rule add from $ipaddr table $id pref 0
#ip route replace $network/$netmask dev $iface scope link table $id
#ip route replace default via $gateway dev $iface table $id
#ip route flush $id
else
ip rule del table $id > /dev/null 2>&1
ip route flush $id > /dev/null 2>&1
fi
if [ -n "$gateway" ] && [ -n "$network" ]; then
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
uci -q batch <<-EOF >/dev/null
delete network.${config}_rule
set network.${config}_rule=rule
set network.${config}_rule.lookup=${id}
set network.${config}_rule.priority=0
set network.${config}_rule.src="${ipaddr}/32"
set network.${config}_rule.created=mptcp
delete network.${config}_route
set network.${config}_route=route
set network.${config}_route.interface=${config}
set network.${config}_route.target=${network}
set network.${config}_route.netmask=${netmask}
set network.${config}_route.table=${id}
set network.${config}_route.created=mptcp
delete network.${config}_route_default
set network.${config}_route_default=route
set network.${config}_route_default.interface=${config}
set network.${config}_route_default.target='0.0.0.0'
set network.${config}_route_default.netmask='0.0.0.0'
set network.${config}_route_default.gateway=$gateway
set network.${config}_route_default.table=${id}
set network.${config}_route_default.created=mptcp
commit network
EOF
else
ip rule add from $ipaddr table $id pref 0
ip route replace $network/$netmask dev $iface scope link table $id
ip route replace default via $gateway dev $iface table $id
ip route flush $id
fi
config_get mode "$config" multipath "off"
[ "$mode" = "master" ] && {
@ -190,32 +199,47 @@ interface_multipath_settings() {
network6=`ipcalc $ip6addr | sed -n '/NETWORK=/{;s/.*=//;s/ .*//;p;}'`
fi
fi
#ip -6 rule del table 6$id > /dev/null 2>&1
#ip -6 route flush 6$id > /dev/null 2>&1
if [ -n "$ip6addr" ] && [ -n "$gateway6" ] && [ -n "$network6" ]; then
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
uci -q batch <<-EOF >/dev/null
delete network.${config}_rule6
set network.${config}_rule6=rule6
set network.${config}_rule6.lookup=6${id}
set network.${config}_rule6.priority=0
set network.${config}_rule6.src="${ipaddr6}/127"
delete network.${config}_route6
set network.${config}_route6=route6
set network.${config}_route6.interface=${config}
set network.${config}_route6.target=${network6}/${netmask6}
set network.${config}_route6.table=6${id}
delete network.${config}_route6_default
set network.${config}_route6_default=route6
set network.${config}_route6_default.interface=${config}
set network.${config}_route6_default.target='::'
set network.${config}_route6_default.gateway=$gateway6
set network.${config}_route6_default.table=6${id}
commit network
EOF
#ip -6 rule add from $ip6addr table 6$id pref 0
#ip -6 route replace $network6/$netmask6 dev $iface scope link table 6$id
#ip -6 route replace default via $gateway6 dev $iface table 6$id
#ip -6 route flush 6$id
else
ip -6 rule del table 6$id > /dev/null 2>&1
ip -6 route flush 6$id > /dev/null 2>&1
fi
if [ -n "$ip6addr" ] && [ -n "$gateway6" ] && [ -n "$network6" ]; then
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
uci -q batch <<-EOF >/dev/null
delete network.${config}_rule6
set network.${config}_rule6=rule6
set network.${config}_rule6.lookup=6${id}
set network.${config}_rule6.priority=0
set network.${config}_rule6.src="${ipaddr6}/127"
set network.${config}_rule6.created=mptcp
delete network.${config}_route6
set network.${config}_route6=route6
set network.${config}_route6.interface=${config}
set network.${config}_route6.target=${network6}/${netmask6}
set network.${config}_route6.table=6${id}
set network.${config}_route6.created=mptcp
delete network.${config}_route6_default
set network.${config}_route6_default=route6
set network.${config}_route6_default.interface=${config}
set network.${config}_route6_default.target='::'
set network.${config}_route6_default.gateway=$gateway6
set network.${config}_route6_default.table=6${id}
set network.${config}_route6_default.created=mptcp
commit network
EOF
else
ip -6 rule add from $ip6addr table 6$id pref 0
ip -6 route replace $network6/$netmask6 dev $iface scope link table 6$id
ip -6 route replace default via $gateway6 dev $iface table 6$id
ip -6 route flush 6$id
fi
config_get mode "$config" multipath "off"
[ "$mode" = "master" ] && {
@ -248,6 +272,10 @@ set_multipath() {
done
}
remove() {
uci -q delete network.$1
}
start_service() {
local intf=$1
local id count intfmaster
@ -257,6 +285,10 @@ start_service() {
mptcpintf=""
master=""
config_load network
config_foreach remove route
config_foreach remove route6
config_foreach remove rule
config_foreach remove rule6
config_foreach interface_multipath_settings interface $intf
set_multipath
# If no master is defined, one interface is defined as master