dnsmasq sometimes does not listen for DHCP at bootup on lan (see bug FS#1765).

This occurs because netifd can incorrectly indicate carrier down on an
interface through devstatus after issuing a carrier up hotplug event.

This patch ignores carrier status for bridge interfaces, as this does not
reflect media state so is not a useful check.

Signed-off-by: Reuben Dowle <reuben.do...@4rf.com>
---
 package/network/services/dnsmasq/files/dnsmasq.init | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init 
b/package/network/services/dnsmasq/files/dnsmasq.init
index 9288971..3aafdf9 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -104,9 +104,12 @@ dhcp_check() {

        # If there's no carrier yet, skip this interface.
        # The init script will be called again once the link is up
-       case "$(devstatus "$ifname" | jsonfilter -e @.carrier)" in
-               false) return 1;;
-       esac
+       local carrier
+       local type
+       eval $(devstatus "$ifname" | jsonfilter -e "carrier=@.carrier" -e 
"type=@.type")
+       if [ "$carrier" = "false" -a "$type" != "bridge" ]; then
+               return 1
+       fi

        udhcpc -n -q -s /bin/true -t 1 -i "$ifname" >&- && rv=1 || rv=0

--
2.7.4

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to