diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
commit | f215e02bf85f68d3a6106c2a1f4f7f063f819064 (patch) | |
tree | 6bb5b92c046312c4e95ac2620b10ddf482d3fa8b /src/VBox/Main/include/NetworkAdapterImpl.h | |
parent | Initial commit. (diff) | |
download | virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.tar.xz virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.zip |
Adding upstream version 7.0.14-dfsg.upstream/7.0.14-dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/VBox/Main/include/NetworkAdapterImpl.h | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/src/VBox/Main/include/NetworkAdapterImpl.h b/src/VBox/Main/include/NetworkAdapterImpl.h new file mode 100644 index 00000000..3efcd332 --- /dev/null +++ b/src/VBox/Main/include/NetworkAdapterImpl.h @@ -0,0 +1,141 @@ +/* $Id: NetworkAdapterImpl.h $ */ +/** @file + * VirtualBox COM class implementation + */ + +/* + * Copyright (C) 2006-2023 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#ifndef MAIN_INCLUDED_NetworkAdapterImpl_h +#define MAIN_INCLUDED_NetworkAdapterImpl_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +#include "NetworkAdapterWrap.h" + +class GuestOSType; +class BandwidthControl; +class BandwidthGroup; +class NATEngine; + +namespace settings +{ + struct NetworkAdapter; +} + +class ATL_NO_VTABLE NetworkAdapter : + public NetworkAdapterWrap +{ +public: + + DECLARE_COMMON_CLASS_METHODS(NetworkAdapter) + + HRESULT FinalConstruct(); + void FinalRelease(); + + // public initializer/uninitializer for internal purposes only + HRESULT init(Machine *aParent, ULONG aSlot); + HRESULT init(Machine *aParent, NetworkAdapter *aThat, bool aReshare = false); + HRESULT initCopy(Machine *aParent, NetworkAdapter *aThat); + void uninit(); + + // public methods only for internal purposes + HRESULT i_loadSettings(BandwidthControl *bwctl, const settings::NetworkAdapter &data); + HRESULT i_saveSettings(settings::NetworkAdapter &data); + + bool i_isModified(); + void i_rollback(); + void i_commit(); + void i_copyFrom(NetworkAdapter *aThat); + void i_applyDefaults(GuestOSType *aOsType); + bool i_hasDefaults(); + + ComObjPtr<NetworkAdapter> i_getPeer(); + +private: + + // wrapped INetworkAdapter properties + HRESULT getAdapterType(NetworkAdapterType_T *aAdapterType); + HRESULT setAdapterType(NetworkAdapterType_T aAdapterType); + HRESULT getSlot(ULONG *aSlot); + HRESULT getEnabled(BOOL *aEnabled); + HRESULT setEnabled(BOOL aEnabled); + HRESULT getMACAddress(com::Utf8Str &aMACAddress); + HRESULT setMACAddress(const com::Utf8Str &aMACAddress); + HRESULT getAttachmentType(NetworkAttachmentType_T *aAttachmentType); + HRESULT setAttachmentType(NetworkAttachmentType_T aAttachmentType); + HRESULT getBridgedInterface(com::Utf8Str &aBridgedInterface); + HRESULT setBridgedInterface(const com::Utf8Str &aBridgedInterface); + HRESULT getHostOnlyInterface(com::Utf8Str &aHostOnlyInterface); + HRESULT setHostOnlyInterface(const com::Utf8Str &aHostOnlyInterface); + HRESULT getHostOnlyNetwork(com::Utf8Str &aHostOnlyNetwork); + HRESULT setHostOnlyNetwork(const com::Utf8Str &aHostOnlyNetwork); + HRESULT getInternalNetwork(com::Utf8Str &aInternalNetwork); + HRESULT setInternalNetwork(const com::Utf8Str &aInternalNetwork); + HRESULT getNATNetwork(com::Utf8Str &aNATNetwork); + HRESULT setNATNetwork(const com::Utf8Str &aNATNetwork); + HRESULT getGenericDriver(com::Utf8Str &aGenericDriver); + HRESULT setGenericDriver(const com::Utf8Str &aGenericDriver); + HRESULT getCloudNetwork(com::Utf8Str &aCloudNetwork); + HRESULT setCloudNetwork(const com::Utf8Str &aCloudNetwork); + HRESULT getCableConnected(BOOL *aCableConnected); + HRESULT setCableConnected(BOOL aCableConnected); + HRESULT getLineSpeed(ULONG *aLineSpeed); + HRESULT setLineSpeed(ULONG aLineSpeed); + HRESULT getPromiscModePolicy(NetworkAdapterPromiscModePolicy_T *aPromiscModePolicy); + HRESULT setPromiscModePolicy(NetworkAdapterPromiscModePolicy_T aPromiscModePolicy); + HRESULT getTraceEnabled(BOOL *aTraceEnabled); + HRESULT setTraceEnabled(BOOL aTraceEnabled); + HRESULT getTraceFile(com::Utf8Str &aTraceFile); + HRESULT setTraceFile(const com::Utf8Str &aTraceFile); + HRESULT getNATEngine(ComPtr<INATEngine> &aNATEngine); + HRESULT getBootPriority(ULONG *aBootPriority); + HRESULT setBootPriority(ULONG aBootPriority); + HRESULT getBandwidthGroup(ComPtr<IBandwidthGroup> &aBandwidthGroup); + HRESULT setBandwidthGroup(const ComPtr<IBandwidthGroup> &aBandwidthGroup); + + // wrapped INetworkAdapter methods + HRESULT getProperty(const com::Utf8Str &aKey, + com::Utf8Str &aValue); + HRESULT setProperty(const com::Utf8Str &aKey, + const com::Utf8Str &aValue); + HRESULT getProperties(const com::Utf8Str &aNames, + std::vector<com::Utf8Str> &aReturnNames, + std::vector<com::Utf8Str> &aReturnValues); + // Misc. + void i_generateMACAddress(); + HRESULT i_updateMacAddress(Utf8Str aMacAddress); + void i_updateBandwidthGroup(BandwidthGroup *aBwGroup); + HRESULT i_switchFromNatNetworking(const com::Utf8Str &aNatnetworkName); + HRESULT i_switchToNatNetworking(const com::Utf8Str &aNatNetworkName); + + + Machine * const mParent; + const ComObjPtr<NetworkAdapter> mPeer; + const ComObjPtr<NATEngine> mNATEngine; + + Backupable<settings::NetworkAdapter> mData; +}; + +#endif /* !MAIN_INCLUDED_NetworkAdapterImpl_h */ +/* vi: set tabstop=4 shiftwidth=4 expandtab: */ |