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
|
||||
[ -n "$intf" ] && [ "$iface" != "$intf" ] && return 0
|
||||
[ -z "$iface" ] && return 0
|
||||
[ "$config" = "omrvpn" ] && return 0
|
||||
[ -n "$(ifconfig | grep $iface)" ] || return 0
|
||||
[ "$(echo $iface | grep _dev)" != "" ] && return 0
|
||||
multipath "$iface" "$mode"
|
||||
|
@ -94,7 +95,7 @@ interface_multipath_settings() {
|
|||
config_get ipaddr $config ipaddr
|
||||
config_get gateway $config gateway
|
||||
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;}'`
|
||||
else
|
||||
network_get_ipaddr ipaddr $config
|
||||
|
@ -116,7 +117,7 @@ interface_multipath_settings() {
|
|||
[ -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 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;}'`
|
||||
fi
|
||||
if [ "$(uci -q get openmptcprouter.settings.uci_route)" = "1" ]; then
|
||||
|
@ -158,15 +159,18 @@ interface_multipath_settings() {
|
|||
commit network
|
||||
EOF
|
||||
else
|
||||
#echo "Add routes for $ipaddr table $id"
|
||||
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 default via $gateway dev $iface table $id
|
||||
ip route replace default via $gateway dev $iface metric $id
|
||||
ip route flush $id
|
||||
#ip route flush $id
|
||||
fi
|
||||
|
||||
config_get mode "$config" multipath "off"
|
||||
[ "$mode" = "master" ] && {
|
||||
#echo "ip route replace default via $gateway dev $iface"
|
||||
ip route replace default via $gateway dev $iface
|
||||
}
|
||||
[ "$mode" = "off" ] && {
|
||||
|
@ -277,6 +281,47 @@ set_multipath() {
|
|||
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() {
|
||||
uci -q delete network.$1
|
||||
}
|
||||
|
@ -294,8 +339,15 @@ start_service() {
|
|||
#config_foreach remove route6
|
||||
#config_foreach remove rule
|
||||
#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
|
||||
set_multipath
|
||||
config_foreach add_route route
|
||||
config_foreach add_route route6
|
||||
# If no master is defined, one interface is defined as master
|
||||
if [ "$master" = "" ]; then
|
||||
intfmaster="$(echo $mptcpintf | cut -d' ' -f1 | tr -d '\n')"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue