mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-20 06:07:59 +00:00
virtualbox: unique Nic session labels
Append the network adapter index to Nic session labels. Fixes #1966
This commit is contained in:
parent
f06087625f
commit
5e6c3a979e
@ -1 +1 @@
|
|||||||
6305944f1109406627baf4fafcc37aa68020ab79
|
d7b1f7d895c0a28fe1ba95796adc23a09b4113b5
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2014-2015 Genode Labs GmbH
|
* Copyright (C) 2014-2016 Genode Labs GmbH
|
||||||
*
|
*
|
||||||
* This file is distributed under the terms of the GNU General Public License
|
* This file is distributed under the terms of the GNU General Public License
|
||||||
* version 2.
|
* version 2.
|
||||||
@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
#include <nic_session/connection.h>
|
#include <nic_session/connection.h>
|
||||||
#include <nic/packet_allocator.h>
|
#include <nic/packet_allocator.h>
|
||||||
|
#include <base/snprintf.h>
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Structures and Typedefs *
|
* Structures and Typedefs *
|
||||||
@ -155,10 +156,10 @@ class Nic_client
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Nic_client(PDRVNIC drvtap)
|
Nic_client(PDRVNIC drvtap, char const *label)
|
||||||
:
|
:
|
||||||
_tx_block_alloc(_packet_allocator()),
|
_tx_block_alloc(_packet_allocator()),
|
||||||
_nic(_tx_block_alloc, BUF_SIZE, BUF_SIZE),
|
_nic(_tx_block_alloc, BUF_SIZE, BUF_SIZE, label),
|
||||||
_link_state_dispatcher(_sig_rec, *this, &Nic_client::_handle_link_state),
|
_link_state_dispatcher(_sig_rec, *this, &Nic_client::_handle_link_state),
|
||||||
_rx_packet_avail_dispatcher(_sig_rec, *this, &Nic_client::_handle_rx_packet_avail),
|
_rx_packet_avail_dispatcher(_sig_rec, *this, &Nic_client::_handle_rx_packet_avail),
|
||||||
_rx_ready_to_ack_dispatcher(_sig_rec, *this, &Nic_client::_handle_rx_ready_to_ack),
|
_rx_ready_to_ack_dispatcher(_sig_rec, *this, &Nic_client::_handle_rx_ready_to_ack),
|
||||||
@ -477,6 +478,7 @@ static DECLCALLBACK(int) drvNicConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uin
|
|||||||
{
|
{
|
||||||
PDRVNIC pThis = PDMINS_2_DATA(pDrvIns, PDRVNIC);
|
PDRVNIC pThis = PDMINS_2_DATA(pDrvIns, PDRVNIC);
|
||||||
PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns);
|
PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns);
|
||||||
|
int rc;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Init the static parts.
|
* Init the static parts.
|
||||||
@ -516,11 +518,19 @@ static DECLCALLBACK(int) drvNicConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uin
|
|||||||
N_("Configuration error: the above device/driver"
|
N_("Configuration error: the above device/driver"
|
||||||
" didn't export the network config interface!\n"));
|
" didn't export the network config interface!\n"));
|
||||||
|
|
||||||
|
char label[8];
|
||||||
|
uint64_t slot;
|
||||||
|
rc = CFGMR3QueryInteger(pCfg, "Slot", &slot);
|
||||||
|
if (RT_FAILURE(rc))
|
||||||
|
return PDMDRV_SET_ERROR(pDrvIns, rc,
|
||||||
|
N_("Configuration error: Failed to retrieve the network interface slot"));
|
||||||
|
Genode::snprintf(label, sizeof(label), "%d", slot);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup Genode nic_session connection
|
* Setup Genode nic_session connection
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
pThis->nic_client = new (Genode::env()->heap()) Nic_client(pThis);
|
pThis->nic_client = new (Genode::env()->heap()) Nic_client(pThis, label);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
return VERR_HOSTIF_INIT_FAILED;
|
return VERR_HOSTIF_INIT_FAILED;
|
||||||
}
|
}
|
||||||
@ -528,9 +538,9 @@ static DECLCALLBACK(int) drvNicConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uin
|
|||||||
/*
|
/*
|
||||||
* Create the asynchronous I/O thread.
|
* Create the asynchronous I/O thread.
|
||||||
*/
|
*/
|
||||||
int rc = PDMDrvHlpThreadCreate(pDrvIns, &pThis->pThread, pThis,
|
rc = PDMDrvHlpThreadCreate(pDrvIns, &pThis->pThread, pThis,
|
||||||
drvNicAsyncIoThread, drvNicAsyncIoWakeup,
|
drvNicAsyncIoThread, drvNicAsyncIoWakeup,
|
||||||
128 * _1K, RTTHREADTYPE_IO, "nic_thread");
|
128 * _1K, RTTHREADTYPE_IO, "nic_thread");
|
||||||
AssertRCReturn(rc, rc);
|
AssertRCReturn(rc, rc);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -1086,6 +1086,17 @@ index caed4be..6d02496 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(VBOX_WITH_NETFLT)
|
#elif defined(VBOX_WITH_NETFLT)
|
||||||
|
@@ -5206,6 +5206,10 @@
|
||||||
|
|
||||||
|
#undef H
|
||||||
|
|
||||||
|
+ /* store the slot index for later */
|
||||||
|
+ InsertConfigInteger(pCfg, "Slot", uInstance);
|
||||||
|
+
|
||||||
|
+
|
||||||
|
return VINF_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
diff --git a/src/app/virtualbox/src/VBox/Main/src-client/DisplayImpl.cpp b/src/app/virtualbox/src/VBox/Main/src-client/DisplayImpl.cpp
|
diff --git a/src/app/virtualbox/src/VBox/Main/src-client/DisplayImpl.cpp b/src/app/virtualbox/src/VBox/Main/src-client/DisplayImpl.cpp
|
||||||
index fed0ac3..bc3c334 100644
|
index fed0ac3..bc3c334 100644
|
||||||
--- a/src/app/virtualbox/src/VBox/Main/src-client/DisplayImpl.cpp
|
--- a/src/app/virtualbox/src/VBox/Main/src-client/DisplayImpl.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user