dropbear: Add procd interface triggers when interface config is specified

A dropbear instance having an interface config won't start if the interface is down as no
IP address is available.
Adding interface triggers for each configured interface executing the dropbear reload script
will start the dropbear instance when the interface is up.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
This commit is contained in:
Hans Dedecker 2016-04-27 11:14:00 +02:00 committed by Jo-Philipp Wich
parent b3f6c4b3ac
commit 16122117a5
2 changed files with 22 additions and 2 deletions

View file

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=dropbear PKG_NAME:=dropbear
PKG_VERSION:=2015.71 PKG_VERSION:=2015.71
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:= \ PKG_SOURCE_URL:= \

View file

@ -106,6 +106,12 @@ keygen()
chmod 0700 /etc/dropbear chmod 0700 /etc/dropbear
} }
load_interfaces()
{
config_get interface "$1" Interface
interfaces=" ${interface} ${interfaces}"
}
start_service() start_service()
{ {
[ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen [ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen
@ -119,7 +125,21 @@ start_service()
service_triggers() service_triggers()
{ {
procd_add_reload_trigger "dropbear" local interfaces
procd_open_trigger
procd_add_config_trigger "config.change" "dropbear" /etc/init.d/dropbear reload
config_load "${NAME}"
config_foreach load_interfaces dropbear
[ -n "${interfaces}" ] & {
for n in $interfaces ; do
procd_add_interface_trigger "interface.*" $n /etc/init.d/dropbear reload
done
}
procd_close_trigger
procd_add_validation validate_section_dropbear procd_add_validation validate_section_dropbear
} }