Changeset 109079 in vbox for trunk/src/VBox/Devices/Network/DrvNATlibslirp.cpp
- Timestamp:
- Apr 25, 2025 9:52:51 AM (9 days ago)
- svn:sync-xref-src-repo-rev:
- 168621
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNATlibslirp.cpp
r108820 r109079 271 271 static int drvNATTimersAdjustTimeoutDown(PDRVNAT pThis, int cMsTimeout); 272 272 static void drvNATTimersRunExpired(PDRVNAT pThis); 273 static DECLCALLBACK(int) drvNAT_AddPollCb( int iFd, int iEvents, void *opaque);273 static DECLCALLBACK(int) drvNAT_AddPollCb(slirp_os_socket hFd, int iEvents, void *opaque); 274 274 static DECLCALLBACK(int64_t) drvNAT_ClockGetNsCb(void *opaque); 275 275 static DECLCALLBACK(int) drvNAT_GetREventsCb(int idx, void *opaque); … … 771 771 pThis->pNATState->nsock = 1; 772 772 773 int cMsTimeout = DRVNAT_DEFAULT_TIMEOUT;774 slirp_pollfds_fill (pThis->pNATState->pSlirp, &cMsTimeout, drvNAT_AddPollCb /* SlirpAddPollCb */, pThis /* opaque */);773 uint32_t cMsTimeout = DRVNAT_DEFAULT_TIMEOUT; 774 slirp_pollfds_fill_socket(pThis->pNATState->pSlirp, &cMsTimeout, drvNAT_AddPollCb /* SlirpAddPollCb */, pThis /* opaque */); 775 775 cMsTimeout = drvNATTimersAdjustTimeoutDown(pThis, cMsTimeout); 776 776 … … 1384 1384 * Registers poll. Unused function (other than logging). 1385 1385 */ 1386 static DECLCALLBACK(void) drvNAT_RegisterPoll(int fd, void *opaque) 1387 { 1388 RT_NOREF(fd, opaque); 1389 Log4(("Poll registered: fd=%d\n", fd)); 1386 static DECLCALLBACK(void) drvNAT_RegisterPoll(slirp_os_socket socket, void *opaque) 1387 { 1388 RT_NOREF(socket, opaque); 1389 #ifdef RT_OS_WINDOWS 1390 Log4(("Poll registered: fd=%p\n", socket)); 1391 #else 1392 Log4(("Poll registered: fd=%d\n", socket)); 1393 #endif 1390 1394 } 1391 1395 … … 1393 1397 * Unregisters poll. Unused function (other than logging). 1394 1398 */ 1395 static DECLCALLBACK(void) drvNAT_UnregisterPoll(int fd, void *opaque) 1396 { 1397 RT_NOREF(fd, opaque); 1398 Log4(("Poll unregistered: fd=%d\n", fd)); 1399 static DECLCALLBACK(void) drvNAT_UnregisterPoll(slirp_os_socket socket, void *opaque) 1400 { 1401 RT_NOREF(socket, opaque); 1402 #ifdef RT_OS_WINDOWS 1403 Log4(("Poll unregistered: fd=%p\n", socket)); 1404 #else 1405 Log4(("Poll unregistered: fd=%d\n", socket)); 1406 #endif 1399 1407 } 1400 1408 … … 1411 1419 * @thread ? 1412 1420 */ 1413 static DECLCALLBACK(int) drvNAT_AddPollCb( int iFd, int iEvents, void *opaque)1421 static DECLCALLBACK(int) drvNAT_AddPollCb(slirp_os_socket hFd, int iEvents, void *opaque) 1414 1422 { 1415 1423 PDRVNAT pThis = (PDRVNAT)opaque; … … 1430 1438 unsigned int uIdx = pThis->pNATState->nsock; 1431 1439 Assert(uIdx < INT_MAX); 1432 #ifdef RT_OS_WINDOWS 1433 pThis->pNATState->polls[uIdx].fd = libslirp_wrap_RTHandleTableLookup(iFd); 1434 #else 1435 pThis->pNATState->polls[uIdx].fd = iFd; 1436 #endif 1440 pThis->pNATState->polls[uIdx].fd = hFd; 1437 1441 pThis->pNATState->polls[uIdx].events = drvNAT_PollEventSlirpToHost(iEvents); 1438 1442 pThis->pNATState->polls[uIdx].revents = 0; … … 1686 1690 static SlirpCb slirpCallbacks = { 0 }; 1687 1691 1688 slirpCfg.version = 4;1692 slirpCfg.version = 6; 1689 1693 slirpCfg.restricted = false; 1690 1694 slirpCfg.in_enabled = true; … … 1731 1735 slirpCallbacks.timer_free = drvNAT_TimerFreeCb; 1732 1736 slirpCallbacks.timer_mod = drvNAT_TimerModCb; 1733 slirpCallbacks.register_poll_fd = drvNAT_RegisterPoll;1734 slirpCallbacks.unregister_poll_fd = drvNAT_UnregisterPoll;1735 1737 slirpCallbacks.notify = drvNAT_NotifyCb; 1736 1738 slirpCallbacks.init_completed = NULL; 1737 1739 slirpCallbacks.timer_new_opaque = NULL; 1740 slirpCallbacks.register_poll_socket = drvNAT_RegisterPoll; 1741 slirpCallbacks.unregister_poll_socket = drvNAT_UnregisterPoll; 1738 1742 1739 1743 /* … … 1788 1792 rc = RTWinSocketPair(AF_INET, SOCK_DGRAM, 0, pThis->ahWakeupSockPair); 1789 1793 AssertRCReturn(rc, rc); 1790 1791 uint32_t hReadFd = 0;1792 uint32_t hWriteFd = 0;1793 1794 rc = libslirp_wrap_RTHandleTableAlloc(pThis->ahWakeupSockPair[0], &hReadFd);1795 AssertRCReturn(rc, rc);1796 1797 rc = libslirp_wrap_RTHandleTableAlloc(pThis->ahWakeupSockPair[1], &hWriteFd);1798 AssertRCReturn(rc, rc);1799 1800 Log4Func(("Created wakeup socket pair.\nSocket details - read:%d, write%d\n \1801 Handle details - read:%d, write%d\n", pThis->ahWakeupSockPair[0],1802 pThis->ahWakeupSockPair[1], hReadFd, hWriteFd));1803 1804 /**1805 * @todo r=jack: should probably use the internal handles up in the io1806 * thread. Will fix (or just update libslirp and this translation stuff1807 * might go away).1808 */1809 1794 #else 1810 1795 /* Create the control pipe. */
Note:
See TracChangeset
for help on using the changeset viewer.