netifd: update dhcp.script to handle dynamic routing
authorMogula Pranay <mogula.pranay@nxp.com>
Tue, 9 Jan 2018 06:13:29 +0000 (11:43 +0530)
committerHans Dedecker <dedeckeh@gmail.com>
Wed, 10 Jan 2018 08:19:08 +0000 (09:19 +0100)
Certain DHCP servers push a gateway outside of the assigned interface subnet,
to support those situations, install a host route towards the gateway.

If Gateway and IP are served in same network, openwrt quagga cannot learn
routes (rip routes are not getting added, showing inactive) whereas
working fine when Gateway and IP are in different network.

Signed-off-by: Mogula Pranay <mogula.pranay@nxp.com>
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
package/network/config/netifd/Makefile
package/network/config/netifd/files/lib/netifd/dhcp.script

index 4eb4737..3efcd30 100644 (file)
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=netifd
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(LEDE_GIT)/project/netifd.git
index 24f243c..00604f4 100755 (executable)
@@ -18,9 +18,15 @@ setup_interface () {
        proto_add_ipv4_address "$ip" "${subnet:-255.255.255.0}"
        # TODO: apply $broadcast
 
+       local ip_net
+       eval "$(ipcalc.sh "$ip/$mask")";ip_net="$NETWORK"
+
        local i
        for i in $router; do
-               proto_add_ipv4_route "$i" 32 "" "$ip"
+               local gw_net
+               eval "$(ipcalc.sh "$i/$mask")";gw_net="$NETWORK"
+
+               [ "$ip_net" != "$gw_net" ] && proto_add_ipv4_route "$i" 32 "" "$ip"
                proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip"
 
                local r