#!/bin/sh
# Copyright (c) 2014, 2016, 2019 The Linux Foundation. All rights reserved.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

. /lib/functions.sh
. /lib/functions/network.sh

ALLSTREAM=
stream_sum() {
	local instance=$1
	local stream
	local upstreams
	local downstreams
	local disabled

	config_get disabled $instance disabled 1

	[ $disabled -eq 1 ] && return
	config_get upstreams $instance upstream
	config_get downstreams $instance downstream

	[ -n "$upstreams" ] || {
		upstreams=$(uci_get_state network wan ifname wan)
	}

	[ -n "$downstreams" ] || {
		downstreams=$(uci_get_state network lan ifname lan)
	}

	[ -n "$upstreams" ] && {
		for stream in $upstreams; do
			ALLSTREAM="$ALLSTREAM $stream"
		done
	}

	[ -n "$downstreams" ] && {
		for stream in $downstreams; do
			ALLSTREAM="$ALLSTREAM $stream"
		done
	}
}

/etc/init.d/mcproxy enabled || return

device=$(uci_get_state network $INTERFACE ifname)

config_load mcproxy
config_foreach stream_sum instance

RESTART=0

for stream in $ALLSTREAM; do
	[ "$stream" == "$device" ] && {
		RESTART=1
		break;
	}
done

[ $RESTART -eq 0 ] && return

/etc/init.d/mcproxy restart

