diff options
| -rw-r--r-- | package/switch/files/switch.sh | 10 | ||||
| -rwxr-xr-x | target/linux/brcm-2.4/base-files/etc/init.d/netconfig | 3 | 
2 files changed, 11 insertions, 2 deletions
| diff --git a/package/switch/files/switch.sh b/package/switch/files/switch.sh index 14bacadc5..708ca85e8 100644 --- a/package/switch/files/switch.sh +++ b/package/switch/files/switch.sh @@ -25,13 +25,21 @@ setup_switch_vlan() {  	config_get vlan  "$s" vlan  	config_get ports "$s" ports -	[ -n "$dev" ] && [ -n "$vlan" ] && {  +	[ -n "$dev" ] && [ -n "$vlan" ] && { +		ports="${ports%\*}" + +		[ "$_vlan_pvid_set" = 1 ] || { +			ports="$ports*" +			_vlan_pvid_set=1 +		} +  		local proc="/proc/switch/$dev/vlan/$vlan/ports"  		[ -f "$proc" ] && echo "$ports" > "$proc"  	}  }  setup_switch() { +	_vlan_pvid_set=0  	config_load network  	config_foreach setup_switch_hw switch  	config_foreach setup_switch_vlan switch_vlan diff --git a/target/linux/brcm-2.4/base-files/etc/init.d/netconfig b/target/linux/brcm-2.4/base-files/etc/init.d/netconfig index 435288fa8..0e014b625 100755 --- a/target/linux/brcm-2.4/base-files/etc/init.d/netconfig +++ b/target/linux/brcm-2.4/base-files/etc/init.d/netconfig @@ -14,11 +14,12 @@ start() {  					case "$1" in  					vlan[0-9]|vlan1[0-5])  						local id="${1#vlan}" +						local ports="${2%\*}"  						append batch "delete network.eth0.${1}${N}"  						append batch "set network.eth0_${id}=switch_vlan${N}"  						append batch "set network.eth0_${id}.device=eth0${N}"  						append batch "set network.eth0_${id}.vlan=${id}${N}" -						append batch "set network.eth0_${id}.ports='${2}'${N}" +						append batch "set network.eth0_${id}.ports='${ports}'${N}"  					;;  					esac  				} | 
