Changeset 10763 in vbox for trunk/src/VBox/Devices/Network
- Timestamp:
- Jul 19, 2008 12:22:51 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 33521
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/SrvIntNetR0.cpp
r10748 r10763 593 593 typedef struct INTNETETHERHDR 594 594 { 595 PDMMAC MacDst; 596 PDMMAC MacSrc; 595 PDMMAC MacDst; 596 PDMMAC MacSrc; 597 uint16_t EtherType; 597 598 } INTNETETHERHDR; 598 599 #pragma pack() … … 610 611 static void intnetR0IfSend(PINTNETIF pIf, PINTNETIF pIfSender, PINTNETSG pSG) 611 612 { 612 LogFlow(("intnetR0IfSend: pIf=%p:{.hIf=%RX32}\n", pIf, pIf->hIf));613 // LogFlow(("intnetR0IfSend: pIf=%p:{.hIf=%RX32}\n", pIf, pIf->hIf)); 613 614 int rc = intnetR0RingWriteFrame(pIf->pIntBuf, &pIf->pIntBuf->Recv, pSG); 614 615 if (RT_SUCCESS(rc)) … … 620 621 return; 621 622 } 623 624 Log(("intnetR0IfSend: overflow cb=%d hIf=%#x\n", pSG->cbTotal, pIf->hIf)); 622 625 623 626 #if 0 /* This is bad stuff now as we're blocking while locking down the network. … … 737 740 738 741 /** @todo failure statistics? */ 742 Log2(("intnetR0TrunkIfSend: %Rrc fDst=%d\n", rc, fDst)); 739 743 } 740 744 … … 761 765 * Write the packet to all the interfaces and signal them. 762 766 */ 763 Log2(("Broadcast\n"));764 767 for (PINTNETIF pIf = pNetwork->pIFs; pIf; pIf = pIf->pNext) 765 768 if (pIf != pIfSender) … … 816 819 * Only send to the interfaces with matching a MAC address. 817 820 */ 818 Log2(("Dst=%.6Rhxs\n", &pEthHdr->MacDst));819 821 bool fExactIntNetRecipient = false; 820 822 for (PINTNETIF pIf = pNetwork->pIFs; pIf; pIf = pIf->pNext) 821 823 { 822 Log2(("Dst=%.6Rhxs ?==? %.6Rhxs\n", &pEthHdr->MacDst, &pIf->Mac));823 824 bool fIt = false; 824 825 if ( ( !pIf->fMacSet … … 828 829 && pIf != pIfSender /* promiscuous mode: omit the sender */)) 829 830 { 831 Log2(("Dst=%.6Rhxs => %.6Rhxs\n", &pEthHdr->MacDst, &pIf->Mac)); 830 832 fExactIntNetRecipient |= fIt; 831 833 intnetR0IfSend(pIf, pIfSender, pSG); … … 838 840 * frame will hit the wire. 839 841 */ 842 uint32_t fDst = 0; 840 843 PINTNETTRUNKIF pTrunkIf = pNetwork->pTrunkIF; 841 844 if ( pIfSender … … 843 846 && pTrunkIf->pIfPort) 844 847 { 845 uint32_t fDst = 0;846 847 848 /* promiscuous checks first as they are cheaper than pfnIsHostMac. */ 848 849 if ( pTrunkIf->fPromiscuousWire … … 865 866 intnetR0TrunkIfSend(pTrunkIf, pNetwork, fDst, pSG, fTrunkLocked); 866 867 } 868 869 /* log it */ 870 if ( !fExactIntNetRecipient 871 && !fDst 872 && ( (pEthHdr->MacDst.au8[0] == 0x08 && pEthHdr->MacDst.au8[1] == 0x00 && pEthHdr->MacDst.au8[2] == 0x27) 873 || (pEthHdr->MacSrc.au8[0] == 0x08 && pEthHdr->MacSrc.au8[1] == 0x00 && pEthHdr->MacSrc.au8[2] == 0x27))) 874 Log2(("Dst=%.6Rhxs ??\n", &pEthHdr->MacDst)); 867 875 868 876 return fExactIntNetRecipient; … … 930 938 AssertReturn(!cbLeft, false); 931 939 } 940 if ( (EthHdr.MacDst.au8[0] == 0x08 && EthHdr.MacDst.au8[1] == 0x00 && EthHdr.MacDst.au8[2] == 0x27) 941 || (EthHdr.MacSrc.au8[0] == 0x08 && EthHdr.MacSrc.au8[1] == 0x00 && EthHdr.MacSrc.au8[2] == 0x27) 942 || (EthHdr.MacDst.au8[0] == 0x00 && EthHdr.MacDst.au8[1] == 0x16 && EthHdr.MacDst.au8[2] == 0xcb) 943 || (EthHdr.MacSrc.au8[0] == 0x00 && EthHdr.MacSrc.au8[1] == 0x16 && EthHdr.MacSrc.au8[2] == 0xcb) 944 || EthHdr.MacDst.au8[0] == 0xff 945 || EthHdr.MacSrc.au8[0] == 0xff) 946 Log2(("D=%.6Rhxs S=%.6Rhxs T=%04x f=%x z=%x\n", 947 &EthHdr.MacDst, &EthHdr.MacSrc, RT_BE2H_U16(EthHdr.EtherType), fSrc, pSG->cbTotal)); 932 948 933 949 /* … … 974 990 INTNETR0DECL(int) INTNETR0IfSend(PINTNET pIntNet, INTNETIFHANDLE hIf, const void *pvFrame, unsigned cbFrame) 975 991 { 976 LogFlow(("INTNETR0IfSend: pIntNet=%p hIf=%RX32 pvFrame=%p cbFrame=%u\n", pIntNet, hIf, pvFrame, cbFrame));992 // LogFlow(("INTNETR0IfSend: pIntNet=%p hIf=%RX32 pvFrame=%p cbFrame=%u\n", pIntNet, hIf, pvFrame, cbFrame)); 977 993 978 994 /* … … 1386 1402 INTNETR0DECL(int) INTNETR0IfWait(PINTNET pIntNet, INTNETIFHANDLE hIf, uint32_t cMillies) 1387 1403 { 1388 LogFlow(("INTNETR0IfWait: pIntNet=%p hIf=%RX32 cMillies=%u\n", pIntNet, hIf, cMillies));1404 // LogFlow(("INTNETR0IfWait: pIntNet=%p hIf=%RX32 cMillies=%u\n", pIntNet, hIf, cMillies)); 1389 1405 1390 1406 /* … … 1429 1445 else 1430 1446 rc = VERR_SEM_DESTROYED; 1431 LogFlow(("INTNETR0IfWait: returns %Rrc\n", rc));1447 // LogFlow(("INTNETR0IfWait: returns %Rrc\n", rc)); 1432 1448 return rc; 1433 1449 } … … 1503 1519 static DECLCALLBACK(void) intnetR0IfDestruct(void *pvObj, void *pvUser1, void *pvUser2) 1504 1520 { 1505 LogFlow(("intnetR0IfDestruct: pvObj=%p pvUser1=%p pvUser2=%p\n", pvObj, pvUser1, pvUser2));1506 1521 PINTNETIF pIf = (PINTNETIF)pvUser1; 1507 1522 PINTNET pIntNet = (PINTNET)pvUser2; 1523 Log(("intnetR0IfDestruct: pvObj=%p pIf=%p pIntNet=%p hIf=%#x\n", pvObj, pIf, pIntNet, pIf->hIf)); 1508 1524 1509 1525 RTSemFastMutexRequest(pIntNet->FastMutex); … … 1717 1733 1718 1734 *phIf = pIf->hIf; 1719 LogFlow(("intnetR0NetworkCreateIf: returns VINF_SUCCESS *phIf=%p\n", *phIf)); 1735 Log(("intnetR0NetworkCreateIf: returns VINF_SUCCESS *phIf=%p cbSend=%u cbRecv=%u cbBuf=%u\n", 1736 *phIf, pIf->pIntBufDefault->cbSend, pIf->pIntBufDefault->cbRecv, pIf->pIntBufDefault->cbBuf)); 1720 1737 return VINF_SUCCESS; 1721 1738 } … … 2108 2125 static DECLCALLBACK(void) intnetR0NetworkDestruct(void *pvObj, void *pvUser1, void *pvUser2) 2109 2126 { 2110 LogFlow(("intnetR0NetworkDestruct: pvObj=%p pvUser1=%p pvUser2=%p\n", pvObj, pvUser1, pvUser2));2111 2127 PINTNETNETWORK pNetwork = (PINTNETNETWORK)pvUser1; 2112 2128 PINTNET pIntNet = (PINTNET)pvUser2; 2129 Log(("intnetR0NetworkDestruct: pvObj=%p pNetwork=%p pIntNet=%p %s\n", pvObj, pNetwork, pIntNet, pNetwork->szName)); 2113 2130 Assert(pNetwork->pIntNet == pIntNet); 2114 2131
Note:
See TracChangeset
for help on using the changeset viewer.