relayd: fix reload / interface restart issues
[openwrt/openwrt.git] / package / network / services / relayd / files / relay.init
index 3635e9c4bdf48782a81357dde66956fb8da45d34..e5715a53baca1a91cb43401a73e8b1c10e2ca7b8 100644 (file)
@@ -20,6 +20,7 @@ validate_proto_relayd()
 resolve_ifname() {
        grep -qs "^ *$1:" /proc/net/dev && {
                procd_append_param command -I "$1"
+               procd_append_param netdev "$1"
                append ifaces "$1"
        }
 }
@@ -41,6 +42,9 @@ start_relay() {
        config_get proto "$cfg" proto
        [ "$proto" = "relay" ] || return 0
 
+       config_get_bool disabled "$cfg" disabled 0
+       [ "$disabled" -gt 0 ] && return 0
+
        SERVICE_DAEMONIZE=1
        SERVICE_WRITE_PID=1
        SERVICE_PID_FILE="/var/run/relay-$cfg.pid"
@@ -103,6 +107,7 @@ start_relay() {
 service_triggers()
 {
        procd_add_reload_trigger "network"
+       procd_add_raw_trigger "interface.*" 2000 /etc/init.d/relayd reload
 }
 
 start_service() {