summaryrefslogtreecommitdiff
path: root/src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp')
-rw-r--r--src/VBox/HostDrivers/VBoxNetFlt/win/NetAdpInstall.cpp93
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();
+}