Index: /trunk/src/VBox/Devices/Network/slirp/if.h
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/if.h	(revision 15932)
+++ /trunk/src/VBox/Devices/Network/slirp/if.h	(revision 15933)
@@ -40,3 +40,8 @@
 #define ETH_P_IP        0x0800          /* Internet Protocol packet     */
 
+#ifdef ETH_P_IPV6
+# undef ETH_P_IPV6
+#endif /* ETH_P_IPV6 */
+#define ETH_P_IPV6      0x86DD          /* IPv6 */
+
 #endif
Index: /trunk/src/VBox/Devices/Network/slirp/slirp.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 15932)
+++ /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 15933)
@@ -1058,8 +1058,9 @@
     struct mbuf *m;
     int proto;
+    static bool fWarnedIpv6;
 
     if (pkt_len < ETH_HLEN) 
     {
-        LogRel(("packet having size %d has been ingnored\n", pkt_len));
+        LogRel(("NAT: packet having size %d has been ingnored\n", pkt_len));
         return;
     }
@@ -1067,13 +1068,11 @@
     m = m_get(pData);
     if (m == NULL)
-    {
         LogRel(("can't allocate new mbuf\n"));
-    }
+
     /* Note: we add to align the IP header */
 
     if (M_FREEROOM(m) < pkt_len)
-    {
        m_inc(m, pkt_len);
-    }
+
     m->m_len = pkt_len ;
     memcpy(m->m_data, pkt, pkt_len);
@@ -1098,6 +1097,14 @@
             ip_input(pData, m);
             break;
+        case ETH_P_IPV6:
+            m_free(pData, m);
+            if (!fWarnedIpv6)
+            {
+                LogRel(("NAT: IPv6 not supported\n"));
+                fWarnedIpv6 = true;
+            }
+            break;
         default:
-            LogRel(("Unsupported protocol %x\n", proto));
+            LogRel(("NAT: Unsupported protocol %x\n", proto));
             m_free(pData, m);
             break;
