Index: /trunk/src/VBox/Devices/Network/DrvNAT.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DrvNAT.cpp	(revision 15913)
+++ /trunk/src/VBox/Devices/Network/DrvNAT.cpp	(revision 15914)
@@ -510,4 +510,5 @@
     rc = pThis->pPort->pfnReceive(pThis->pPort, pItem->pu8Buf, pItem->cb);
 
+#if 0
     rc = RTReqAlloc(pThis->pReqQueue, &pReq, RTREQTYPE_INTERNAL);
     AssertReleaseRC(rc);
@@ -518,4 +519,9 @@
     pReq->fFlags              = RTREQFLAGS_VOID;
     AssertRC(rc);
+#else
+    /*Copy buffer again, till seeking good way of syncronization with slirp mbuf management code*/
+    AssertRelease(pItem->mbuf == NULL);
+    RTMemFree((void *)pItem->pu8Buf);
+#endif
     return RT_SUCCESS(rc);
 }
Index: /trunk/src/VBox/Devices/Network/slirp/slirp.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 15913)
+++ /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 15914)
@@ -1114,4 +1114,5 @@
 #ifdef VBOX_WITH_SIMPLIFIED_SLIRP_SYNC
     struct ethhdr *eh;
+    uint8_t *buf = RTMemAlloc(1600);
     m->m_data -= if_maxlinkhdr;
     m->m_len += ETH_HLEN;
@@ -1134,5 +1135,11 @@
 #ifdef VBOX_WITH_SIMPLIFIED_SLIRP_SYNC
     eh->h_proto = htons(eth_proto);
+#if 0
     slirp_output(pData->pvUser, m, mtod(m, uint8_t *), m->m_len);
+#else
+    memcpy(buf, mtod(m, uint8_t *), m->m_len); 
+    slirp_output(pData->pvUser, NULL, buf, m->m_len);
+    m_free(pData, m);
+#endif
 #else
     eh->h_proto = htons(ETH_P_IP);
