VirtualBox

Changeset 30004 in vbox


Ignore:
Timestamp:
Jun 2, 2010 9:35:10 PM (14 years ago)
Author:
vboxsync
Message:

SrvIntNetR0.cpp: intnetR0NetworkDeliver must send to the internal network before hitting the wire or the other guests will get the edited ARP packages when MAC sharing is enabled (wireless). Fixes #4960.

File:
1 edited

Legend:

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

    r29707 r30004  
    31063106{
    31073107    /*
    3108      * Trunk first so we don't wast any more time before hitting the wire.
     3108     * Do the interfaces first before sending it to the wire and risk having to
     3109     * modify it.
     3110     */
     3111    uint32_t iIf = pDstTab->cIfs;
     3112    while (iIf-- > 0)
     3113    {
     3114        PINTNETIF pIf = pDstTab->aIfs[iIf].pIf;
     3115        intnetR0IfSend(pIf, pIfSender, pSG,
     3116                       pDstTab->aIfs[iIf].fReplaceDstMac ? &pIf->MacAddr: NULL);
     3117        intnetR0BusyDecIf(pIf);
     3118        pDstTab->aIfs[iIf].pIf = NULL;
     3119    }
     3120    pDstTab->cIfs = 0;
     3121
     3122    /*
     3123     * Send to the trunk.
    31093124     *
    31103125     * Note! The switching functions will include the trunk even when the frame
     
    31253140        pDstTab->fTrunkDst = 0;
    31263141    }
    3127 
    3128     /*
    3129      * Do the interfaces.
    3130      */
    3131     uint32_t iIf = pDstTab->cIfs;
    3132     while (iIf-- > 0)
    3133     {
    3134         PINTNETIF pIf = pDstTab->aIfs[iIf].pIf;
    3135         intnetR0IfSend(pIf, pIfSender, pSG,
    3136                        pDstTab->aIfs[iIf].fReplaceDstMac ? &pIf->MacAddr: NULL);
    3137         intnetR0BusyDecIf(pIf);
    3138         pDstTab->aIfs[iIf].pIf = NULL;
    3139     }
    3140     pDstTab->cIfs = 0;
    31413142}
    31423143
     
    39453946
    39463947    /*
    3947      * Set fDestroying if requested to do so and then wake up all the sleeping       
    3948      * threads (usually just one).   We leave the semaphore in the signalled 
     3948     * Set fDestroying if requested to do so and then wake up all the sleeping
     3949     * threads (usually just one).   We leave the semaphore in the signalled
    39493950     * state so the next caller will return immediately.
    39503951     */
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