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