mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Fix static routes settings
This commit is contained in:
parent
ccd111bd90
commit
f8181f687c
1 changed files with 55 additions and 3 deletions
|
@ -74,6 +74,7 @@ interface_multipath_settings() {
|
||||||
[ "$enabled" = "0" ] && return 0
|
[ "$enabled" = "0" ] && return 0
|
||||||
[ -n "$intf" ] && [ "$iface" != "$intf" ] && return 0
|
[ -n "$intf" ] && [ "$iface" != "$intf" ] && return 0
|
||||||
[ -z "$iface" ] && return 0
|
[ -z "$iface" ] && return 0
|
||||||
|
[ "$config" = "omrvpn" ] && return 0
|
||||||
[ -n "$(ifconfig | grep $iface)" ] || return 0
|
[ -n "$(ifconfig | grep $iface)" ] || return 0
|
||||||
[ "$(echo $iface | grep _dev)" != "" ] && return 0
|
[ "$(echo $iface | grep _dev)" != "" ] && return 0
|
||||||
multipath "$iface" "$mode"
|
multipath "$iface" "$mode"
|
||||||
|
@ -94,7 +95,7 @@ interface_multipath_settings() {
|
||||||
config_get ipaddr $config ipaddr
|
config_get ipaddr $config ipaddr
|
||||||
config_get gateway $config gateway
|
config_get gateway $config gateway
|
||||||
config_get netmask $config netmask
|
config_get netmask $config netmask
|
||||||
[ -n "$ipaddr" ] && [ -n "$netmask" ] && netmask=`ipcalc.sh $ipaddr $netmask | sed -n '/NETMASK=/{;s/.*=//;s/ .*//;p;}'`
|
[ -n "$ipaddr" ] && [ -n "$netmask" ] && netmask=`ipcalc.sh $ipaddr $netmask | sed -n '/PREFIX=/{;s/.*=//;s/ .*//;p;}'`
|
||||||
[ -n "$îpaddr" ] && [ -n "$netmask" ] && network=`ipcalc.sh $ipaddr $netmask | sed -n '/NETWORK=/{;s/.*=//;s/ .*//;p;}'`
|
[ -n "$îpaddr" ] && [ -n "$netmask" ] && network=`ipcalc.sh $ipaddr $netmask | sed -n '/NETWORK=/{;s/.*=//;s/ .*//;p;}'`
|
||||||
else
|
else
|
||||||
network_get_ipaddr ipaddr $config
|
network_get_ipaddr ipaddr $config
|
||||||
|
@ -116,7 +117,7 @@ interface_multipath_settings() {
|
||||||
[ -n "$netmask" ] && [ "$(echo $netmask | grep '/')" != "" ] && netmask=""
|
[ -n "$netmask" ] && [ "$(echo $netmask | grep '/')" != "" ] && netmask=""
|
||||||
[ -z "$netmask" ] && netmask=$(ip -4 addr show dev $iface | grep peer | awk '{print $4}' | cut -d/ -f2 | tr -d "\n")
|
[ -z "$netmask" ] && netmask=$(ip -4 addr show dev $iface | grep peer | awk '{print $4}' | cut -d/ -f2 | tr -d "\n")
|
||||||
[ -z "$netmask" ] && netmask=$(ip -4 addr show dev $iface | grep inet | awk '{print $2}' | cut -d/ -f2 | tr -d "\n")
|
[ -z "$netmask" ] && netmask=$(ip -4 addr show dev $iface | grep inet | awk '{print $2}' | cut -d/ -f2 | tr -d "\n")
|
||||||
[ -n "$ipaddr" ] && [ -n "$netmask" ] && netmask=`ipcalc.sh $ipaddr $netmask | sed -n '/NETMASK=/{;s/.*=//;s/ .*//;p;}'`
|
[ -n "$ipaddr" ] && [ -n "$netmask" ] && netmask=`ipcalc.sh $ipaddr $netmask | sed -n '/PREFIX=/{;s/.*=//;s/ .*//;p;}'`
|
||||||
[ -n "$ipaddr" ] && [ -n "$netmask" ] && network=`ipcalc.sh $ipaddr $netmask | sed -n '/NETWORK=/{;s/.*=//;s/ .*//;p;}'`
|
[ -n "$ipaddr" ] && [ -n "$netmask" ] && network=`ipcalc.sh $ipaddr $netmask | sed -n '/NETWORK=/{;s/.*=//;s/ .*//;p;}'`
|
||||||
fi
|
fi
|
||||||
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
|
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
|
||||||
|
@ -158,15 +159,18 @@ interface_multipath_settings() {
|
||||||
commit network
|
commit network
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
|
#echo "Add routes for $ipaddr table $id"
|
||||||
ip rule add from $ipaddr table $id pref 0
|
ip rule add from $ipaddr table $id pref 0
|
||||||
|
ip route replace $network/$netmask dev $iface scope link metric $id
|
||||||
ip route replace $network/$netmask dev $iface scope link table $id
|
ip route replace $network/$netmask dev $iface scope link table $id
|
||||||
ip route replace default via $gateway dev $iface table $id
|
ip route replace default via $gateway dev $iface table $id
|
||||||
ip route replace default via $gateway dev $iface metric $id
|
ip route replace default via $gateway dev $iface metric $id
|
||||||
ip route flush $id
|
#ip route flush $id
|
||||||
fi
|
fi
|
||||||
|
|
||||||
config_get mode "$config" multipath "off"
|
config_get mode "$config" multipath "off"
|
||||||
[ "$mode" = "master" ] && {
|
[ "$mode" = "master" ] && {
|
||||||
|
#echo "ip route replace default via $gateway dev $iface"
|
||||||
ip route replace default via $gateway dev $iface
|
ip route replace default via $gateway dev $iface
|
||||||
}
|
}
|
||||||
[ "$mode" = "off" ] && {
|
[ "$mode" = "off" ] && {
|
||||||
|
@ -277,6 +281,47 @@ set_multipath() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
add_route() {
|
||||||
|
config_get target "$1" target
|
||||||
|
routeset="$target"
|
||||||
|
config_get netmask "$1" netmask
|
||||||
|
[ -n "$ipaddr" ] && [ -n "$netmask" ] && {
|
||||||
|
netmask=`ipcalc.sh $ipaddr $netmask | sed -n '/PREFIX=/{;s/.*=//;s/ .*//;p;}'`
|
||||||
|
routeset="$routeset/$netmask"
|
||||||
|
}
|
||||||
|
config_get gateway "$1" gateway
|
||||||
|
[ -n "$gateway" ] && routeset="$routeset via $gateway"
|
||||||
|
config_get metric "$1" metric
|
||||||
|
[ -n "$metric" ] && routeset="$routeset metric $metric"
|
||||||
|
config_get mtu "$1" mtu
|
||||||
|
[ -n "$mtu" ] && routeset="$routeset mtu $mtu"
|
||||||
|
config_get type "$1"
|
||||||
|
[ -n "$type" ] && routeset="$routeset type $type"
|
||||||
|
config_get interface "$1" interface
|
||||||
|
iface=$(ifstatus "$interface" | jsonfilter -q -e '@["l3_device"]')
|
||||||
|
routeset="$routeset dev $iface"
|
||||||
|
logger -t "MPTCP" "Add route $routeset"
|
||||||
|
ip route replace $routeset
|
||||||
|
}
|
||||||
|
|
||||||
|
add_route6() {
|
||||||
|
config_get target "$1" target
|
||||||
|
routeset="$target"
|
||||||
|
config_get gateway "$1" gateway
|
||||||
|
[ -n "$gateway" ] && routeset="$routeset via $gateway"
|
||||||
|
config_get metric "$1" metric
|
||||||
|
[ -n "$metric" ] && routeset="$routeset metric $metric"
|
||||||
|
config_get mtu "$1" mtu
|
||||||
|
[ -n "$mtu" ] && routeset="$routeset mtu $mtu"
|
||||||
|
config_get type "$1"
|
||||||
|
[ -n "$type" ] && routeset="$routeset type $type"
|
||||||
|
config_get interface "$1" interface
|
||||||
|
iface=$(ifstatus "$interface" | jsonfilter -q -e '@["l3_device"]')
|
||||||
|
routeset="$routeset dev $iface"
|
||||||
|
logger -t "MPTCP" "Add IPv6 route $routeset"
|
||||||
|
ip -6 route replace $routeset
|
||||||
|
}
|
||||||
|
|
||||||
remove() {
|
remove() {
|
||||||
uci -q delete network.$1
|
uci -q delete network.$1
|
||||||
}
|
}
|
||||||
|
@ -294,8 +339,15 @@ start_service() {
|
||||||
#config_foreach remove route6
|
#config_foreach remove route6
|
||||||
#config_foreach remove rule
|
#config_foreach remove rule
|
||||||
#config_foreach remove rule6
|
#config_foreach remove rule6
|
||||||
|
[ -z "$intf" ] && [ -n "$(uci -q get network.@route[-1])" ] && {
|
||||||
|
logger -t "MPTCP" "Flush main table"
|
||||||
|
ip route flush table main
|
||||||
|
ip -6 route flush table main
|
||||||
|
}
|
||||||
config_foreach interface_multipath_settings interface $intf
|
config_foreach interface_multipath_settings interface $intf
|
||||||
set_multipath
|
set_multipath
|
||||||
|
config_foreach add_route route
|
||||||
|
config_foreach add_route route6
|
||||||
# If no master is defined, one interface is defined as master
|
# If no master is defined, one interface is defined as master
|
||||||
if [ "$master" = "" ]; then
|
if [ "$master" = "" ]; then
|
||||||
intfmaster="$(echo $mptcpintf | cut -d' ' -f1 | tr -d '\n')"
|
intfmaster="$(echo $mptcpintf | cut -d' ' -f1 | tr -d '\n')"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue