Index: /src/router/rc/services.c
===================================================================
--- /src/router/rc/services.c	(revision 12084)
+++ /src/router/rc/services.c	(revision 12085)
@@ -817,5 +817,5 @@
     handle = start_service_nofree( "bonding", handle );
 #endif
-    handle = start_service_nofree( "wan", handle );
+    handle = start_service_nofree_f( "wan", handle );
     handle = start_service_nofree_f( "ttraff", handle );
 #ifdef HAVE_MADWIFI
@@ -899,5 +899,5 @@
 	// we must use getWET as well
     {
-	handle = start_service_nofree( "wan", handle );
+	handle = start_service_nofree_f( "wan", handle );
 	handle = start_service_nofree_f( "ttraff", handle );
     }
Index: /src/router/services/Makefile
===================================================================
--- /src/router/services/Makefile	(revision 12084)
+++ /src/router/services/Makefile	(revision 12085)
@@ -377,10 +377,10 @@
 CFLAGS += -DHAVE_FONERA
 CFLAGS += -DHAVE_DIR400
-OBJS += icplus.o
+#OBJS += icplus.o
 else
 ifeq ($(CONFIG_DIR300),y)
 CFLAGS += -DHAVE_FONERA
 CFLAGS += -DHAVE_DIR300
-OBJS += icplus.o
+#OBJS += icplus.o
 endif
 endif
@@ -438,5 +438,5 @@
 ifeq ($(CONFIG_LS2),y)
 CFLAGS += -DHAVE_LS2
-OBJS += icplus.o
+#OBJS += icplus.o
 endif
 endif
Index: /src/router/services/networking/interface.c
===================================================================
--- /src/router/services/networking/interface.c	(revision 12084)
+++ /src/router/services/networking/interface.c	(revision 12085)
@@ -513,5 +513,5 @@
 	      nvram_safe_get( "wan_ifnames" ) );
 #elif HAVE_DIR300
-    snprintf( all_ifnames, 255, "%s %s %s", "eth0 vlan0 vlan2",
+    snprintf( all_ifnames, 255, "%s %s %s", "eth0 vlan1 vlan2",
 	      nvram_safe_get( "lan_ifnames" ),
 	      nvram_safe_get( "wan_ifnames" ) );
Index: /src/router/services/networking/network.c
===================================================================
--- /src/router/services/networking/network.c	(revision 12084)
+++ /src/router/services/networking/network.c	(revision 12085)
@@ -971,5 +971,5 @@
     {
 	nvram_set( "lan_ifname", "br0" );
-	nvram_set( "lan_ifnames", "vlan0 vlan2 ath0" );
+	nvram_set( "lan_ifnames", "vlan1 vlan2 ath0" );
 	PORTSETUPWAN( "" );
     }
@@ -977,5 +977,5 @@
     {
 	nvram_set( "lan_ifname", "br0" );
-	nvram_set( "lan_ifnames", "vlan0 vlan2 ath0" );
+	nvram_set( "lan_ifnames", "vlan1 vlan2 ath0" );
 	PORTSETUPWAN( "vlan2" );
     }
@@ -2438,4 +2438,17 @@
     int s;
     struct ifreq ifr;
+    if( isClient(  ) )
+    {
+	char *ifn = getSTA(  );
+	int count = 10;
+	while((count--) >0) // wait until wan is available (10 sek max)
+	{
+	    if (ifexists(ifn))
+		{
+		break;
+		}
+	    sleep(1);
+	}
+    }
 
     eval( "ifconfig", nvram_safe_get( "wan_ifname" ), "allmulti", "promisc" );
@@ -2599,4 +2612,9 @@
     {
 	pppoe_wan_ifname = getSTA(  );
+	int count = 10;
+	while((count--) >0)
+	{
+	
+	}
     }
 #endif
Index: /src/router/services/networking/wshaper.c
===================================================================
--- /src/router/services/networking/wshaper.c	(revision 12084)
+++ /src/router/services/networking/wshaper.c	(revision 12085)
@@ -702,5 +702,5 @@
     ret = eval( script_name, "stop", "XX", "ath0" );
 #elif HAVE_DIR300
-    ret = eval( script_name, "stop", "XX", "vlan0" );
+    ret = eval( script_name, "stop", "XX", "vlan1" );
     ret = eval( script_name, "stop", "XX", "vlan2" );
     ret = eval( script_name, "stop", "XX", "ath0" );
Index: /src/router/services/sysinit/sysinit-dir300.c
===================================================================
--- /src/router/services/sysinit/sysinit-dir300.c	(revision 12084)
+++ /src/router/services/sysinit/sysinit-dir300.c	(revision 12085)
@@ -285,5 +285,35 @@
     else
     {
-	vlan_init( 0xff );	// 4 lan + 1 wan
+//	system("swconfig dev eth0 set reset 1");
+//	system("swconfig dev eth0 set enable_vlan 1");
+	system("swconfig dev eth0 vlan 1 set ports \"0 1 2 3 5t\"");
+	system("swconfig dev eth0 vlan 2 set ports \"4 5t\"");
+	system("swconfig dev eth0 set apply");
+	eval( "vconfig", "set_name_type", "VLAN_PLUS_VID_NO_PAD" );
+	eval( "vconfig", "add", "eth0", "1" );
+	eval( "vconfig", "add", "eth0", "2" );
+//	set network.eth0_1.ports="0 1 2 3 5t"
+//	vlan_init( 0xff );	// 4 lan + 1 wan
+    struct ifreq ifr;
+    int s;
+
+    if( ( s = socket( AF_INET, SOCK_RAW, IPPROTO_RAW ) ) )
+    {
+	char eabuf[32];
+
+	strncpy( ifr.ifr_name, "eth0", IFNAMSIZ );
+	ioctl( s, SIOCGIFHWADDR, &ifr );
+	char macaddr[32];
+
+	strcpy( macaddr,
+		ether_etoa( ( unsigned char * )ifr.ifr_hwaddr.sa_data,
+			    eabuf ) );
+	nvram_set( "et0macaddr", macaddr );
+	// MAC_ADD (macaddr);
+	ether_atoe( macaddr, ( unsigned char * )ifr.ifr_hwaddr.sa_data );
+	strncpy( ifr.ifr_name, "vlan2", IFNAMSIZ );
+	ioctl( s, SIOCSIFHWADDR, &ifr );
+	close( s );
+    }
     }
     // insmod("ipv6");
Index: /src/router/services/sysinit/sysinit-ls2.c
===================================================================
--- /src/router/services/sysinit/sysinit-ls2.c	(revision 12084)
+++ /src/router/services/sysinit/sysinit-ls2.c	(revision 12085)
@@ -138,5 +138,35 @@
 #if !defined(HAVE_NS2) && !defined(HAVE_BS2) && !defined(HAVE_LC2) && !defined(HAVE_BS2HP) && !defined(HAVE_MS2) && !defined(HAVE_PICO2) && !defined(HAVE_PICO2HP)
     eval( "ifconfig", "eth0", "up" );	// wan
-    vlan_init( 0x31 );		// 1 lan + 1 wan, but only first one is used
+//	system("swconfig dev eth0 set reset 1");
+//	system("swconfig dev eth0 set enable_vlan 1");
+	system("swconfig dev eth0 vlan 1 set ports \"0 1 2 3 5t\"");
+	system("swconfig dev eth0 vlan 2 set ports \"4 5t\"");
+	system("swconfig dev eth0 set apply");
+	eval( "vconfig", "set_name_type", "VLAN_PLUS_VID_NO_PAD" );
+	eval( "vconfig", "add", "eth0", "1" );
+	eval( "vconfig", "add", "eth0", "2" );
+//	set network.eth0_1.ports="0 1 2 3 5t"
+//	vlan_init( 0xff );	// 4 lan + 1 wan
+    struct ifreq ifr;
+    int s;
+
+    if( ( s = socket( AF_INET, SOCK_RAW, IPPROTO_RAW ) ) )
+    {
+	char eabuf[32];
+
+	strncpy( ifr.ifr_name, "eth0", IFNAMSIZ );
+	ioctl( s, SIOCGIFHWADDR, &ifr );
+	char macaddr[32];
+
+	strcpy( macaddr,
+		ether_etoa( ( unsigned char * )ifr.ifr_hwaddr.sa_data,
+			    eabuf ) );
+	nvram_set( "et0macaddr", macaddr );
+	// MAC_ADD (macaddr);
+	ether_atoe( macaddr, ( unsigned char * )ifr.ifr_hwaddr.sa_data );
+	strncpy( ifr.ifr_name, "vlan2", IFNAMSIZ );
+	ioctl( s, SIOCSIFHWADDR, &ifr );
+	close( s );
+    }
 #endif
 #endif
Index: /src/router/services/sysinit/sysinit-wrt54g2v11.c
===================================================================
--- /src/router/services/sysinit/sysinit-wrt54g2v11.c	(revision 12084)
+++ /src/router/services/sysinit/sysinit-wrt54g2v11.c	(revision 12085)
@@ -141,6 +141,9 @@
     }
 
+    system("swconfig dev eth0 set reset 1");
+    system("swconfig dev eth0 set enable_vlan 1");
     system("swconfig dev eth0 vlan 1 set ports \"0t 1 2 3 4\"");
     system("swconfig dev eth0 vlan 2 set ports \"0t 5\"");
+    system("swconfig dev eth0 set apply");
     eval( "vconfig", "set_name_type", "VLAN_PLUS_VID_NO_PAD" );
     eval( "vconfig", "add", "eth0", "1" );
