HostNetworkInterfaceImpl.h revision d19316699d7f91959d88c850fd7e0d64840f39a7
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync/* $Id$ */
2291faee92ebb5cc9722cd3f22e499900a5a411fvboxsync
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync/** @file
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync *
2291faee92ebb5cc9722cd3f22e499900a5a411fvboxsync * VirtualBox COM class implementation
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync */
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync/*
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync * Copyright (C) 2006-2009 Sun Microsystems, Inc.
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync *
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync * available from http://www.virtualbox.org. This file is free software;
9496b6f77d66eb89f088668752b8838d578d6e10vboxsync * you can redistribute it and/or modify it under the terms of the GNU
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync * General Public License (GPL) as published by the Free Software
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync *
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * additional information or have any questions.
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync */
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync#ifndef ____H_HOSTNETWORKINTERFACEIMPL
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync#define ____H_HOSTNETWORKINTERFACEIMPL
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync#include "VirtualBoxBase.h"
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync#include "VirtualBoxImpl.h"
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync#ifdef VBOX_WITH_HOSTNETIF_API
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync/* class HostNetworkInterface; */
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync/* #include "netif.h" */
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsyncstruct NETIFINFO;
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync#endif
13b516eac15d19e108e587a9d9ecc85e1961ac6dvboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsyncclass ATL_NO_VTABLE HostNetworkInterface :
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync public VirtualBoxBase,
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync public VirtualBoxSupportErrorInfoImpl<HostNetworkInterface, IHostNetworkInterface>,
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync public VirtualBoxSupportTranslation<HostNetworkInterface>,
13b516eac15d19e108e587a9d9ecc85e1961ac6dvboxsync VBOX_SCRIPTABLE_IMPL(IHostNetworkInterface)
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync{
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsyncpublic:
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (HostNetworkInterface)
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync DECLARE_NOT_AGGREGATABLE (HostNetworkInterface)
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync BEGIN_COM_MAP (HostNetworkInterface)
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync COM_INTERFACE_ENTRY (ISupportErrorInfo)
13b516eac15d19e108e587a9d9ecc85e1961ac6dvboxsync COM_INTERFACE_ENTRY (IHostNetworkInterface)
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync COM_INTERFACE_ENTRY (IDispatch)
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync END_COM_MAP()
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync DECLARE_EMPTY_CTOR_DTOR (HostNetworkInterface)
13b516eac15d19e108e587a9d9ecc85e1961ac6dvboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync HRESULT FinalConstruct();
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync void FinalRelease();
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync // public initializer/uninitializer for internal purposes only
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync HRESULT init (Bstr interfaceName, Guid guid, HostNetworkInterfaceType_T ifType);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync#ifdef VBOX_WITH_HOSTNETIF_API
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync HRESULT init (Bstr aInterfaceName, HostNetworkInterfaceType_T ifType, struct NETIFINFO *pIfs);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync HRESULT updateConfig ();
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync#endif
9a08dd6ed47cffa9cacbb9d53db1ce71d04db61fvboxsync
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync // IHostNetworkInterface properties
13b516eac15d19e108e587a9d9ecc85e1961ac6dvboxsync STDMETHOD(COMGETTER(Name)) (BSTR *aInterfaceName);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync STDMETHOD(COMGETTER(Id)) (BSTR *aGuid);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync STDMETHOD(COMGETTER(DhcpEnabled)) (BOOL *aDhcpEnabled);
9a08dd6ed47cffa9cacbb9d53db1ce71d04db61fvboxsync STDMETHOD(COMGETTER(IPAddress)) (BSTR *aIPAddress);
f4ccb18a71e0e531719734918583f84fbc72ebfevboxsync STDMETHOD(COMGETTER(NetworkMask)) (BSTR *aNetworkMask);
13b516eac15d19e108e587a9d9ecc85e1961ac6dvboxsync STDMETHOD(COMGETTER(IPV6Supported)) (BOOL *aIPV6Supported);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync STDMETHOD(COMGETTER(IPV6Address)) (BSTR *aIPV6Address);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync STDMETHOD(COMGETTER(IPV6NetworkMaskPrefixLength)) (ULONG *aIPV6NetworkMaskPrefixLength);
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync STDMETHOD(COMGETTER(HardwareAddress)) (BSTR *aHardwareAddress);
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync STDMETHOD(COMGETTER(MediumType)) (HostNetworkInterfaceMediumType_T *aType);
771761cda2c81e899526a0dce22c8cd2510fff82vboxsync STDMETHOD(COMGETTER(Status)) (HostNetworkInterfaceStatus_T *aStatus);
1826861f34e9be70b29cd5e1a6038caf9fbf37bevboxsync STDMETHOD(COMGETTER(InterfaceType)) (HostNetworkInterfaceType_T *aType);
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync STDMETHOD(COMGETTER(NetworkName)) (BSTR *aNetworkName);
1826861f34e9be70b29cd5e1a6038caf9fbf37bevboxsync
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync STDMETHOD(EnableStaticIpConfig) (IN_BSTR aIPAddress, IN_BSTR aNetworkMask);
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync STDMETHOD(EnableStaticIpConfigV6) (IN_BSTR aIPV6Address, ULONG aIPV6MaskPrefixLength);
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync STDMETHOD(EnableDynamicIpConfig) ();
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync STDMETHOD(DhcpRediscover) ();
b459362b1c9b5ce5e6bf4ceb32ffe1294c08be07vboxsync
b459362b1c9b5ce5e6bf4ceb32ffe1294c08be07vboxsync // for VirtualBoxSupportErrorInfoImpl
b459362b1c9b5ce5e6bf4ceb32ffe1294c08be07vboxsync static const wchar_t *getComponentName() { return L"HostNetworkInterface"; }
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync HRESULT setVirtualBox(VirtualBox *pVBox);
b459362b1c9b5ce5e6bf4ceb32ffe1294c08be07vboxsyncprivate:
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync const Bstr mInterfaceName;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync const Guid mGuid;
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync HostNetworkInterfaceType_T mIfType;
53e1c27c7564c45ad0b92676ddea561591a3e869vboxsync
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync VirtualBox * const mVBox;
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync
1826861f34e9be70b29cd5e1a6038caf9fbf37bevboxsync struct Data
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync {
1826861f34e9be70b29cd5e1a6038caf9fbf37bevboxsync Data() : IPAddress (0), networkMask (0), dhcpEnabled(FALSE),
1826861f34e9be70b29cd5e1a6038caf9fbf37bevboxsync mediumType (HostNetworkInterfaceMediumType_Unknown),
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync status(HostNetworkInterfaceStatus_Down){}
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync ULONG IPAddress;
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync ULONG networkMask;
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync Bstr IPV6Address;
0c8b774aca1168c2007424a49f6fa159fc23e42bvboxsync ULONG IPV6NetworkMaskPrefixLength;
7bff28e0cedd8656acd24b420759649184d8cf00vboxsync ULONG realIPAddress;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync ULONG realNetworkMask;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync Bstr realIPV6Address;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync ULONG realIPV6PrefixLength;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync BOOL dhcpEnabled;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync Bstr hardwareAddress;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync HostNetworkInterfaceMediumType_T mediumType;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync HostNetworkInterfaceStatus_T status;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync } m;
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync};
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync
f2ba84c335a6e7ac91f69863ff51b10c65c9d40fvboxsync#endif // ____H_H_HOSTNETWORKINTERFACEIMPL
cfd41a3683178a30bac4417128b4673806653797vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */
cfd41a3683178a30bac4417128b4673806653797vboxsync