VirtualBox

Ignore:
Timestamp:
Apr 9, 2010 1:50:54 PM (15 years ago)
Author:
vboxsync
Message:

DrvNAT: disabled buffer poisoning that was accidentally left enabled by r59764.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/DrvNAT.cpp

    r28138 r28143  
    220220
    221221
    222 static void drvNATNotifyNATThread(PDRVNAT pThis);
    223 static DECLCALLBACK(void) drvNATSlowTimer(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser);
    224 static DECLCALLBACK(void) drvNATFast(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser);
    225 
    226 
    227 
    228 static DECLCALLBACK(void) drvNATSlowTimer(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser)
    229 {
    230     Assert(pvUser);
    231     PDRVNAT pThis = (PDRVNAT)pvUser;
    232     drvNATNotifyNATThread(pThis);
    233 }
    234 
    235 static DECLCALLBACK(void) drvNATFastTimer(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser)
    236 {
    237     Assert(pvUser);
    238     PDRVNAT pThis = (PDRVNAT)pvUser;
    239     drvNATNotifyNATThread(pThis);
    240 }
     222/*******************************************************************************
     223*   Internal Functions                                                         *
     224*******************************************************************************/
     225static void drvNATNotifyNATThread(PDRVNAT pThis, const char *pszWho);
     226
    241227
    242228
     
    323309    {
    324310        drvNATRecvWakeup(pThis->pDrvIns, pThis->pRecvThread);
    325         drvNATNotifyNATThread(pThis);
     311        drvNATNotifyNATThread(pThis, "drvNATUrgRecvWorker");
    326312    }
    327313}
     
    335321    STAM_PROFILE_START(&pThis->StatNATRecvWait, b);
    336322
    337     while(ASMAtomicReadU32(&pThis->cUrgPkt) != 0)
     323    while (ASMAtomicReadU32(&pThis->cUrgPkt) != 0)
    338324    {
    339325        rc = RTSemEventWait(pThis->EventRecv, RT_INDEFINITE_WAIT);
    340326        if (   RT_FAILURE(rc)
    341             && ( rc == VERR_TIMEOUT
    342                  || rc == VERR_INTERRUPTED))
     327            && (   rc == VERR_TIMEOUT
     328                || rc == VERR_INTERRUPTED))
    343329            goto done_unlocked;
    344330    }
     
    354340    }
    355341    else if (   RT_FAILURE(rc)
    356              && rc != VERR_TIMEOUT
    357                 && rc != VERR_INTERRUPTED))
     342             && rc != VERR_TIMEOUT
     343             && rc != VERR_INTERRUPTED)
    358344    {
    359345        AssertRC(rc);
     
    370356    ASMAtomicDecU32(&pThis->cPkt);
    371357
    372     drvNATNotifyNATThread(pThis);
     358    drvNATNotifyNATThread(pThis, "drvNATRecvWorker");
    373359
    374360    STAM_PROFILE_STOP(&pThis->StatNATRecvWait, b);
     
    525511    pSgBuf->cSegs       = 1;
    526512
    527 #if 1 /* poison */
     513#if 0 /* poison */
    528514    memset(pSgBuf->aSegs[0].pvSeg, 'F', pSgBuf->aSegs[0].cbSeg);
    529515#endif
     
    562548        if (RT_SUCCESS(rc))
    563549        {
    564             drvNATNotifyNATThread(pThis);
     550            drvNATNotifyNATThread(pThis, "drvNATNetworkUp_SendBuf");
    565551            return VINF_SUCCESS;
    566552        }
     
    594580 * Get the NAT thread out of poll/WSAWaitForMultipleEvents
    595581 */
    596 static void drvNATNotifyNATThread(PDRVNAT pThis)
     582static void drvNATNotifyNATThread(PDRVNAT pThis, const char *pszWho)
    597583{
    598584    int rc;
    599585#ifndef RT_OS_WINDOWS
    600     /* kick select() */
     586    /* kick poll() */
    601587    rc = RTFileWrite(pThis->PipeWrite, "", 1, NULL);
    602588#else
     
    664650    if (RT_LIKELY(rc == VERR_TIMEOUT))
    665651    {
    666         drvNATNotifyNATThread(pThis);
     652        drvNATNotifyNATThread(pThis, "drvNATNetworkUp_NotifyLinkChanged");
    667653        rc = RTReqWait(pReq, RT_INDEFINITE_WAIT);
    668654        AssertRC(rc);
     
    771757                 * XXX:Make it reading exactly we need to drain the pipe.
    772758                 */
     759                /** @todo use RTPipeCreate + RTPipeRead(,biggerbuffer) here, it's
     760                 *        non-blocking. */
    773761                RTFileRead(pThis->PipeRead, &ch, 1, &cbRead);
    774762            }
     
    830818    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    831819
    832     drvNATNotifyNATThread(pThis);
     820    drvNATNotifyNATThread(pThis, "drvNATAsyncIoWakeup");
    833821    return VINF_SUCCESS;
    834822}
     
    859847#endif /* VBOX_WITH_SLIRP_MT */
    860848
     849
     850/**
     851 * The callback for the fast (2 ms) NAT timer.
     852 *
     853 * @param   pDrvIns             The driver instance.
     854 * @param   pTimer              The timer handle.
     855 * @param   pvUser              The NAT instance data.
     856 */
     857static DECLCALLBACK(void) drvNATFastTimer(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser)
     858{
     859    PDRVNAT pThis = (PDRVNAT)pvUser;
     860    drvNATNotifyNATThread(pThis, "drvNATFastTimer");
     861}
     862
    861863void slirp_arm_fast_timer(void *pvUser)
    862864{
    863865    PDRVNAT pThis = (PDRVNAT)pvUser;
    864     Assert(pThis);
     866    AssertPtr(pThis);
    865867    TMTimerSetMillies(pThis->pTmrFast, 2);
    866868}
    867869
     870/**
     871 * The callback for the slow (500 ms) NAT timer.
     872 *
     873 * @param   pDrvIns             The driver instance.
     874 * @param   pTimer              The timer handle.
     875 * @param   pvUser              The NAT instance data.
     876 */
     877static DECLCALLBACK(void) drvNATSlowTimer(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser)
     878{
     879    PDRVNAT pThis = (PDRVNAT)pvUser;
     880    drvNATNotifyNATThread(pThis, "drvNATSlowTimer");
     881}
     882
    868883void slirp_arm_slow_timer(void *pvUser)
    869884{
    870885    PDRVNAT pThis = (PDRVNAT)pvUser;
    871     Assert(pThis);
     886    AssertPtr(pThis);
    872887    TMTimerSetMillies(pThis->pTmrSlow, 500);
    873888}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette