Changeset 101469 in vbox for trunk/src/VBox/Main/src-client
- Timestamp:
- Oct 17, 2023 10:22:01 AM (15 months ago)
- Location:
- trunk/src/VBox/Main/src-client
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/ConsoleImplConfigCommon.cpp
r101465 r101469 4630 4630 4631 4631 4632 int Console::i_configNetworkCtrls(ComPtr<IMachine> pMachine, ComPtr<IPlatformProperties> pPlatformProperties, 4633 ChipsetType_T enmChipset, BusAssignmentManager *pBusMgr, PCVMMR3VTABLE pVMM, PUVM pUVM, 4634 PCFGMNODE pDevices, std::list<BootNic> &llBootNics) 4635 { 4636 /* Comment out the following line to remove VMWare compatibility hack. */ 4637 #define VMWARE_NET_IN_SLOT_11 4638 4639 PCFGMNODE pDev = NULL; /* /Devices/Dev/ */ 4640 PCFGMNODE pInst = NULL; /* /Devices/Dev/0/ */ 4641 PCFGMNODE pCfg = NULL; /* /Devices/Dev/.../Config/ */ 4642 PCFGMNODE pLunL0 = NULL; /* /Devices/Dev/0/LUN#0/ */ 4643 4644 ULONG maxNetworkAdapters; 4645 HRESULT hrc = pPlatformProperties->GetMaxNetworkAdapters(enmChipset, &maxNetworkAdapters); H(); 4646 4647 #ifdef VMWARE_NET_IN_SLOT_11 4648 bool fSwapSlots3and11 = false; 4649 #endif 4650 PCFGMNODE pDevPCNet = NULL; /* PCNet-type devices */ 4651 InsertConfigNode(pDevices, "pcnet", &pDevPCNet); 4652 #ifdef VBOX_WITH_E1000 4653 PCFGMNODE pDevE1000 = NULL; /* E1000-type devices */ 4654 InsertConfigNode(pDevices, "e1000", &pDevE1000); 4655 #endif 4656 #ifdef VBOX_WITH_VIRTIO 4657 PCFGMNODE pDevVirtioNet = NULL; /* Virtio network devices */ 4658 InsertConfigNode(pDevices, "virtio-net", &pDevVirtioNet); 4659 #endif /* VBOX_WITH_VIRTIO */ 4660 PCFGMNODE pDevDP8390 = NULL; /* DP8390-type devices */ 4661 InsertConfigNode(pDevices, "dp8390", &pDevDP8390); 4662 PCFGMNODE pDev3C501 = NULL; /* EtherLink-type devices */ 4663 InsertConfigNode(pDevices, "3c501", &pDev3C501); 4664 4665 for (ULONG uInstance = 0; uInstance < maxNetworkAdapters; ++uInstance) 4666 { 4667 ComPtr<INetworkAdapter> networkAdapter; 4668 hrc = pMachine->GetNetworkAdapter(uInstance, networkAdapter.asOutParam()); H(); 4669 BOOL fEnabledNetAdapter = FALSE; 4670 hrc = networkAdapter->COMGETTER(Enabled)(&fEnabledNetAdapter); H(); 4671 if (!fEnabledNetAdapter) 4672 continue; 4673 4674 /* 4675 * The virtual hardware type. Create appropriate device first. 4676 */ 4677 const char *pszAdapterName = "pcnet"; 4678 NetworkAdapterType_T adapterType; 4679 hrc = networkAdapter->COMGETTER(AdapterType)(&adapterType); H(); 4680 switch (adapterType) 4681 { 4682 case NetworkAdapterType_Am79C970A: 4683 case NetworkAdapterType_Am79C973: 4684 case NetworkAdapterType_Am79C960: 4685 pDev = pDevPCNet; 4686 break; 4687 #ifdef VBOX_WITH_E1000 4688 case NetworkAdapterType_I82540EM: 4689 case NetworkAdapterType_I82543GC: 4690 case NetworkAdapterType_I82545EM: 4691 pDev = pDevE1000; 4692 pszAdapterName = "e1000"; 4693 break; 4694 #endif 4695 #ifdef VBOX_WITH_VIRTIO 4696 case NetworkAdapterType_Virtio: 4697 pDev = pDevVirtioNet; 4698 pszAdapterName = "virtio-net"; 4699 break; 4700 #endif /* VBOX_WITH_VIRTIO */ 4701 case NetworkAdapterType_NE1000: 4702 case NetworkAdapterType_NE2000: 4703 case NetworkAdapterType_WD8003: 4704 case NetworkAdapterType_WD8013: 4705 case NetworkAdapterType_ELNK2: 4706 pDev = pDevDP8390; 4707 break; 4708 case NetworkAdapterType_ELNK1: 4709 pDev = pDev3C501; 4710 break; 4711 default: 4712 AssertMsgFailed(("Invalid network adapter type '%d' for slot '%d'", adapterType, uInstance)); 4713 return pVMM->pfnVMR3SetError(pUVM, VERR_INVALID_PARAMETER, RT_SRC_POS, 4714 N_("Invalid network adapter type '%d' for slot '%d'"), adapterType, uInstance); 4715 } 4716 4717 InsertConfigNode(pDev, Utf8StrFmt("%u", uInstance).c_str(), &pInst); 4718 InsertConfigInteger(pInst, "Trusted", 1); /* boolean */ 4719 /* the first network card gets the PCI ID 3, the next 3 gets 8..10, 4720 * next 4 get 16..19. */ 4721 int iPCIDeviceNo; 4722 switch (uInstance) 4723 { 4724 case 0: 4725 iPCIDeviceNo = 3; 4726 break; 4727 case 1: case 2: case 3: 4728 iPCIDeviceNo = uInstance - 1 + 8; 4729 break; 4730 case 4: case 5: case 6: case 7: 4731 iPCIDeviceNo = uInstance - 4 + 16; 4732 break; 4733 default: 4734 /* auto assignment */ 4735 iPCIDeviceNo = -1; 4736 break; 4737 } 4738 #ifdef VMWARE_NET_IN_SLOT_11 4739 /* 4740 * Dirty hack for PCI slot compatibility with VMWare, 4741 * it assigns slot 0x11 to the first network controller. 4742 */ 4743 if (iPCIDeviceNo == 3 && adapterType == NetworkAdapterType_I82545EM) 4744 { 4745 iPCIDeviceNo = 0x11; 4746 fSwapSlots3and11 = true; 4747 } 4748 else if (iPCIDeviceNo == 0x11 && fSwapSlots3and11) 4749 iPCIDeviceNo = 3; 4750 #endif 4751 PCIBusAddress PCIAddr = PCIBusAddress(0, iPCIDeviceNo, 0); 4752 hrc = pBusMgr->assignPCIDevice(pszAdapterName, pInst, PCIAddr); H(); 4753 4754 InsertConfigNode(pInst, "Config", &pCfg); 4755 #ifdef VBOX_WITH_2X_4GB_ADDR_SPACE /* not safe here yet. */ /** @todo Make PCNet ring-0 safe on 32-bit mac kernels! */ 4756 if (pDev == pDevPCNet) 4757 InsertConfigInteger(pCfg, "R0Enabled", false); 4758 #endif 4759 /* 4760 * Collect information needed for network booting and add it to the list. 4761 */ 4762 BootNic nic; 4763 4764 nic.mInstance = uInstance; 4765 /* Could be updated by reference, if auto assigned */ 4766 nic.mPCIAddress = PCIAddr; 4767 4768 hrc = networkAdapter->COMGETTER(BootPriority)(&nic.mBootPrio); H(); 4769 4770 llBootNics.push_back(nic); 4771 4772 /* 4773 * The virtual hardware type. PCNet supports three types, E1000 three, 4774 * but VirtIO only one. 4775 */ 4776 switch (adapterType) 4777 { 4778 case NetworkAdapterType_Am79C970A: 4779 InsertConfigString(pCfg, "ChipType", "Am79C970A"); 4780 break; 4781 case NetworkAdapterType_Am79C973: 4782 InsertConfigString(pCfg, "ChipType", "Am79C973"); 4783 break; 4784 case NetworkAdapterType_Am79C960: 4785 InsertConfigString(pCfg, "ChipType", "Am79C960"); 4786 break; 4787 case NetworkAdapterType_I82540EM: 4788 InsertConfigInteger(pCfg, "AdapterType", 0); 4789 break; 4790 case NetworkAdapterType_I82543GC: 4791 InsertConfigInteger(pCfg, "AdapterType", 1); 4792 break; 4793 case NetworkAdapterType_I82545EM: 4794 InsertConfigInteger(pCfg, "AdapterType", 2); 4795 break; 4796 case NetworkAdapterType_Virtio: 4797 break; 4798 case NetworkAdapterType_NE1000: 4799 InsertConfigString(pCfg, "DeviceType", "NE1000"); 4800 break; 4801 case NetworkAdapterType_NE2000: 4802 InsertConfigString(pCfg, "DeviceType", "NE2000"); 4803 break; 4804 case NetworkAdapterType_WD8003: 4805 InsertConfigString(pCfg, "DeviceType", "WD8003"); 4806 break; 4807 case NetworkAdapterType_WD8013: 4808 InsertConfigString(pCfg, "DeviceType", "WD8013"); 4809 break; 4810 case NetworkAdapterType_ELNK2: 4811 InsertConfigString(pCfg, "DeviceType", "3C503"); 4812 break; 4813 case NetworkAdapterType_ELNK1: 4814 break; 4815 case NetworkAdapterType_Null: AssertFailedBreak(); /* (compiler warnings) */ 4816 #ifdef VBOX_WITH_XPCOM_CPP_ENUM_HACK 4817 case NetworkAdapterType_32BitHack: AssertFailedBreak(); /* (compiler warnings) */ 4818 #endif 4819 } 4820 4821 /* 4822 * Get the MAC address and convert it to binary representation 4823 */ 4824 Bstr macAddr; 4825 hrc = networkAdapter->COMGETTER(MACAddress)(macAddr.asOutParam()); H(); 4826 Assert(!macAddr.isEmpty()); 4827 Utf8Str macAddrUtf8 = macAddr; 4828 #ifdef VBOX_WITH_CLOUD_NET 4829 NetworkAttachmentType_T eAttachmentType; 4830 hrc = networkAdapter->COMGETTER(AttachmentType)(&eAttachmentType); H(); 4831 if (eAttachmentType == NetworkAttachmentType_Cloud) 4832 { 4833 mGateway.setLocalMacAddress(macAddrUtf8); 4834 /* We'll insert cloud MAC later, when it becomes known. */ 4835 } 4836 else 4837 { 4838 #endif 4839 char *macStr = (char*)macAddrUtf8.c_str(); 4840 Assert(strlen(macStr) == 12); 4841 RTMAC Mac; 4842 RT_ZERO(Mac); 4843 char *pMac = (char*)&Mac; 4844 for (uint32_t i = 0; i < 6; ++i) 4845 { 4846 int c1 = *macStr++ - '0'; 4847 if (c1 > 9) 4848 c1 -= 7; 4849 int c2 = *macStr++ - '0'; 4850 if (c2 > 9) 4851 c2 -= 7; 4852 *pMac++ = (char)(((c1 & 0x0f) << 4) | (c2 & 0x0f)); 4853 } 4854 InsertConfigBytes(pCfg, "MAC", &Mac, sizeof(Mac)); 4855 #ifdef VBOX_WITH_CLOUD_NET 4856 } 4857 #endif 4858 /* 4859 * Check if the cable is supposed to be unplugged 4860 */ 4861 BOOL fCableConnected; 4862 hrc = networkAdapter->COMGETTER(CableConnected)(&fCableConnected); H(); 4863 InsertConfigInteger(pCfg, "CableConnected", fCableConnected ? 1 : 0); 4864 4865 /* 4866 * Line speed to report from custom drivers 4867 */ 4868 ULONG ulLineSpeed; 4869 hrc = networkAdapter->COMGETTER(LineSpeed)(&ulLineSpeed); H(); 4870 InsertConfigInteger(pCfg, "LineSpeed", ulLineSpeed); 4871 4872 /* 4873 * Attach the status driver. 4874 */ 4875 i_attachStatusDriver(pInst, DeviceType_Network); 4876 4877 /* 4878 * Configure the network card now 4879 */ 4880 bool fIgnoreConnectFailure = mMachineState == MachineState_Restoring; 4881 int vrc = i_configNetwork(pszAdapterName, 4882 uInstance, 4883 0, 4884 networkAdapter, 4885 pCfg, 4886 pLunL0, 4887 pInst, 4888 false /*fAttachDetach*/, 4889 fIgnoreConnectFailure, 4890 pUVM, 4891 pVMM); 4892 if (RT_FAILURE(vrc)) 4893 return vrc; 4894 } 4895 4896 return VINF_SUCCESS; 4897 } 4898 4899 4632 4900 int Console::i_configGuestDbg(ComPtr<IVirtualBox> pVBox, ComPtr<IMachine> pMachine, PCFGMNODE pRoot) 4633 4901 { -
trunk/src/VBox/Main/src-client/ConsoleImplConfigX86.cpp
r101468 r101469 146 146 /* Darwin compile kludge */ 147 147 #undef PVM 148 149 /* Comment out the following line to remove VMWare compatibility hack. */150 #define VMWARE_NET_IN_SLOT_11151 152 /**153 * Simple class for storing network boot information.154 */155 struct BootNic156 {157 ULONG mInstance;158 PCIBusAddress mPCIAddress;159 160 ULONG mBootPrio;161 bool operator < (const BootNic &rhs) const162 {163 ULONG lval = mBootPrio - 1; /* 0 will wrap around and get the lowest priority. */164 ULONG rval = rhs.mBootPrio - 1;165 return lval < rval; /* Zero compares as highest number (lowest prio). */166 }167 };168 148 169 149 /** … … 664 644 ComPtr<IPlatformProperties> platformProperties; 665 645 virtualBox->GetPlatformProperties(PlatformArchitecture_x86, platformProperties.asOutParam()); 666 667 ULONG maxNetworkAdapters;668 hrc = platformProperties->GetMaxNetworkAdapters(chipsetType, &maxNetworkAdapters); H();669 646 670 647 /* … … 1671 1648 * Network adapters 1672 1649 */ 1673 #ifdef VMWARE_NET_IN_SLOT_111674 bool fSwapSlots3and11 = false;1675 #endif1676 PCFGMNODE pDevPCNet = NULL; /* PCNet-type devices */1677 InsertConfigNode(pDevices, "pcnet", &pDevPCNet);1678 #ifdef VBOX_WITH_E10001679 PCFGMNODE pDevE1000 = NULL; /* E1000-type devices */1680 InsertConfigNode(pDevices, "e1000", &pDevE1000);1681 #endif1682 #ifdef VBOX_WITH_VIRTIO1683 PCFGMNODE pDevVirtioNet = NULL; /* Virtio network devices */1684 InsertConfigNode(pDevices, "virtio-net", &pDevVirtioNet);1685 #endif /* VBOX_WITH_VIRTIO */1686 PCFGMNODE pDevDP8390 = NULL; /* DP8390-type devices */1687 InsertConfigNode(pDevices, "dp8390", &pDevDP8390);1688 PCFGMNODE pDev3C501 = NULL; /* EtherLink-type devices */1689 InsertConfigNode(pDevices, "3c501", &pDev3C501);1690 1691 1650 std::list<BootNic> llBootNics; 1692 for (ULONG uInstance = 0; uInstance < maxNetworkAdapters; ++uInstance) 1693 { 1694 ComPtr<INetworkAdapter> networkAdapter; 1695 hrc = pMachine->GetNetworkAdapter(uInstance, networkAdapter.asOutParam()); H(); 1696 BOOL fEnabledNetAdapter = FALSE; 1697 hrc = networkAdapter->COMGETTER(Enabled)(&fEnabledNetAdapter); H(); 1698 if (!fEnabledNetAdapter) 1699 continue; 1700 1701 /* 1702 * The virtual hardware type. Create appropriate device first. 1703 */ 1704 const char *pszAdapterName = "pcnet"; 1705 NetworkAdapterType_T adapterType; 1706 hrc = networkAdapter->COMGETTER(AdapterType)(&adapterType); H(); 1707 switch (adapterType) 1708 { 1709 case NetworkAdapterType_Am79C970A: 1710 case NetworkAdapterType_Am79C973: 1711 case NetworkAdapterType_Am79C960: 1712 pDev = pDevPCNet; 1713 break; 1714 #ifdef VBOX_WITH_E1000 1715 case NetworkAdapterType_I82540EM: 1716 case NetworkAdapterType_I82543GC: 1717 case NetworkAdapterType_I82545EM: 1718 pDev = pDevE1000; 1719 pszAdapterName = "e1000"; 1720 break; 1721 #endif 1722 #ifdef VBOX_WITH_VIRTIO 1723 case NetworkAdapterType_Virtio: 1724 pDev = pDevVirtioNet; 1725 pszAdapterName = "virtio-net"; 1726 break; 1727 #endif /* VBOX_WITH_VIRTIO */ 1728 case NetworkAdapterType_NE1000: 1729 case NetworkAdapterType_NE2000: 1730 case NetworkAdapterType_WD8003: 1731 case NetworkAdapterType_WD8013: 1732 case NetworkAdapterType_ELNK2: 1733 pDev = pDevDP8390; 1734 break; 1735 case NetworkAdapterType_ELNK1: 1736 pDev = pDev3C501; 1737 break; 1738 default: 1739 AssertMsgFailed(("Invalid network adapter type '%d' for slot '%d'", adapterType, uInstance)); 1740 return pVMM->pfnVMR3SetError(pUVM, VERR_INVALID_PARAMETER, RT_SRC_POS, 1741 N_("Invalid network adapter type '%d' for slot '%d'"), adapterType, uInstance); 1742 } 1743 1744 InsertConfigNode(pDev, Utf8StrFmt("%u", uInstance).c_str(), &pInst); 1745 InsertConfigInteger(pInst, "Trusted", 1); /* boolean */ 1746 /* the first network card gets the PCI ID 3, the next 3 gets 8..10, 1747 * next 4 get 16..19. */ 1748 int iPCIDeviceNo; 1749 switch (uInstance) 1750 { 1751 case 0: 1752 iPCIDeviceNo = 3; 1753 break; 1754 case 1: case 2: case 3: 1755 iPCIDeviceNo = uInstance - 1 + 8; 1756 break; 1757 case 4: case 5: case 6: case 7: 1758 iPCIDeviceNo = uInstance - 4 + 16; 1759 break; 1760 default: 1761 /* auto assignment */ 1762 iPCIDeviceNo = -1; 1763 break; 1764 } 1765 #ifdef VMWARE_NET_IN_SLOT_11 1766 /* 1767 * Dirty hack for PCI slot compatibility with VMWare, 1768 * it assigns slot 0x11 to the first network controller. 1769 */ 1770 if (iPCIDeviceNo == 3 && adapterType == NetworkAdapterType_I82545EM) 1771 { 1772 iPCIDeviceNo = 0x11; 1773 fSwapSlots3and11 = true; 1774 } 1775 else if (iPCIDeviceNo == 0x11 && fSwapSlots3and11) 1776 iPCIDeviceNo = 3; 1777 #endif 1778 PCIBusAddress PCIAddr = PCIBusAddress(0, iPCIDeviceNo, 0); 1779 hrc = pBusMgr->assignPCIDevice(pszAdapterName, pInst, PCIAddr); H(); 1780 1781 InsertConfigNode(pInst, "Config", &pCfg); 1782 #ifdef VBOX_WITH_2X_4GB_ADDR_SPACE /* not safe here yet. */ /** @todo Make PCNet ring-0 safe on 32-bit mac kernels! */ 1783 if (pDev == pDevPCNet) 1784 InsertConfigInteger(pCfg, "R0Enabled", false); 1785 #endif 1786 /* 1787 * Collect information needed for network booting and add it to the list. 1788 */ 1789 BootNic nic; 1790 1791 nic.mInstance = uInstance; 1792 /* Could be updated by reference, if auto assigned */ 1793 nic.mPCIAddress = PCIAddr; 1794 1795 hrc = networkAdapter->COMGETTER(BootPriority)(&nic.mBootPrio); H(); 1796 1797 llBootNics.push_back(nic); 1798 1799 /* 1800 * The virtual hardware type. PCNet supports three types, E1000 three, 1801 * but VirtIO only one. 1802 */ 1803 switch (adapterType) 1804 { 1805 case NetworkAdapterType_Am79C970A: 1806 InsertConfigString(pCfg, "ChipType", "Am79C970A"); 1807 break; 1808 case NetworkAdapterType_Am79C973: 1809 InsertConfigString(pCfg, "ChipType", "Am79C973"); 1810 break; 1811 case NetworkAdapterType_Am79C960: 1812 InsertConfigString(pCfg, "ChipType", "Am79C960"); 1813 break; 1814 case NetworkAdapterType_I82540EM: 1815 InsertConfigInteger(pCfg, "AdapterType", 0); 1816 break; 1817 case NetworkAdapterType_I82543GC: 1818 InsertConfigInteger(pCfg, "AdapterType", 1); 1819 break; 1820 case NetworkAdapterType_I82545EM: 1821 InsertConfigInteger(pCfg, "AdapterType", 2); 1822 break; 1823 case NetworkAdapterType_Virtio: 1824 break; 1825 case NetworkAdapterType_NE1000: 1826 InsertConfigString(pCfg, "DeviceType", "NE1000"); 1827 break; 1828 case NetworkAdapterType_NE2000: 1829 InsertConfigString(pCfg, "DeviceType", "NE2000"); 1830 break; 1831 case NetworkAdapterType_WD8003: 1832 InsertConfigString(pCfg, "DeviceType", "WD8003"); 1833 break; 1834 case NetworkAdapterType_WD8013: 1835 InsertConfigString(pCfg, "DeviceType", "WD8013"); 1836 break; 1837 case NetworkAdapterType_ELNK2: 1838 InsertConfigString(pCfg, "DeviceType", "3C503"); 1839 break; 1840 case NetworkAdapterType_ELNK1: 1841 break; 1842 case NetworkAdapterType_Null: AssertFailedBreak(); /* (compiler warnings) */ 1843 #ifdef VBOX_WITH_XPCOM_CPP_ENUM_HACK 1844 case NetworkAdapterType_32BitHack: AssertFailedBreak(); /* (compiler warnings) */ 1845 #endif 1846 } 1847 1848 /* 1849 * Get the MAC address and convert it to binary representation 1850 */ 1851 Bstr macAddr; 1852 hrc = networkAdapter->COMGETTER(MACAddress)(macAddr.asOutParam()); H(); 1853 Assert(!macAddr.isEmpty()); 1854 Utf8Str macAddrUtf8 = macAddr; 1855 #ifdef VBOX_WITH_CLOUD_NET 1856 NetworkAttachmentType_T eAttachmentType; 1857 hrc = networkAdapter->COMGETTER(AttachmentType)(&eAttachmentType); H(); 1858 if (eAttachmentType == NetworkAttachmentType_Cloud) 1859 { 1860 mGateway.setLocalMacAddress(macAddrUtf8); 1861 /* We'll insert cloud MAC later, when it becomes known. */ 1862 } 1863 else 1864 { 1865 #endif 1866 char *macStr = (char*)macAddrUtf8.c_str(); 1867 Assert(strlen(macStr) == 12); 1868 RTMAC Mac; 1869 RT_ZERO(Mac); 1870 char *pMac = (char*)&Mac; 1871 for (uint32_t i = 0; i < 6; ++i) 1872 { 1873 int c1 = *macStr++ - '0'; 1874 if (c1 > 9) 1875 c1 -= 7; 1876 int c2 = *macStr++ - '0'; 1877 if (c2 > 9) 1878 c2 -= 7; 1879 *pMac++ = (char)(((c1 & 0x0f) << 4) | (c2 & 0x0f)); 1880 } 1881 InsertConfigBytes(pCfg, "MAC", &Mac, sizeof(Mac)); 1882 #ifdef VBOX_WITH_CLOUD_NET 1883 } 1884 #endif 1885 /* 1886 * Check if the cable is supposed to be unplugged 1887 */ 1888 BOOL fCableConnected; 1889 hrc = networkAdapter->COMGETTER(CableConnected)(&fCableConnected); H(); 1890 InsertConfigInteger(pCfg, "CableConnected", fCableConnected ? 1 : 0); 1891 1892 /* 1893 * Line speed to report from custom drivers 1894 */ 1895 ULONG ulLineSpeed; 1896 hrc = networkAdapter->COMGETTER(LineSpeed)(&ulLineSpeed); H(); 1897 InsertConfigInteger(pCfg, "LineSpeed", ulLineSpeed); 1898 1899 /* 1900 * Attach the status driver. 1901 */ 1902 i_attachStatusDriver(pInst, DeviceType_Network); 1903 1904 /* 1905 * Configure the network card now 1906 */ 1907 bool fIgnoreConnectFailure = mMachineState == MachineState_Restoring; 1908 vrc = i_configNetwork(pszAdapterName, 1909 uInstance, 1910 0, 1911 networkAdapter, 1912 pCfg, 1913 pLunL0, 1914 pInst, 1915 false /*fAttachDetach*/, 1916 fIgnoreConnectFailure, 1917 pUVM, 1918 pVMM); 1919 if (RT_FAILURE(vrc)) 1920 return vrc; 1921 } 1651 vrc = i_configNetworkCtrls(pMachine, platformProperties, chipsetType, pBusMgr, 1652 pVMM, pUVM, pDevices, llBootNics); VRC(); 1922 1653 1923 1654 /*
Note:
See TracChangeset
for help on using the changeset viewer.