From: Yousong Zhou Date: Sat, 25 Feb 2017 12:07:27 +0000 (+0800) Subject: relayd: fix making incomplete instance json data X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fyousong.git;a=commitdiff_plain;h=699eedace08b54b0bb4592b88573314604c4c0f6 relayd: fix making incomplete instance json data Defer procd_open_instance only after validity check passed. Fixes FS#541 Signed-off-by: Yousong Zhou --- diff --git a/package/network/services/relayd/Makefile b/package/network/services/relayd/Makefile index 25c56d49c6..dcb69a11b5 100644 --- a/package/network/services/relayd/Makefile +++ b/package/network/services/relayd/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=relayd -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_URL=$(LEDE_GIT)/project/relayd.git PKG_SOURCE_PROTO:=git diff --git a/package/network/services/relayd/files/relay.init b/package/network/services/relayd/files/relay.init index ac10f48b70..5c7a0f9efe 100644 --- a/package/network/services/relayd/files/relay.init +++ b/package/network/services/relayd/files/relay.init @@ -19,8 +19,7 @@ validate_proto_relayd() resolve_ifname() { grep -qs "^ *$1:" /proc/net/dev && { - procd_append_param command -I "$1" - procd_append_param netdev "$1" + append resolved_ifnames "$1" } } @@ -34,6 +33,7 @@ resolve_network() { start_relay() { local cfg="$1" + local proto disabled config_get proto "$cfg" proto [ "$proto" = "relay" ] || return 0 @@ -41,9 +41,7 @@ start_relay() { config_get_bool disabled "$cfg" disabled 0 [ "$disabled" -gt 0 ] && return 0 - procd_open_instance - procd_set_param command "$PROG" - + local resolved_ifnames local net networks config_get networks "$cfg" network for net in $networks; do @@ -55,9 +53,18 @@ start_relay() { local ifn ifnames config_get ifnames "$cfg" ifname for ifn in $ifnames; do - resolve_ifname "$ifn" + resolve_ifname "$ifn" || { + return 1 + } done + procd_open_instance + procd_set_param command "$PROG" + + for ifn in $resolved_ifnames; do + procd_append_param command -I "$ifn" + procd_append_param netdev "$ifn" + done local ipaddr config_get ipaddr "$cfg" ipaddr [ -n "$ipaddr" ] && procd_append_param command -L "$ipaddr"