From ef5cb964b170d369e971371fe4644d17cf1b3c60 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Sat, 25 Feb 2017 20:07:27 +0800 Subject: [PATCH] relayd: fix making incomplete instance json data Defer procd_open_instance only after validity check passed. Fixes FS#541 Signed-off-by: Yousong Zhou --- package/network/services/relayd/Makefile | 2 +- .../network/services/relayd/files/relay.init | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/package/network/services/relayd/Makefile b/package/network/services/relayd/Makefile index 25c56d49c6b..dcb69a11b5d 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 ac10f48b70a..5c7a0f9efe6 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" -- 2.30.2