Browse Source

mwan3: fix empty gateway when creating routing table

Interfaces of some PtP protocols do not have a real gateway. In that
case ubus may fill them with '0.0.0.0' or even leave it blank. This
will cause error when adding new routing rule.

Signed-off-by: David Yang <mmyangfl@gmail.com>
lilik-openwrt-22.03
David Yang 7 years ago
parent
commit
6f38affd0c
2 changed files with 13 additions and 9 deletions
  1. +1
    -5
      net/mwan3/files/etc/hotplug.d/iface/15-mwan3
  2. +12
    -4
      net/mwan3/files/lib/mwan3/mwan3.sh

+ 1
- 5
net/mwan3/files/etc/hotplug.d/iface/15-mwan3 View File

@ -26,24 +26,20 @@ if [ "$ACTION" == "ifup" ]; then
if [ "$family" = "ipv4" ]; then if [ "$family" = "ipv4" ]; then
ubus call network.interface.${INTERFACE}_4 status &>/dev/null ubus call network.interface.${INTERFACE}_4 status &>/dev/null
if [ "$?" -eq "0" ]; then if [ "$?" -eq "0" ]; then
network_get_gateway gateway ${INTERFACE}_4
network_get_ipaddr src_ip ${INTERFACE}_4 network_get_ipaddr src_ip ${INTERFACE}_4
else else
network_get_gateway gateway $INTERFACE
network_get_ipaddr src_ip ${INTERFACE} network_get_ipaddr src_ip ${INTERFACE}
fi fi
elif [ "$family" = "ipv6" ]; then elif [ "$family" = "ipv6" ]; then
ubus call network.interface.${INTERFACE}_6 status &>/dev/null ubus call network.interface.${INTERFACE}_6 status &>/dev/null
if [ "$?" -eq "0" ]; then if [ "$?" -eq "0" ]; then
network_get_gateway6 gateway ${INTERFACE}_6
network_get_ipaddr6 src_ip ${INTERFACE}_6 network_get_ipaddr6 src_ip ${INTERFACE}_6
else else
network_get_gateway6 gateway ${INTERFACE}
network_get_ipaddr6 src_ip ${INTERFACE} network_get_ipaddr6 src_ip ${INTERFACE}
fi fi
fi fi
[ -n "$gateway" ] || exit 9
[ -n "$src_ip" ] || exit 9
fi fi
if [ "$initial_state" = "offline" ]; then if [ "$initial_state" = "offline" ]; then


+ 12
- 4
net/mwan3/files/lib/mwan3/mwan3.sh View File

@ -324,10 +324,14 @@ mwan3_create_iface_route()
network_get_gateway route_args $1 network_get_gateway route_args $1
fi fi
route_args="via $route_args dev $2"
if [ -n "$route_args" -a "$route_args" != "0.0.0.0" ]; then
route_args="via $route_args"
else
route_args=""
fi
$IP4 route flush table $id $IP4 route flush table $id
$IP4 route add table $id default $route_args
$IP4 route add table $id default $route_args dev $2
fi fi
if [ "$family" == "ipv6" ]; then if [ "$family" == "ipv6" ]; then
@ -337,10 +341,14 @@ mwan3_create_iface_route()
network_get_gateway6 route_args $1 network_get_gateway6 route_args $1
fi fi
route_args="via $route_args dev $2"
if [ -n "$route_args" -a "$route_args" != "::" ]; then
route_args="via $route_args"
else
route_args=""
fi
$IP6 route flush table $id $IP6 route flush table $id
$IP6 route add table $id default $route_args
$IP6 route add table $id default $route_args dev $2
fi fi
} }


Loading…
Cancel
Save