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

Merge pull request #299 from Ysurac/develop

Various IPv6 fixes
This commit is contained in:
suyuan 2023-01-05 14:22:36 +08:00 committed by GitHub
commit 41fdcd5bad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 17 deletions

View file

@ -388,9 +388,11 @@ function wizard_add()
if ip6addr ~= "" then
ucic:set("network",intf,"ip6addr",ip6addr:gsub("%s+", ""))
ucic:set("network",intf,"ip6gw",ip6gw:gsub("%s+", ""))
ucic:set("network",intf,"ipv6","1")
else
ucic:set("network",intf,"ip6addr","")
ucic:set("network",intf,"ip6gw","")
ucic:set("network",intf,"ipv6","0")
end
if proto == "dhcpv6" then

View file

@ -135,11 +135,11 @@ _set_omr_ip() {
server=$1
serverip="$(uci -q get openmptcprouter.${server}.ip)"
if [ -n "$serverip" ]; then
uci -q batch <<-EOF >/dev/null
delete openmptcprouter.${server}.ip
add_list openmptcprouter.${server}.ip="${serverip}"
commit openmptcprouter
EOF
uci -q delete openmptcprouter.${server}.ip
for ip in ${serverip}; do
uci -q add_list openmptcprouter.${server}.ip="${ip}"
done
uci -q commit openmptcprouter
fi
}

View file

@ -1106,6 +1106,7 @@ if [ "$multipath_config" = "master" ]; then
# config_foreach set_server_all_routes server
if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
config_foreach set_server_default_route server
#config_foreach set_server_default_route6 server
fi
fi
if ([ "$default_gw6" != "$OMR_TRACKER_DEVICE_GATEWAY6" ] || [ "$default_gw6" = "" ]) && [ "$OMR_TRACKER_DEVICE_GATEWAY6" != "" ] && [ "$(uci -q get openmptcprouter.settings.master)" != "balancing" ]; then
@ -1119,12 +1120,12 @@ if [ "$multipath_config" = "master" ]; then
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ]; then
# config_foreach set_server_all_routes server
if [ "$(uci -q get openmptcprouter.settings.master)" != "failover" ]; then
config_foreach set_server_default_route server
#config_foreach set_server_default_route server
config_foreach set_server_default_route6 server
fi
fi
#if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ] && [ "$(uci -q get openmptcprouter.settings.vpn)" != "mlvpn" ]; then
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && [ "$(ip route show default | grep weight)" = "" ] && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
if [ "$(uci -q get openmptcprouter.settings.master)" = "balancing" ] && ([ "$(ip route show default | grep weight)" = "" ] || [ "$(ip -6 route show default | grep weight)" = "" ]) && [ "$(uci -q get openmptcprouter.settings.defaultgw)" != "0" ]; then
omrvpn_intf=$(uci -q get "network.omrvpn.device" || echo "tun0")
[ -z "$omrvpn_intf" ] && omrvpn_intf=$(uci -q get "network.omrvpn.ifname" || echo "tun0")
if [ -n "$omrvpn_intf" ] && [ "$(ip route show default | grep -v metric | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ]; then
@ -1132,11 +1133,11 @@ if [ "$multipath_config" = "master" ]; then
routesbalancingbackup=""
nbintf=0
nbintfb=0
nbintf6=0
nbintfb6=0
#nbintf6=0
#nbintfb6=0
config_load network
config_foreach set_route_balancing interface
config_foreach set_route_balancing6 interface
#config_foreach set_route_balancing6 interface
[ -n "$routesbalancing" ] && {
([ "$nbintf" -gt "1" ] && [ "$(ip r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ])) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && {
_log "Change in routes, set ip route replace default scope global $routesbalancing (omrvpn_intf: $omrvpn_intf)"
@ -1145,18 +1146,37 @@ if [ "$multipath_config" = "master" ]; then
[ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && _log "New route: $(ip r)"
}
}
[ -n "$routesbalancing6" ] && {
([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
_log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null
}
}
#[ -n "$routesbalancing6" ] && {
# ([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
# _log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
# ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null
# }
#}
[ -n "$routesbalancingbackup" ] && {
([ "$nbintfb" -gt "1" ] && [ "$(ip r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup " ]) || ([ "$nbintf" = "1" ] && ([ "$(ip r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] || ([ -n "$OMR_TRACKER_INTERFACE" ] && [ "$(uci -q get openmptcprouter.$OMR_TRACKER_INTERFACE.vpn)" = "1" ])) && [ -n "$OMR_TRACKER_DEVICE_IP" ]) && {
_log "Set backup ip route replace default scope global metric 999 $routesbalancingbackup"
ip route replace default scope global metric 999 $routesbalancingbackup 2>&1 >/dev/null
}
}
#[ -n "$routesbalancingbackup6" ] && {
# ([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
# _log "Set backup ip -6 route replace default scope global $routesbalancingbackup6"
# ip -6 route replace default scope global metric 999 $routesbalancingbackup6 2>&1 >/dev/null
# }
#}
elif [ -n "$omrvpn_intf" ] && [ "$(ip -6 route show default | grep -v metric | awk '/default/ {print $5}' | grep $omrvpn_intf)" = "" ]; then
routesbalancing6=""
routesbalancingbackup6=""
nbintf6=0
nbintfb6=0
config_load network
config_foreach set_route_balancing6 interface
[ -n "$routesbalancing6" ] && {
([ "$nbintf6" -gt "1" ] && [ "$(ip -6 r show default metric 1 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancing6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 1 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
_log "Set ip -6 route replace default scope global metric 1 $routesbalancing6"
ip -6 route replace default scope global metric 1 $routesbalancing6 2>&1 >/dev/null
}
}
[ -n "$routesbalancingbackup6" ] && {
([ "$nbintfb6" -gt "1" ] && [ "$(ip -6 r show default metric 999 | tr -d '\t' | tr -d '\n')" != "default via $routesbalancingbackup6 " ]) || ([ "$nbintf6" = "1" ] && [ "$(ip -6 r show default metric 999 | grep $OMR_TRACKER_DEVICE)" = "" ] && [ -n "$OMR_TRACKER_DEVICE_IP6" ]) && {
_log "Set backup ip -6 route replace default scope global $routesbalancingbackup6"

View file

@ -292,7 +292,7 @@ while true; do
if [ "$OMR_TRACKER_IPV6" = "1" ] || [ "$OMR_TRACKER_IPV6" = "auto" ]; then
#OMR_TRACKER_DEVICE_IP6=$(ip -6 -br addr ls dev "$OMR_TRACKER_DEVICE" | awk -F'[ /]+' '{print $3}')
#if [ -z "$OMR_TRACKER_DEVICE_IP6" ]; then
OMR_TRACKER_DEVICE_IP6=$(ip -6 addr show dev "$OMR_TRACKER_DEVICE" | grep -v 'inet6 fe80' | grep -m 1 inet6 | awk '{print $2}' | cut -d'/' -s -f1)
OMR_TRACKER_DEVICE_IP6=$(ip -6 addr show dev "$OMR_TRACKER_DEVICE" | sort -r | grep -m 1 inet6 | awk '{print $2}' | cut -d'/' -s -f1)
#fi
if [ -z "$OMR_TRACKER_DEVICE_GATEWAY6" ]; then
OMR_TRACKER_DEVICE_GATEWAY6=$(uci -q get "network.$OMR_TRACKER_INTERFACE.ip6gw")