#!/bin/sh
. /lib/zone/zone_api.sh
. /lib/net_share.sh

virtual_wan_num=3

# ALL WAN
wan_numbers=$(uci -q get network.global.wan_numbers)
for wanid in $wan_numbers
do
	# WAN: ifname is saved in network config section for dhcp/static.
	iface="wan${wanid}_eth"
	ifname=$(uci -q get network.$iface.ifname)
	ip -f inet addr show $ifname | grep -E '^[[:space:]]+inet' | while read line; ## wan alias has multi ip
	do
		line=$(echo $line | awk -F ' ' '{print$2}' | awk -F  ':' '{print$1}')
		[ "${line%%/*}" == "${line##*/}" ] && line="$line/32"
		echo "WAN${wanid} $ifname ${line%%/*} ${line##*/} 0"
	done

	# WAN: ifname is special string format --> pe-{iface}/lt-{iface}/pt-{iface}
	iface="wan${wanid}_poe"
	is_poe_enable=$(uci -q get network.$iface.t_poe_enable)
	[ "$is_poe_enable" == "1" ] && {
		proto=$(uci -q get network.$iface.proto)
		case "$proto" in
			pppoe)
				ifname="pe-wan${wanid}_poe" ;;
			l2tp)
				ifname="lt-wan${wanid}_poe" ;;
			pptp)
				ifname="pt-wan${wanid}_poe" ;;
		esac
		ip -f inet addr show $ifname | grep -E '^[[:space:]]+inet' | while read line;
		do
			line=$(echo $line | awk -F ' ' '{print$2}' | awk -F  ':' '{print$1}')
			[ "${line%%/*}" == "${line##*/}" ] && line="$line/32"
			echo "WAN${wanid} $ifname ${line%%/*} ${line##*/} 0"
		done
	}
	
	# Virtual WAN
	for vid in `seq 1 $virtual_wan_num`; do
		iface="wan${wanid}_eth_${vid}"
		[ -z $(uci -q get network.$iface) ] && continue

		ifname=$(uci -q get network.$iface.ifname)
		ip -f inet addr show $ifname | grep -E '^[[:space:]]+inet' | while read line; ## wan alias has multi ip
		do
			line=$(echo $line | awk -F ' ' '{print$2}' | awk -F  ':' '{print$1}')
			[ "${line%%/*}" == "${line##*/}" ] && line="$line/32"
			echo "WAN${wanid}_${vid} $ifname ${line%%/*} ${line##*/} 0"
		done
		
		iface="wan${wanid}_poe_${vid}"
		is_poe_enable=$(uci -q get network.$iface.t_poe_enable)
		[ "$is_poe_enable" == "1" ] && {
			ifname="pe-wan${wanid}_poe_${vid}"
			ip -f inet addr show $ifname | grep -E '^[[:space:]]+inet' | while read line; 
			do
				line=$(echo $line | awk -F ' ' '{print$2}' | awk -F  ':' '{print$1}')
				[ "${line%%/*}" == "${line##*/}" ] && line="$line/32"
				echo "WAN${wanid}_${vid} $ifname ${line%%/*} ${line##*/} 0"
			done
		}
	done
done

each_vnet()
{
	[ "$1" == "vwan" ] && return

	config_get zone "$1" "zone" ""
	config_get ipaddr "$1" "ipaddr" ""
	config_get netmask "$1" "netmask" ""
	config_get ifname "$1" "ifname" ""

	prefix=$(ipcalc -p $ipaddr $netmask)
	prefix=${prefix/PREFIX=/}

	echo $zone $ifname $ipaddr $prefix 1
}

config_load vnetwork
config_foreach each_vnet vinterface
