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 4eb4737a3a8b83ad21ecb1022dbf3f2f58aeda96..3efcd3009ea260bfd9d7852828354b4dd5c4a8c2 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 24f243c2c76354793c8c74b665d55f6e755f230a..00604f40e70e8ba988bde6af04437d326b5b548a 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