VirtualBox

Changeset 107730 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Jan 13, 2025 10:34:52 PM (4 weeks ago)
Author:
vboxsync
Message:

Devices/Network: Parfait fixes. bugref:3409

File:
1 edited

Legend:

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

    r107702 r107730  
    6565#include <iprt/cidr.h>
    6666#include <iprt/file.h>
     67#include <iprt/nocrt/limits.h>
    6768#include <iprt/mem.h>
    6869#include <iprt/net.h>
     
    127128#define GET_STRING_ALLOC(rc, pdrvins, node, name, var) \
    128129    GET_EXTRADATA(pdrvins, node, name, (rc), StringAlloc, string, (var))
     130#define GET_U16_STRICT(rc, pdrvins, node, name, var) \
     131    GET_ED_STRICT(pdrvins, node, name, (rc), U16, int, (var))
    129132#define GET_S32(rc, pdrvins, node, name, var) \
    130133    GET_EXTRADATA(pdrvins, node, name, (rc), S32, int, (var))
    131 #define GET_S32_STRICT(rc, pdrvins, node, name, var) \
    132     GET_ED_STRICT(pdrvins, node, name, (rc), S32, int, (var))
     134#define GET_U32(rc, pdrvins, node, name, var) \
     135    GET_EXTRADATA(pdrvins, node, name, (rc), U32, int, (var))
    133136
    134137#define DO_GET_IP(rc, node, instance, status, x)                                \
     
    260263*********************************************************************************************************************************/
    261264static void drvNATNotifyNATThread(PDRVNAT pThis, const char *pszWho);
    262 static void drvNAT_UpdateTimeout(int *uTimeout, void *opaque);
     265static void drvNAT_UpdateTimeout(int *i32Timeout, void *opaque);
    263266static void drvNAT_CheckTimeout(void *opaque);
    264267static DECLCALLBACK(int) drvNAT_AddPollCb(int iFd, int iEvents, void *opaque);
     
    750753         */
    751754
    752         int uTimeout = DRVNAT_DEFAULT_TIMEOUT;
     755        int i32Timeout = DRVNAT_DEFAULT_TIMEOUT;
    753756        pThis->pNATState->nsock = 1;
    754757
    755         slirp_pollfds_fill(pThis->pNATState->pSlirp, &uTimeout, drvNAT_AddPollCb /* SlirpAddPollCb */, pThis /* opaque */);
    756         drvNAT_UpdateTimeout(&uTimeout, pThis);
     758        slirp_pollfds_fill(pThis->pNATState->pSlirp, &i32Timeout, drvNAT_AddPollCb /* SlirpAddPollCb */, pThis /* opaque */);
     759        drvNAT_UpdateTimeout(&i32Timeout, pThis);
    757760
    758761#ifdef RT_OS_WINDOWS
    759         int cChangedFDs = WSAPoll(pThis->pNATState->polls, pThis->pNATState->nsock, uTimeout /* timeout */);
     762        int cChangedFDs = WSAPoll(pThis->pNATState->polls, pThis->pNATState->nsock, i32Timeout /* timeout */);
    760763        /* Note: This must be called IMMEDIATELY after WSAPoll. */
    761764        int error = WSAGetLastError();
    762765#else
    763         int cChangedFDs = poll(pThis->pNATState->polls, pThis->pNATState->nsock, uTimeout /* timeout */);
     766        int cChangedFDs = poll(pThis->pNATState->polls, pThis->pNATState->nsock, i32Timeout /* timeout */);
    764767#endif
    765768        if (cChangedFDs < 0)
     
    926929                                       iInstance);
    927930        /* host port */
    928         int32_t iHostPort;
    929         GET_S32_STRICT(rc, pDrvIns, pNode, "HostPort", iHostPort);
     931        uint16_t iHostPort;
     932        GET_U16_STRICT(rc, pDrvIns, pNode, "HostPort", iHostPort);
    930933
    931934        /* guest port */
    932         int32_t iGuestPort;
    933         GET_S32_STRICT(rc, pDrvIns, pNode, "GuestPort", iGuestPort);
     935        uint16_t iGuestPort;
     936        GET_U16_STRICT(rc, pDrvIns, pNode, "GuestPort", iGuestPort);
    934937
    935938        /** @todo r=jack: why are we using IP INADD_ANY for port forward when FE does not do so. */
     
    10851088 * Update the timeout field in given list of Slirp timers.
    10861089 *
    1087  * @param uTimeout  Pointer to timeout value.
     1090 * @param i32Timeout  Pointer to timeout value.
    10881091 * @param opaque    Pointer to NAT State context.
    10891092 *
    10901093 * @thread  ?
    10911094 */
    1092 static void drvNAT_UpdateTimeout(int *uTimeout, void *opaque)
     1095static void drvNAT_UpdateTimeout(int *i32Timeout, void *opaque)
    10931096{
    10941097    PDRVNAT pThis = (PDRVNAT)opaque;
     
    11061109                diff = 0;
    11071110
    1108             if (diff < *uTimeout)
    1109                 *uTimeout = diff;
     1111            if (diff < *i32Timeout)
     1112                *i32Timeout = RT_MIN(diff, INT_MAX);
    11101113        }
    11111114
     
    12131216 * @thread  ?
    12141217 */
    1215 static DECLCALLBACK(ssize_t) drvNAT_SendPacketCb(const void *pBuf, size_t cb, void *opaque /* PDRVNAT */)
     1218static DECLCALLBACK(ssize_t) drvNAT_SendPacketCb(const void *pBuf, ssize_t cb, void *opaque /* PDRVNAT */)
    12161219{
    12171220    char *pNewBuf = (char *)RTMemAlloc(cb);
     
    15931596    int fDNSProxy = 0;
    15941597    GET_S32(rc, pDrvIns, pCfg, "DNSProxy", fDNSProxy);
    1595     int MTU = 1500;
    1596     GET_S32(rc, pDrvIns, pCfg, "SlirpMTU", MTU);
     1598    unsigned int MTU = 1500;
     1599    GET_U32(rc, pDrvIns, pCfg, "SlirpMTU", MTU);
    15971600    int iIcmpCacheLimit = 100;
    15981601    GET_S32(rc, pDrvIns, pCfg, "ICMPCacheLimit", iIcmpCacheLimit);
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