diff --git a/target/linux/brcm47xx/base-files/etc/init.d/netconfig b/target/linux/brcm47xx/base-files/etc/init.d/netconfig
index 2b1a66d33dd085298a33a82376466e0b31027566..98747f5803d117e63266ab9aab25eed743e62e41 100755
--- a/target/linux/brcm47xx/base-files/etc/init.d/netconfig
+++ b/target/linux/brcm47xx/base-files/etc/init.d/netconfig
@@ -101,11 +101,22 @@ start() {
 		}
 	}
 
-	($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") || ($1 ~ /macaddr/) {
+	($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") || ($1 ~ /macaddr/) || \
+	 ($1 ~ /^vlan[0-9]{1,2}ports$/) {
 		nvram[$1] = $2
 	}
 
 	END {
+		if (((nvram["vlan0ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan1ports"] ~ /^4 8/ && (cpuport == "8"))) || \
+		    ((nvram["vlan1ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan2ports"] ~ /^4 8/ && (cpuport == "8")))) {
+			c["vlan0ports"] = "0 1 2 3 8"
+			c["vlan1ports"] = "4 8"
+		}
+		if (((nvram["vlan0ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan1ports"] ~ /^4 5/ && (cpuport == "5"))) || \
+		    ((nvram["vlan1ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan2ports"] ~ /^4 5/ && (cpuport == "5")))) {
+			c["vlan0ports"] = "0 1 2 3 5"
+			c["vlan1ports"] = "4 5"
+		}
 		if ((model == "ASUS WL-HDD") || (model == "ASUS WL-300g") || (model == "Linksys WAP54G V1")) {
 			c["wan_ifname"] = ""
 			c["lan_ifname"] = "eth1"