VirtualBox

source: vbox/trunk/src/VBox/Main/include/NetworkAdapterImpl.h@ 38455

Last change on this file since 38455 was 37200, checked in by vboxsync, 14 years ago

API+Frontends: Generic network attachment driver support which obsoletes the special case for VDE. Big API cleanup in the same area. Adapt all frontends to these changes (full implementation in VBoxManage, minimum implementation in GUI).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.9 KB
Line 
1/* $Id: NetworkAdapterImpl.h 37200 2011-05-24 15:34:06Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM class implementation
6 */
7
8/*
9 * Copyright (C) 2006-2011 Oracle Corporation
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 */
19
20#ifndef ____H_NETWORKADAPTER
21#define ____H_NETWORKADAPTER
22
23#include "VirtualBoxBase.h"
24#include "NATEngineImpl.h"
25#include "BandwidthGroupImpl.h"
26
27class GuestOSType;
28
29namespace settings
30{
31 struct NetworkAdapter;
32}
33
34class ATL_NO_VTABLE NetworkAdapter :
35 public VirtualBoxBase,
36 VBOX_SCRIPTABLE_IMPL(INetworkAdapter)
37{
38public:
39
40 struct Data
41 {
42 Data() : mSlot(0),
43 mEnabled(FALSE),
44 mAttachmentType(NetworkAttachmentType_Null),
45 mCableConnected(TRUE),
46 mLineSpeed(0),
47 mPromiscModePolicy(NetworkAdapterPromiscModePolicy_Deny),
48 mTraceEnabled(FALSE),
49 mBridgedInterface("") /* cannot be null */,
50 mHostOnlyInterface("") /* cannot be null */,
51 mNATNetwork("") /* cannot be null */,
52 mBootPriority(0)
53 {}
54
55 NetworkAdapterType_T mAdapterType;
56 ULONG mSlot;
57 BOOL mEnabled;
58 Bstr mMACAddress;
59 NetworkAttachmentType_T mAttachmentType;
60 BOOL mCableConnected;
61 ULONG mLineSpeed;
62 NetworkAdapterPromiscModePolicy_T mPromiscModePolicy;
63 BOOL mTraceEnabled;
64 Bstr mTraceFile;
65 Bstr mBridgedInterface;
66 Bstr mHostOnlyInterface;
67 Bstr mInternalNetwork;
68 Bstr mNATNetwork;
69 Bstr mGenericDriver;
70 settings::StringsMap mGenericProperties;
71 ULONG mBootPriority;
72 ComObjPtr<BandwidthGroup> mBandwidthGroup;
73 };
74
75 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(NetworkAdapter, INetworkAdapter)
76
77 DECLARE_NOT_AGGREGATABLE(NetworkAdapter)
78
79 DECLARE_PROTECT_FINAL_CONSTRUCT()
80
81 BEGIN_COM_MAP(NetworkAdapter)
82 VBOX_DEFAULT_INTERFACE_ENTRIES(INetworkAdapter)
83 END_COM_MAP()
84
85 DECLARE_EMPTY_CTOR_DTOR(NetworkAdapter)
86
87 HRESULT FinalConstruct();
88 void FinalRelease();
89
90 // public initializer/uninitializer for internal purposes only
91 HRESULT init(Machine *aParent, ULONG aSlot);
92 HRESULT init(Machine *aParent, NetworkAdapter *aThat);
93 HRESULT initCopy(Machine *aParent, NetworkAdapter *aThat);
94 void uninit();
95
96 // INetworkAdapter properties
97 STDMETHOD(COMGETTER(AdapterType))(NetworkAdapterType_T *aAdapterType);
98 STDMETHOD(COMSETTER(AdapterType))(NetworkAdapterType_T aAdapterType);
99 STDMETHOD(COMGETTER(Slot))(ULONG *aSlot);
100 STDMETHOD(COMGETTER(Enabled))(BOOL *aEnabled);
101 STDMETHOD(COMSETTER(Enabled))(BOOL aEnabled);
102 STDMETHOD(COMGETTER(MACAddress))(BSTR *aMACAddress);
103 STDMETHOD(COMSETTER(MACAddress))(IN_BSTR aMACAddress);
104 STDMETHOD(COMGETTER(AttachmentType))(NetworkAttachmentType_T *aAttachmentType);
105 STDMETHOD(COMSETTER(AttachmentType))(NetworkAttachmentType_T aAttachmentType);
106 STDMETHOD(COMGETTER(BridgedInterface))(BSTR *aBridgedInterface);
107 STDMETHOD(COMSETTER(BridgedInterface))(IN_BSTR aBridgedInterface);
108 STDMETHOD(COMGETTER(HostOnlyInterface))(BSTR *aHostOnlyInterface);
109 STDMETHOD(COMSETTER(HostOnlyInterface))(IN_BSTR aHostOnlyInterface);
110 STDMETHOD(COMGETTER(InternalNetwork))(BSTR *aInternalNetwork);
111 STDMETHOD(COMSETTER(InternalNetwork))(IN_BSTR aInternalNetwork);
112 STDMETHOD(COMGETTER(NATNetwork))(BSTR *aNATNetwork);
113 STDMETHOD(COMSETTER(NATNetwork))(IN_BSTR aNATNetwork);
114 STDMETHOD(COMGETTER(GenericDriver))(BSTR *aGenericDriver);
115 STDMETHOD(COMSETTER(GenericDriver))(IN_BSTR aGenericDriver);
116 STDMETHOD(COMGETTER(CableConnected))(BOOL *aConnected);
117 STDMETHOD(COMSETTER(CableConnected))(BOOL aConnected);
118 STDMETHOD(COMGETTER(TraceEnabled))(BOOL *aEnabled);
119 STDMETHOD(COMSETTER(TraceEnabled))(BOOL aEnabled);
120 STDMETHOD(COMGETTER(LineSpeed))(ULONG *aSpeed);
121 STDMETHOD(COMSETTER(LineSpeed))(ULONG aSpeed);
122 STDMETHOD(COMGETTER(PromiscModePolicy))(NetworkAdapterPromiscModePolicy_T *aPromiscModePolicy);
123 STDMETHOD(COMSETTER(PromiscModePolicy))(NetworkAdapterPromiscModePolicy_T aPromiscModePolicy);
124 STDMETHOD(COMGETTER(TraceFile))(BSTR *aTraceFile);
125 STDMETHOD(COMSETTER(TraceFile))(IN_BSTR aTraceFile);
126 STDMETHOD(COMGETTER(NatDriver))(INATEngine **aNatDriver);
127 STDMETHOD(COMGETTER(BootPriority))(ULONG *aBootPriority);
128 STDMETHOD(COMSETTER(BootPriority))(ULONG aBootPriority);
129 STDMETHOD(COMGETTER(BandwidthGroup))(IBandwidthGroup **aBwGroup);
130 STDMETHOD(COMSETTER(BandwidthGroup))(IBandwidthGroup *aBwGroup);
131
132 // INetworkAdapter methods
133 STDMETHOD(GetProperty)(IN_BSTR aName, BSTR *aValue);
134 STDMETHOD(SetProperty)(IN_BSTR aName, IN_BSTR aValue);
135 STDMETHOD(GetProperties)(IN_BSTR aNames,
136 ComSafeArrayOut(BSTR, aReturnNames),
137 ComSafeArrayOut(BSTR, aReturnValues));
138
139 // public methods only for internal purposes
140
141 HRESULT loadSettings(BandwidthControl *bwctl, const settings::NetworkAdapter &data);
142 HRESULT saveSettings(settings::NetworkAdapter &data);
143
144 bool isModified();
145 void rollback();
146 void commit();
147 void copyFrom(NetworkAdapter *aThat);
148 void applyDefaults(GuestOSType *aOsType);
149
150private:
151
152 void generateMACAddress();
153 HRESULT updateMacAddress(Utf8Str aMacAddress);
154 void updateBandwidthGroup(BandwidthGroup *aBwGroup);
155
156 Machine * const mParent;
157 const ComObjPtr<NetworkAdapter> mPeer;
158 const ComObjPtr<NATEngine> mNATEngine;
159
160 bool m_fModified;
161 Backupable<Data> mData;
162};
163
164#endif // ____H_NETWORKADAPTER
165/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette