diff options
Diffstat (limited to 'src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp')
| -rw-r--r-- | src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp b/src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp new file mode 100644 index 000000000..6c870b5aa --- /dev/null +++ b/src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp @@ -0,0 +1,93 @@ +/* $Id: NetAdpInstall.cpp $ */ +/** @file + * NetAdpInstall - VBoxNetAdp installer command line tool + */ + +/* + * Copyright (C) 2009 Sun Microsystems, Inc. + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa + * Clara, CA 95054 USA or visit http://www.sun.com if you need + * additional information or have any questions. + */ + +#include <vbox/WinNetConfig.h> +#include <stdio.h> + +static VOID winNetCfgLogger (LPCWSTR szString) +{ + wprintf(L"%s", szString); +} + +static int InstallNetAdp() +{ + int r = 0; + VBoxNetCfgWinSetLogging(winNetCfgLogger); + + HRESULT hr = CoInitialize(NULL); + if(hr == S_OK) + { +#ifndef DEBUG_misha + printf("not implemented yet, please use device manager for Host-Only net interface installation.. sorry :( \n"); +#else + /* this installs the Net Adp from the pre-installed driver package, + * it does NOT install the new driver package, so the installation might use old drivers + * or fail in case no NetAdp package is currently installed + * the code is here for debugging NetAdp installation only */ + GUID guid; + BSTR name, errMsg; + printf("adding host-only interface..\n"); + hr = VBoxNetCfgWinCreateHostOnlyNetworkInterface (&guid, &name, &errMsg); + if(hr == S_OK) + { + ULONG ip, mask; + hr = VBoxNetCfgWinGenHostOnlyNetworkNetworkIp(&ip, &mask); + if(hr == S_OK) + { + /* ip returned by VBoxNetCfgWinGenHostOnlyNetworkNetworkIp is a network ip, + * i.e. 192.168.xxx.0, assign 192.168.xxx.1 for the hostonly adapter */ + ip = ip | (1 << 24); + hr = VBoxNetCfgWinEnableStaticIpConfig(&guid, ip, mask); + if(hr != S_OK) + { + printf("VBoxNetCfgWinEnableStaticIpConfig failed: hr = 0x%x\n", hr); + } + } + else + { + printf("VBoxNetCfgWinGenHostOnlyNetworkNetworkIp failed: hr = 0x%x\n", hr); + } + } + else + { + printf("VBoxNetCfgWinCreateHostOnlyNetworkInterface failed: hr = 0x%x\n", hr); + } +#endif + + r = 1; + + CoUninitialize(); + } + else + { + wprintf(L"Error initializing COM (0x%x)\n", hr); + r = 1; + } + + VBoxNetCfgWinSetLogging(NULL); + + return r; +} + +int __cdecl main(int argc, char **argv) +{ + return InstallNetAdp(); +} |
