mwan3: fix empty gateway when creating routing table
authorDavid Yang <mmyangfl@gmail.com>
Sat, 28 Oct 2017 14:48:38 +0000 (22:48 +0800)
committerDavid Yang <mmyangfl@gmail.com>
Wed, 8 Nov 2017 08:14:50 +0000 (16:14 +0800)
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>
net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/lib/mwan3/mwan3.sh

index 27033d582df09afba7014f3d1ed7aae5db4e85ae..3ef856580d678f7df24b18e1bdcf15a94b8682c8 100644 (file)
@@ -26,24 +26,20 @@ if [ "$ACTION" == "ifup" ]; then
        if [ "$family" = "ipv4" ]; then
                ubus call network.interface.${INTERFACE}_4 status &>/dev/null
                if [ "$?" -eq "0" ]; then
-                       network_get_gateway gateway ${INTERFACE}_4
                        network_get_ipaddr src_ip ${INTERFACE}_4
                else
-                       network_get_gateway gateway $INTERFACE
                        network_get_ipaddr src_ip ${INTERFACE}
                fi
        elif [ "$family" = "ipv6" ]; then
                ubus call network.interface.${INTERFACE}_6 status &>/dev/null
                if [ "$?" -eq "0" ]; then
-                       network_get_gateway6 gateway ${INTERFACE}_6
                        network_get_ipaddr6 src_ip ${INTERFACE}_6
                else
-                       network_get_gateway6 gateway ${INTERFACE}
                        network_get_ipaddr6 src_ip ${INTERFACE}
                fi
        fi
 
-       [ -n "$gateway" ] || exit 9
+       [ -n "$src_ip" ] || exit 9
 fi
 
 if [ "$initial_state" = "offline" ]; then
index 32c9f7888af93f5b8e90a83fdfafcc86de3616c7..cacef1ceaae0803f0ddb2f38c9b54835257e4b9d 100644 (file)
@@ -324,10 +324,14 @@ mwan3_create_iface_route()
                        network_get_gateway route_args $1
                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 add table $id default $route_args
+               $IP4 route add table $id default $route_args dev $2
        fi
 
        if [ "$family" == "ipv6" ]; then
@@ -337,10 +341,14 @@ mwan3_create_iface_route()
                        network_get_gateway6 route_args $1
                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 add table $id default $route_args
+               $IP6 route add table $id default $route_args dev $2
        fi
 }