mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-22 18:24:05 +00:00
vbox6: support MAC address overwrite
This commit is contained in:
parent
2a1a47b598
commit
002037ce15
@ -1 +1 @@
|
|||||||
3a07749ccbdefed104b9a499c1917c55022bf0d0
|
3d6230564eddb5ab205780c7b31acdc169702e0f
|
||||||
|
80
repos/ports/src/virtualbox6/patches/network.patch
Normal file
80
repos/ports/src/virtualbox6/patches/network.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
network.patch
|
||||||
|
|
||||||
|
--- a/src/virtualbox6/src/VBox/Devices/Network/DevE1000.cpp
|
||||||
|
+++ b/src/virtualbox6/src/VBox/Devices/Network/DevE1000.cpp
|
||||||
|
@@ -7992,6 +7992,33 @@ static DECLCALLBACK(int) e1kR3Construct(PPDMDEVINS pDevIns, int iInstance, PCFGM
|
||||||
|
pDevIns->fR0Enabled ? "enabled" : "disabled",
|
||||||
|
pDevIns->fRCEnabled ? "enabled" : "disabled"));
|
||||||
|
|
||||||
|
+ /* For Genode attach already here to be able to overwrite mac address */
|
||||||
|
+ /* Network driver */
|
||||||
|
+ rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThisCC->IBase, &pThisCC->pDrvBase, "Network Port");
|
||||||
|
+ if (RT_SUCCESS(rc))
|
||||||
|
+ {
|
||||||
|
+ /* Genode: read out the mac address from nic_session interface */
|
||||||
|
+ PPDMINETWORKCONFIG pDrvConfig = PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMINETWORKCONFIG);
|
||||||
|
+ Assert(pDrvConfig && pDrvConfig->pfnGetMac);
|
||||||
|
+ pDrvConfig->pfnGetMac(pDrvConfig, &pThis->macConfigured);
|
||||||
|
+
|
||||||
|
+ pThisCC->pDrvR3 = PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMINETWORKUP);
|
||||||
|
+ AssertMsgReturn(pThisCC->pDrvR3, ("Failed to obtain the PDMINETWORKUP interface!\n"), VERR_PDM_MISSING_INTERFACE_BELOW);
|
||||||
|
+
|
||||||
|
+#if 0 /** @todo @bugref{9218} ring-0 driver stuff */
|
||||||
|
+ pThisR0->pDrvR0 = PDMIBASER0_QUERY_INTERFACE(PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMIBASER0), PDMINETWORKUP);
|
||||||
|
+ pThisRC->pDrvRC = PDMIBASERC_QUERY_INTERFACE(PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMIBASERC), PDMINETWORKUP);
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
+ else if ( rc == VERR_PDM_NO_ATTACHED_DRIVER
|
||||||
|
+ || rc == VERR_PDM_CFG_MISSING_DRIVER_NAME)
|
||||||
|
+ {
|
||||||
|
+ /* No error! */
|
||||||
|
+ E1kLog(("%s This adapter is not attached to any network!\n", pThis->szPrf));
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ return PDMDEV_SET_ERROR(pDevIns, rc, N_("Failed to attach the network LUN"));
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Initialize sub-components and register everything with the VMM.
|
||||||
|
*/
|
||||||
|
@@ -8131,27 +8158,6 @@ static DECLCALLBACK(int) e1kR3Construct(PPDMDEVINS pDevIns, int iInstance, PCFGM
|
||||||
|
return PDMDEV_SET_ERROR(pDevIns, rc, N_("Failed to attach the status LUN"));
|
||||||
|
pThisCC->pLedsConnector = PDMIBASE_QUERY_INTERFACE(pBase, PDMILEDCONNECTORS);
|
||||||
|
|
||||||
|
- /* Network driver */
|
||||||
|
- rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThisCC->IBase, &pThisCC->pDrvBase, "Network Port");
|
||||||
|
- if (RT_SUCCESS(rc))
|
||||||
|
- {
|
||||||
|
- pThisCC->pDrvR3 = PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMINETWORKUP);
|
||||||
|
- AssertMsgReturn(pThisCC->pDrvR3, ("Failed to obtain the PDMINETWORKUP interface!\n"), VERR_PDM_MISSING_INTERFACE_BELOW);
|
||||||
|
-
|
||||||
|
-#if 0 /** @todo @bugref{9218} ring-0 driver stuff */
|
||||||
|
- pThisR0->pDrvR0 = PDMIBASER0_QUERY_INTERFACE(PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMIBASER0), PDMINETWORKUP);
|
||||||
|
- pThisRC->pDrvRC = PDMIBASERC_QUERY_INTERFACE(PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMIBASERC), PDMINETWORKUP);
|
||||||
|
-#endif
|
||||||
|
- }
|
||||||
|
- else if ( rc == VERR_PDM_NO_ATTACHED_DRIVER
|
||||||
|
- || rc == VERR_PDM_CFG_MISSING_DRIVER_NAME)
|
||||||
|
- {
|
||||||
|
- /* No error! */
|
||||||
|
- E1kLog(("%s This adapter is not attached to any network!\n", pThis->szPrf));
|
||||||
|
- }
|
||||||
|
- else
|
||||||
|
- return PDMDEV_SET_ERROR(pDevIns, rc, N_("Failed to attach the network LUN"));
|
||||||
|
-
|
||||||
|
rc = PDMDevHlpSUPSemEventCreate(pDevIns, &pThis->hEventMoreRxDescAvail);
|
||||||
|
AssertRCReturn(rc, rc);
|
||||||
|
|
||||||
|
--- a/src/virtualbox6/src/VBox/Devices/Network/DevPCNet.cpp
|
||||||
|
+++ b/src/virtualbox6/src/VBox/Devices/Network/DevPCNet.cpp
|
||||||
|
@@ -5340,6 +5340,11 @@ static DECLCALLBACK(int) pcnetR3Construct(PPDMDEVINS pDevIns, int iInstance, PCF
|
||||||
|
rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThisCC->IBase, &pThisCC->pDrvBase, "Network Port");
|
||||||
|
if (RT_SUCCESS(rc))
|
||||||
|
{
|
||||||
|
+ /* Genode: read out the mac address from nic_session interface */
|
||||||
|
+ PPDMINETWORKCONFIG pDrvConfig = PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMINETWORKCONFIG);
|
||||||
|
+ Assert(pDrvConfig && pDrvConfig->pfnGetMac);
|
||||||
|
+ pDrvConfig->pfnGetMac(pDrvConfig, &pThis->MacConfigured);
|
||||||
|
+
|
||||||
|
pThisCC->pDrv = PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMINETWORKUP);
|
||||||
|
AssertMsgReturn(pThisCC->pDrv, ("Failed to obtain the PDMINETWORKUP interface!\n"),
|
||||||
|
VERR_PDM_MISSING_INTERFACE_BELOW);
|
@ -2,3 +2,4 @@ serial.patch
|
|||||||
drvtap.patch
|
drvtap.patch
|
||||||
qemu-xhci.patch
|
qemu-xhci.patch
|
||||||
narrowing.patch
|
narrowing.patch
|
||||||
|
network.patch
|
||||||
|
Loading…
x
Reference in New Issue
Block a user