- Timestamp:
- Jan 10, 2025 10:08:56 PM (4 weeks ago)
- Location:
- trunk/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNATlibslirp.cpp
r107549 r107702 260 260 *********************************************************************************************************************************/ 261 261 static void drvNATNotifyNATThread(PDRVNAT pThis, const char *pszWho); 262 static void drvNAT_UpdateTimeout( uint32_t *uTimeout, void *opaque);262 static void drvNAT_UpdateTimeout(int *uTimeout, void *opaque); 263 263 static void drvNAT_CheckTimeout(void *opaque); 264 264 static DECLCALLBACK(int) drvNAT_AddPollCb(int iFd, int iEvents, void *opaque); … … 307 307 308 308 STAM_COUNTER_INC(&pThis->StatNATRecvWakeups); 309 return VINF_SUCCESS;309 return rc; 310 310 } 311 311 … … 424 424 memcpy((uint8_t *)pvSeg + cbHdrs, pbFrame + offPayload, cbPayload); 425 425 426 Assert((size_t)cbPayload > 0 && (size_t)cbHdrs > 0); 426 427 slirp_input(pThis->pNATState->pSlirp, (uint8_t const *)pvSeg, cbPayload + cbHdrs); 427 428 RTMemFree(pvSeg); … … 724 725 #else 725 726 unsigned int cPollNegRet = 0; 726 drvNAT_AddPollCb(RTPipeToNative(pThis->hPipeRead), SLIRP_POLL_IN | SLIRP_POLL_HUP, pThis); 727 pThis->pNATState->polls[0].fd = RTPipeToNative(pThis->hPipeRead); 727 RTHCINTPTR i64NativeReadPipe = RTPipeToNative(pThis->hPipeRead); 728 Assert(i64NativeReadPipe < INT_MAX); 729 drvNAT_AddPollCb(i64NativeReadPipe, SLIRP_POLL_IN | SLIRP_POLL_HUP, pThis); 730 pThis->pNATState->polls[0].fd = i64NativeReadPipe; 728 731 pThis->pNATState->polls[0].events = POLLRDNORM | POLLPRI | POLLRDBAND; 729 732 pThis->pNATState->polls[0].revents = 0; … … 747 750 */ 748 751 749 uint32_t uTimeout = DRVNAT_DEFAULT_TIMEOUT;752 int uTimeout = DRVNAT_DEFAULT_TIMEOUT; 750 753 pThis->pNATState->nsock = 1; 751 754 … … 1087 1090 * @thread ? 1088 1091 */ 1089 static void drvNAT_UpdateTimeout( uint32_t *uTimeout, void *opaque)1092 static void drvNAT_UpdateTimeout(int *uTimeout, void *opaque) 1090 1093 { 1091 1094 PDRVNAT pThis = (PDRVNAT)opaque; … … 1150 1153 * @thread ? 1151 1154 */ 1152 static int drvNAT_PollEventSlirpToHost(int iEvents) {1153 int iRet = 0;1155 static short drvNAT_PollEventSlirpToHost(int iEvents) { 1156 short iRet = 0; 1154 1157 #ifndef RT_OS_WINDOWS 1155 1158 if (iEvents & SLIRP_POLL_IN) iRet |= POLLIN; … … 1394 1397 if (pThis->pNATState->nsock + 1 >= pThis->pNATState->uPollCap) 1395 1398 { 1396 int cbNew = pThis->pNATState->uPollCap * 2 * sizeof(struct pollfd);1399 size_t cbNew = pThis->pNATState->uPollCap * 2 * sizeof(struct pollfd); 1397 1400 struct pollfd *pvNew = (struct pollfd *)RTMemRealloc(pThis->pNATState->polls, cbNew); 1398 1401 if (pvNew) … … 1405 1408 } 1406 1409 1407 int idx = pThis->pNATState->nsock; 1410 unsigned int uIdx = pThis->pNATState->nsock; 1411 Assert(uIdx < INT_MAX); 1408 1412 #ifdef RT_OS_WINDOWS 1409 pThis->pNATState->polls[ idx].fd = libslirp_wrap_RTHandleTableLookup(iFd);1413 pThis->pNATState->polls[uIdx].fd = libslirp_wrap_RTHandleTableLookup(iFd); 1410 1414 #else 1411 pThis->pNATState->polls[ idx].fd = iFd;1415 pThis->pNATState->polls[uIdx].fd = iFd; 1412 1416 #endif 1413 pThis->pNATState->polls[ idx].events = drvNAT_PollEventSlirpToHost(iEvents);1414 pThis->pNATState->polls[ idx].revents = 0;1417 pThis->pNATState->polls[uIdx].events = drvNAT_PollEventSlirpToHost(iEvents); 1418 pThis->pNATState->polls[uIdx].revents = 0; 1415 1419 pThis->pNATState->nsock += 1; 1416 return idx;1420 return uIdx; 1417 1421 } 1418 1422 … … 1591 1595 int MTU = 1500; 1592 1596 GET_S32(rc, pDrvIns, pCfg, "SlirpMTU", MTU); 1593 int i32AliasMode = 0;1594 int i32MainAliasMode = 0;1595 GET_S32(rc, pDrvIns, pCfg, "AliasMode", i32MainAliasMode);1596 1597 int iIcmpCacheLimit = 100; 1597 1598 GET_S32(rc, pDrvIns, pCfg, "ICMPCacheLimit", iIcmpCacheLimit); 1598 1599 bool fLocalhostReachable = false; 1599 1600 GET_BOOL(rc, pDrvIns, pCfg, "LocalhostReachable", fLocalhostReachable); 1600 1601 i32AliasMode |= (i32MainAliasMode & 0x1 ? 0x1 : 0);1602 i32AliasMode |= (i32MainAliasMode & 0x2 ? 0x40 : 0);1603 i32AliasMode |= (i32MainAliasMode & 0x4 ? 0x4 : 0);1604 1601 int i32SoMaxConn = 10; 1605 1602 GET_S32(rc, pDrvIns, pCfg, "SoMaxConnection", i32SoMaxConn); -
trunk/src/libs/libslirp-4.8.0/src/libslirp.h
r107548 r107702 254 254 * such to add_poll, and add_poll returns an index. */ 255 255 SLIRP_EXPORT 256 #ifdef VBOX 257 void slirp_pollfds_fill(Slirp *slirp, int *timeout, 258 SlirpAddPollCb add_poll, void *opaque); 259 #else 256 260 void slirp_pollfds_fill(Slirp *slirp, uint32_t *timeout, 257 261 SlirpAddPollCb add_poll, void *opaque); 262 #endif 258 263 259 264 /* This is called by the application after sleeping, to report which file -
trunk/src/libs/libslirp-4.8.0/src/slirp.c
r107548 r107702 773 773 (((so)->so_state & (SS_FCANTRCVMORE | SS_ISFCONNECTED)) == SS_ISFCONNECTED) 774 774 775 #ifdef VBOX 776 static void slirp_update_timeout(Slirp *slirp, int *timeout) 777 { 778 int t; 779 #else 775 780 static void slirp_update_timeout(Slirp *slirp, uint32_t *timeout) 776 781 { 777 782 uint32_t t; 783 #endif 778 784 779 785 if (*timeout <= TIMEOUT_FAST) { … … 796 802 } 797 803 804 #ifdef VBOX 805 void slirp_pollfds_fill(Slirp *slirp, int *timeout, 806 SlirpAddPollCb add_poll, void *opaque) 807 #else 798 808 void slirp_pollfds_fill(Slirp *slirp, uint32_t *timeout, 799 809 SlirpAddPollCb add_poll, void *opaque) 810 #endif 800 811 { 801 812 struct socket *so, *so_next;
Note:
See TracChangeset
for help on using the changeset viewer.