Changeset 21011 in vbox
- Timestamp:
- Jun 29, 2009 5:14:02 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 49225
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNAT.cpp
r21010 r21011 58 58 #define VBOX_NAT_DELAY_HACK 59 59 60 61 60 #define GET_EXTRADATA(node, drv_inst, name, rc, type, type_name, var) \ 62 61 do { \ 63 62 (rc) = CFGMR3Query ## type((node), name, &(var)); \ 64 63 if (RT_FAILURE((rc)) && (rc) != VERR_CFGM_VALUE_NOT_FOUND) \ 64 return PDMDrvHlpVMSetError(pThis->pDrvIns, (rc), RT_SRC_POS, N_("NAT#%d: configuration" \ 65 " query for \""name"\" " #type_name " failed"), (drv_inst)); \ 66 }while(0) 67 68 #define GET_ED_STRICT(node, drv_inst, name, rc, type, type_name, var) \ 69 do { \ 70 (rc) = CFGMR3Query ## type((node), name, &(var)); \ 71 if (RT_FAILURE((rc))) \ 65 72 return PDMDrvHlpVMSetError(pThis->pDrvIns, (rc), RT_SRC_POS, N_("NAT#%d: configuration" \ 66 73 " query for \""name"\" " #type_name " failed"), (drv_inst)); \ … … 83 90 #define GET_S32(rc, node, drv_inst, name, var) \ 84 91 GET_EXTRADATA(node, drv_inst, name, (rc), S32, int, (var)) 92 #define GET_S32_STRICT(rc, node, drv_inst, name, var) \ 93 GET_ED_STRICT(node, drv_inst, name, (rc), S32, int, (var)) 85 94 86 95 /******************************************************************************* … … 724 733 /* host port */ 725 734 int32_t iHostPort; 726 rc = CFGMR3QueryS32(pNode, "HostPort", &iHostPort); 727 if (RT_FAILURE(rc)) 728 return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"HostPort\" integer failed"), iInstance); 735 GET_S32_STRICT(rc, pNode, iInstance, "HostPort", iHostPort); 729 736 730 737 /* guest port */ 731 738 int32_t iGuestPort; 732 rc = CFGMR3QueryS32(pNode, "GuestPort", &iGuestPort); 733 if (RT_FAILURE(rc)) 734 return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"GuestPort\" integer failed"), iInstance); 739 GET_S32_STRICT(rc, pNode, iInstance, "GuestPort", iGuestPort); 735 740 736 741 /* guest address */ … … 745 750 if (slirp_redir(pThis->pNATState, fUDP, BindIP, iHostPort, GuestIP, iGuestPort) < 0) 746 751 return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_NAT_REDIR_SETUP, RT_SRC_POS, 747 N_("NAT#%d: configuration error: failed to set up redirection of %d to %d. Probably a conflict with existing services or other rules"), iInstance, iHostPort, iGuestPort); 752 N_("NAT#%d: configuration error: failed to set up " 753 "redirection of %d to %d. Probably a conflict with " 754 "existing services or other rules"), iInstance, iHostPort, 755 iGuestPort); 748 756 #undef GETIP 749 757 } /* for each redir rule */ … … 801 809 "SocketRcvBuf\0SocketSndBuf\0TcpRcvSpace\0TcpSndSpace\0")) 802 810 return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES, 803 N_("Unknown NAT configuration option, only supports PassDomain, TFTPPrefix, BootFile and Network")); 811 N_("Unknown NAT configuration option, only supports PassDomain," 812 " TFTPPrefix, BootFile and Network")); 804 813 805 814 /* … … 901 910 slirp_register_statistics(pThis->pNATState, pDrvIns); 902 911 #ifdef VBOX_WITH_STATISTICS 903 PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatQueuePktSent, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "counting packet sent via PDM queue", "/Drivers/NAT%u/QueuePacketSent", pDrvIns->iInstance); 904 PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatQueuePktDropped, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "counting packet sent via PDM queue", "/Drivers/NAT%u/QueuePacketDropped", pDrvIns->iInstance); 912 PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatQueuePktSent, STAMTYPE_COUNTER, 913 STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "counting packet sent viai " 914 "PDM queue", "/Drivers/NAT%u/QueuePacketSent", pDrvIns->iInstance); 915 PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatQueuePktDropped, STAMTYPE_COUNTER, 916 STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "counting packet sent via PDM" 917 " queue", "/Drivers/NAT%u/QueuePacketDropped", pDrvIns->iInstance); 905 918 #endif 906 919 … … 923 936 } 924 937 925 rc = PDMDrvHlpPDMQueueCreate(pDrvIns, sizeof(DRVNATQUEUITEM), 50, 0, drvNATQueueConsumer, &pThis->pSendQueue); 938 rc = PDMDrvHlpPDMQueueCreate(pDrvIns, sizeof(DRVNATQUEUITEM), 50, 0, 939 drvNATQueueConsumer, &pThis->pSendQueue); 926 940 if (RT_FAILURE(rc)) 927 941 { … … 945 959 #else 946 960 pThis->hWakeupEvent = CreateEvent(NULL, FALSE, FALSE, NULL); /* auto-reset event */ 947 slirp_register_external_event(pThis->pNATState, pThis->hWakeupEvent, VBOX_WAKEUP_EVENT_INDEX); 961 slirp_register_external_event(pThis->pNATState, pThis->hWakeupEvent, 962 VBOX_WAKEUP_EVENT_INDEX); 948 963 #endif 949 964 950 rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pThread, pThis, drvNATAsyncIoThread, drvNATAsyncIoWakeup, 128 * _1K, RTTHREADTYPE_IO, "NAT"); 965 rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pThread, pThis, drvNATAsyncIoThread, 966 drvNATAsyncIoWakeup, 128 * _1K, RTTHREADTYPE_IO, "NAT"); 951 967 AssertReleaseRC(rc); 952 968 953 969 #ifdef VBOX_WITH_SLIRP_MT 954 rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pGuestThread, pThis, drvNATAsyncIoGuest, drvNATAsyncIoGuestWakeup, 128 * _1K, RTTHREADTYPE_IO, "NATGUEST"); 970 rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pGuestThread, pThis, drvNATAsyncIoGuest, 971 drvNATAsyncIoGuestWakeup, 128 * _1K, RTTHREADTYPE_IO, "NATGUEST"); 955 972 AssertReleaseRC(rc); 956 973 #endif
Note:
See TracChangeset
for help on using the changeset viewer.