dropbear: fix dropbear startup issue
authorHans Dedecker <dedeckeh@gmail.com>
Tue, 18 Dec 2018 18:40:31 +0000 (19:40 +0100)
committerHans Dedecker <dedeckeh@gmail.com>
Fri, 21 Dec 2018 09:08:12 +0000 (10:08 +0100)
Interface triggers are installed by the dropbear init script in case an
interface is configured for a given dropbear uci section.
As dropbear is started after network the interface trigger event can be
missed during a small window; this is especially the case if lan is
specified as interface.
Fix this by starting dropbear before network so no interface trigger
is missed. As dropbear is started earlier than netifd add a boot function
to avoid the usage of network.sh functions as call to such functions will
fail at boottime.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Acked-by: Jo-Philipp Wich <jo@mein.io>
package/network/services/dropbear/Makefile
package/network/services/dropbear/files/dropbear.init

index 182552f6ea41f743ec2b102d1f1c3e32b2445f94..9127651ef99a38ee71600c2f9b800a79a6e447f5 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dropbear
 PKG_VERSION:=2017.75
-PKG_RELEASE:=7
+PKG_RELEASE:=7.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:= \
index b86e52d8bc26e27fbfaf215e82b10ec39511ab60..eef2643c14ac6b916bebb49e835186502afecce1 100755 (executable)
@@ -2,7 +2,7 @@
 # Copyright (C) 2006-2010 OpenWrt.org
 # Copyright (C) 2006 Carlos Sobrinho
 
-START=50
+START=19
 STOP=50
 
 USE_PROCD=1
@@ -59,6 +59,8 @@ dropbear_instance()
        }
 
        [ -n "${Interface}" ] && {
+               [ -n "${BOOT}" ] && return 0
+
                network_get_ipaddrs_all ipaddrs "${Interface}" || {
                        echo "interface ${Interface} has no physdev or physdev has no suitable ip"
                        return 1
@@ -119,6 +121,12 @@ load_interfaces()
        [ "${enable}" = "1" ] && interfaces=" ${interface} ${interfaces}"
 }
 
+boot()
+{
+       BOOT=1
+       start "$@"
+}
+
 start_service()
 {
        [ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen