Index: /trunk/src/VBox/Devices/Network/lwip-new/src/core/netif.c
===================================================================
--- /trunk/src/VBox/Devices/Network/lwip-new/src/core/netif.c	(revision 48286)
+++ /trunk/src/VBox/Devices/Network/lwip-new/src/core/netif.c	(revision 48287)
@@ -863,14 +863,16 @@
   }
   else {
+    u8_t *id;
+
     /* Use hwaddr directly as interface ID. */
     netif->ip6_addr[0].addr[2] = 0;
     netif->ip6_addr[0].addr[3] = 0;
 
-    addr_index = 3;
-    for (i = 0; i < 8; i++) {
-      if (i == 4) {
-        addr_index--;
-      }
-      netif->ip6_addr[0].addr[addr_index] |= ((u32_t)(netif->hwaddr[netif->hwaddr_len - i - 1])) << (8 * (i & 0x03));
+    LWIP_ASSERT("bad netif->hwaddr_len",
+                0 < netif->hwaddr_len && netif->hwaddr_len <= 8);
+    id = (uint8_t *)&netif->ip6_addr[0].addr[2];
+    id += 8 - netif->hwaddr_len;
+    for (i = 0; i < netif->hwaddr_len; ++i) {
+      id[i] = netif->hwaddr[i];
     }
   }
