[PATCH] dnsmasq: Ignore carrier status for bridge interfaces
Reuben Dowle
reuben.dowle at 4rf.com
Wed Jul 15 20:10:43 EDT 2020
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.dowle at 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
More information about the openwrt-devel
mailing list