VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h@ 55334

Last change on this file since 55334 was 55182, checked in by vboxsync, 10 years ago

Main,FE/VBoxManage: Support exporting machines as appliances which have encrypted disks. Because the OVF standard doesn't support encrypted disks so far we always decrypt exported images which requires the password before starting the export proess

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.9 KB
Line 
1/* $Id: VBoxManage.h 55182 2015-04-10 14:26:59Z vboxsync $ */
2/** @file
3 * VBoxManage - VirtualBox command-line interface, internal header file.
4 */
5
6/*
7 * Copyright (C) 2006-2015 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef ___H_VBOXMANAGE
19#define ___H_VBOXMANAGE
20
21#ifndef VBOX_ONLY_DOCS
22#include <VBox/com/com.h>
23#include <VBox/com/ptr.h>
24#include <VBox/com/VirtualBox.h>
25#include <VBox/com/string.h>
26#include <VBox/com/array.h>
27#endif /* !VBOX_ONLY_DOCS */
28
29#include <iprt/types.h>
30#include <iprt/message.h>
31#include <iprt/stream.h>
32#include <iprt/getopt.h>
33
34////////////////////////////////////////////////////////////////////////////////
35//
36// definitions
37//
38////////////////////////////////////////////////////////////////////////////////
39
40/** @name Syntax diagram category.
41 * @{ */
42#define USAGE_DUMPOPTS 0
43#define USAGE_LIST RT_BIT_64(0)
44#define USAGE_SHOWVMINFO RT_BIT_64(1)
45#define USAGE_REGISTERVM RT_BIT_64(2)
46#define USAGE_UNREGISTERVM RT_BIT_64(3)
47#define USAGE_CREATEVM RT_BIT_64(4)
48#define USAGE_MODIFYVM RT_BIT_64(5)
49#define USAGE_CLONEVM RT_BIT_64(6)
50#define USAGE_STARTVM RT_BIT_64(7)
51#define USAGE_CONTROLVM RT_BIT_64(8)
52#define USAGE_DISCARDSTATE RT_BIT_64(9)
53#define USAGE_SNAPSHOT RT_BIT_64(10)
54#define USAGE_CLOSEMEDIUM RT_BIT_64(11)
55#define USAGE_SHOWMEDIUMINFO RT_BIT_64(12)
56#define USAGE_CREATEMEDIUM RT_BIT_64(13)
57#define USAGE_MODIFYMEDIUM RT_BIT_64(14)
58#define USAGE_CLONEMEDIUM RT_BIT_64(15)
59#define USAGE_CREATEHOSTIF RT_BIT_64(17)
60#define USAGE_REMOVEHOSTIF RT_BIT_64(18)
61#define USAGE_GETEXTRADATA RT_BIT_64(19)
62#define USAGE_SETEXTRADATA RT_BIT_64(20)
63#define USAGE_SETPROPERTY RT_BIT_64(21)
64#define USAGE_USBFILTER (RT_BIT_64(22) | RT_BIT_64(23) | RT_BIT_64(24))
65#define USAGE_USBFILTER_ADD RT_BIT_64(22)
66#define USAGE_USBFILTER_MODIFY RT_BIT_64(23)
67#define USAGE_USBFILTER_REMOVE RT_BIT_64(24)
68#define USAGE_SHAREDFOLDER (RT_BIT_64(25) | RT_BIT_64(26))
69#define USAGE_SHAREDFOLDER_ADD RT_BIT_64(25)
70#define USAGE_SHAREDFOLDER_REMOVE RT_BIT_64(26)
71#define USAGE_LOADSYMS RT_BIT_64(29)
72#define USAGE_LOADMAP RT_BIT_64(30)
73#define USAGE_SETHDUUID RT_BIT_64(31)
74#define USAGE_CONVERTFROMRAW RT_BIT_64(32)
75#define USAGE_LISTPARTITIONS RT_BIT_64(33)
76#define USAGE_CREATERAWVMDK RT_BIT_64(34)
77#define USAGE_DEBUGVM RT_BIT_64(35)
78#define USAGE_ADOPTSTATE RT_BIT_64(36)
79#define USAGE_MODINSTALL RT_BIT_64(37)
80#define USAGE_MODUNINSTALL RT_BIT_64(38)
81#define USAGE_RENAMEVMDK RT_BIT_64(39)
82#ifdef VBOX_WITH_GUEST_PROPS
83# define USAGE_GUESTPROPERTY RT_BIT_64(40)
84#endif /* VBOX_WITH_GUEST_PROPS defined */
85#define USAGE_CONVERTTORAW RT_BIT_64(41)
86#define USAGE_METRICS RT_BIT_64(42)
87#define USAGE_CONVERTHD RT_BIT_64(43)
88#define USAGE_IMPORTAPPLIANCE RT_BIT_64(44)
89#define USAGE_EXPORTAPPLIANCE RT_BIT_64(45)
90#define USAGE_HOSTONLYIFS RT_BIT_64(46)
91#define USAGE_DHCPSERVER RT_BIT_64(47)
92#define USAGE_DUMPHDINFO RT_BIT_64(48)
93#define USAGE_STORAGEATTACH RT_BIT_64(49)
94#define USAGE_STORAGECONTROLLER RT_BIT_64(50)
95#ifdef VBOX_WITH_GUEST_CONTROL
96# define USAGE_GUESTCONTROL RT_BIT_64(51)
97#endif /* VBOX_WITH_GUEST_CONTROL defined */
98#define USAGE_DEBUGLOG RT_BIT_64(52)
99#define USAGE_SETHDPARENTUUID RT_BIT_64(53)
100#define USAGE_PASSWORDHASH RT_BIT_64(54)
101#define USAGE_EXTPACK RT_BIT_64(55)
102#define USAGE_BANDWIDTHCONTROL RT_BIT_64(56)
103#define USAGE_GUESTSTATS RT_BIT_64(57)
104#define USAGE_REPAIRHD RT_BIT_64(58)
105#define USAGE_NATNETWORK RT_BIT_64(59)
106#define USAGE_MEDIUMPROPERTY RT_BIT_64(60)
107#define USAGE_ENCRYPTMEDIUM RT_BIT_64(61)
108#define USAGE_MEDIUMENCCHKPWD RT_BIT_64(62)
109#define USAGE_ALL (~(uint64_t)0)
110/** @} */
111
112#ifdef VBOX_WITH_GUEST_CONTROL
113# define USAGE_GSTCTRL_EXEC RT_BIT(0)
114# define USAGE_GSTCTRL_COPYFROM RT_BIT(1)
115# define USAGE_GSTCTRL_COPYTO RT_BIT(2)
116# define USAGE_GSTCTRL_CREATEDIR RT_BIT(3)
117# define USAGE_GSTCTRL_REMOVEDIR RT_BIT(4)
118# define USAGE_GSTCTRL_REMOVEFILE RT_BIT(5)
119# define USAGE_GSTCTRL_RENAME RT_BIT(6)
120# define USAGE_GSTCTRL_CREATETEMP RT_BIT(7)
121# define USAGE_GSTCTRL_LIST RT_BIT(8)
122# define USAGE_GSTCTRL_PROCESS RT_BIT(9)
123# define USAGE_GSTCTRL_KILL RT_BIT(10)
124# define USAGE_GSTCTRL_SESSION RT_BIT(11)
125# define USAGE_GSTCTRL_STAT RT_BIT(12)
126# define USAGE_GSTCTRL_UPDATEADDS RT_BIT(13)
127# define USAGE_GSTCTRL_WATCH RT_BIT(14)
128#endif
129
130typedef uint64_t USAGECATEGORY;
131
132/** command handler argument */
133struct HandlerArg
134{
135 int argc;
136 char **argv;
137
138#ifndef VBOX_ONLY_DOCS
139 ComPtr<IVirtualBox> virtualBox;
140 ComPtr<ISession> session;
141#endif
142};
143
144/** flag whether we're in internal mode */
145extern bool g_fInternalMode;
146
147/** showVMInfo details */
148typedef enum
149{
150 VMINFO_NONE = 0,
151 VMINFO_STANDARD = 1, /**< standard details */
152 VMINFO_FULL = 2, /**< both */
153 VMINFO_MACHINEREADABLE = 3, /**< both, and make it machine readable */
154 VMINFO_COMPACT = 4
155} VMINFO_DETAILS;
156
157////////////////////////////////////////////////////////////////////////////////
158//
159// global variables
160//
161////////////////////////////////////////////////////////////////////////////////
162
163extern bool g_fDetailedProgress; // in VBoxManage.cpp
164
165////////////////////////////////////////////////////////////////////////////////
166//
167// prototypes
168//
169////////////////////////////////////////////////////////////////////////////////
170
171/* VBoxManageHelp.cpp */
172void printUsage(USAGECATEGORY fCategory, uint32_t fSubCategory, PRTSTREAM pStrm);
173RTEXITCODE errorSyntax(USAGECATEGORY fCategory, const char *pszFormat, ...);
174RTEXITCODE errorSyntaxEx(USAGECATEGORY fCategory, uint32_t fSubCategory, const char *pszFormat, ...);
175RTEXITCODE errorGetOpt(USAGECATEGORY fCategory, int rc, union RTGETOPTUNION const *pValueUnion);
176RTEXITCODE errorGetOptEx(USAGECATEGORY fCategory, uint32_t fSubCategory, int rc, union RTGETOPTUNION const *pValueUnion);
177RTEXITCODE errorArgument(const char *pszFormat, ...);
178
179void printUsageInternal(USAGECATEGORY fCategory, PRTSTREAM pStrm);
180
181#ifndef VBOX_ONLY_DOCS
182HRESULT showProgress(ComPtr<IProgress> progress);
183#endif
184
185/* VBoxManage.cpp */
186void showLogo(PRTSTREAM pStrm);
187
188#ifndef VBOX_ONLY_DOCS
189RTEXITCODE readPasswordFile(const char *pszFilename, com::Utf8Str *pPasswd);
190RTEXITCODE readPasswordFromConsole(com::Utf8Str *pPassword, const char *pszPrompt, ...);
191
192int handleInternalCommands(HandlerArg *a);
193#endif /* !VBOX_ONLY_DOCS */
194
195/* VBoxManageControlVM.cpp */
196int handleControlVM(HandlerArg *a);
197#ifndef VBOX_ONLY_DOCS
198unsigned int getMaxNics(IVirtualBox* vbox, IMachine* mach);
199#endif
200
201/* VBoxManageModifyVM.cpp */
202#ifndef VBOX_ONLY_DOCS
203void parseGroups(const char *pcszGroups, com::SafeArray<BSTR> *pGroups);
204#endif
205int handleModifyVM(HandlerArg *a);
206
207/* VBoxManageDebugVM.cpp */
208int handleDebugVM(HandlerArg *a);
209
210/* VBoxManageGuestProp.cpp */
211extern void usageGuestProperty(PRTSTREAM pStrm, const char *pcszSep1, const char *pcszSep2);
212
213/* VBoxManageGuestCtrl.cpp */
214extern void usageGuestControl(PRTSTREAM pStrm, const char *pcszSep1, const char *pcszSep2, uint32_t fSubCategory);
215
216#ifndef VBOX_ONLY_DOCS
217/* VBoxManageGuestProp.cpp */
218extern int handleGuestProperty(HandlerArg *a);
219
220/* VBoxManageGuestCtrl.cpp */
221extern int handleGuestControl(HandlerArg *a);
222
223/* VBoxManageVMInfo.cpp */
224HRESULT showSnapshots(ComPtr<ISnapshot> &rootSnapshot,
225 ComPtr<ISnapshot> &currentSnapshot,
226 VMINFO_DETAILS details,
227 const com::Utf8Str &prefix = "",
228 int level = 0);
229int handleShowVMInfo(HandlerArg *a);
230HRESULT showVMInfo(ComPtr<IVirtualBox> pVirtualBox,
231 ComPtr<IMachine> pMachine,
232 ComPtr<ISession> pSession,
233 VMINFO_DETAILS details = VMINFO_NONE);
234const char *machineStateToName(MachineState_T machineState, bool fShort);
235HRESULT showBandwidthGroups(ComPtr<IBandwidthControl> &bwCtrl,
236 VMINFO_DETAILS details);
237
238/* VBoxManageList.cpp */
239int handleList(HandlerArg *a);
240
241/* VBoxManageMetrics.cpp */
242int handleMetrics(HandlerArg *a);
243
244/* VBoxManageMisc.cpp */
245int handleRegisterVM(HandlerArg *a);
246int handleUnregisterVM(HandlerArg *a);
247int handleCreateVM(HandlerArg *a);
248int handleCloneVM(HandlerArg *a);
249int handleStartVM(HandlerArg *a);
250int handleDiscardState(HandlerArg *a);
251int handleAdoptState(HandlerArg *a);
252int handleGetExtraData(HandlerArg *a);
253int handleSetExtraData(HandlerArg *a);
254int handleSetProperty(HandlerArg *a);
255int handleSharedFolder(HandlerArg *a);
256int handleExtPack(HandlerArg *a);
257
258/* VBoxManageDisk.cpp */
259HRESULT openMedium(HandlerArg *a, const char *pszFilenameOrUuid,
260 DeviceType_T enmDevType, AccessMode_T enmAccessMode,
261 ComPtr<IMedium> &pMedium, bool fForceNewUuidOnOpen,
262 bool fSilent);
263int handleCreateMedium(HandlerArg *a);
264int handleModifyMedium(HandlerArg *a);
265int handleCloneMedium(HandlerArg *a);
266int handleMediumProperty(HandlerArg *a);
267int handleEncryptMedium(HandlerArg *a);
268int handleCheckMediumPassword(HandlerArg *a);
269RTEXITCODE handleConvertFromRaw(int argc, char *argv[]);
270HRESULT showMediumInfo(const ComPtr<IVirtualBox> &pVirtualBox,
271 const ComPtr<IMedium> &pMedium,
272 const char *pszParentUUID,
273 bool fOptLong);
274int handleShowMediumInfo(HandlerArg *a);
275int handleCloseMedium(HandlerArg *a);
276int parseMediumType(const char *psz, MediumType_T *penmMediumType);
277int parseBool(const char *psz, bool *pb);
278
279/* VBoxManageStorageController.cpp */
280int handleStorageAttach(HandlerArg *a);
281int handleStorageController(HandlerArg *a);
282
283// VBoxManageImport.cpp
284int handleImportAppliance(HandlerArg *a);
285int handleExportAppliance(HandlerArg *a);
286
287// VBoxManageSnapshot.cpp
288int handleSnapshot(HandlerArg *a);
289
290/* VBoxManageUSB.cpp */
291int handleUSBFilter(HandlerArg *a);
292
293/* VBoxManageHostonly.cpp */
294int handleHostonlyIf(HandlerArg *a);
295
296/* VBoxManageDHCPServer.cpp */
297int handleDHCPServer(HandlerArg *a);
298
299/* VBoxManageNATNetwork.cpp */
300int handleNATNetwork(HandlerArg *a);
301
302
303/* VBoxManageBandwidthControl.cpp */
304int handleBandwidthControl(HandlerArg *a);
305
306#endif /* !VBOX_ONLY_DOCS */
307
308#endif /* !___H_VBOXMANAGE */
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