VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp@ 37215

Last change on this file since 37215 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: 38.1 KB
Line 
1/* $Id: VBoxManageHelp.cpp 37200 2011-05-24 15:34:06Z vboxsync $ */
2/** @file
3 * VBoxManage - help and other message output.
4 */
5
6/*
7 * Copyright (C) 2006-2011 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
19/*******************************************************************************
20* Header Files *
21*******************************************************************************/
22#include <VBox/version.h>
23
24#include <iprt/buildconfig.h>
25#include <iprt/ctype.h>
26#include <iprt/err.h>
27#include <iprt/getopt.h>
28#include <iprt/stream.h>
29
30#include "VBoxManage.h"
31
32
33
34void showLogo(PRTSTREAM pStrm)
35{
36 static bool s_fShown; /* show only once */
37
38 if (!s_fShown)
39 {
40 RTStrmPrintf(pStrm, VBOX_PRODUCT " Command Line Management Interface Version "
41 VBOX_VERSION_STRING "\n"
42 "(C) 2005-" VBOX_C_YEAR " " VBOX_VENDOR "\n"
43 "All rights reserved.\n"
44 "\n");
45 s_fShown = true;
46 }
47}
48
49void printUsage(USAGECATEGORY u64Cmd, PRTSTREAM pStrm)
50{
51 bool fDumpOpts = false;
52#ifdef RT_OS_LINUX
53 bool fLinux = true;
54#else
55 bool fLinux = false;
56#endif
57#ifdef RT_OS_WINDOWS
58 bool fWin = true;
59#else
60 bool fWin = false;
61#endif
62#ifdef RT_OS_SOLARIS
63 bool fSolaris = true;
64#else
65 bool fSolaris = false;
66#endif
67#ifdef RT_OS_FREEBSD
68 bool fFreeBSD = true;
69#else
70 bool fFreeBSD = false;
71#endif
72#ifdef RT_OS_DARWIN
73 bool fDarwin = true;
74#else
75 bool fDarwin = false;
76#endif
77#ifdef VBOX_WITH_VBOXSDL
78 bool fVBoxSDL = true;
79#else
80 bool fVBoxSDL = false;
81#endif
82
83 if (u64Cmd == USAGE_DUMPOPTS)
84 {
85 fDumpOpts = true;
86 fLinux = true;
87 fWin = true;
88 fSolaris = true;
89 fFreeBSD = true;
90 fDarwin = true;
91 fVBoxSDL = true;
92 u64Cmd = USAGE_ALL;
93 }
94
95 RTStrmPrintf(pStrm,
96 "Usage:\n"
97 "\n");
98
99 if (u64Cmd == USAGE_ALL)
100 RTStrmPrintf(pStrm,
101 "VBoxManage [-v|--version] print version number and exit\n"
102 "VBoxManage [-q|--nologo] ... suppress the logo\n"
103 "\n");
104
105 if (u64Cmd & USAGE_LIST)
106 RTStrmPrintf(pStrm,
107 "VBoxManage list [--long|-l] vms|runningvms|ostypes|hostdvds|hostfloppies|\n"
108#if defined(VBOX_WITH_NETFLT)
109 " bridgedifs|hostonlyifs|dhcpservers|hostinfo|\n"
110#else
111 " bridgedifs|dhcpservers|hostinfo|\n"
112#endif
113 " hostcpuids|hddbackends|hdds|dvds|floppies|\n"
114 " usbhost|usbfilters|systemproperties|extpacks\n"
115 "\n");
116
117 if (u64Cmd & USAGE_SHOWVMINFO)
118 RTStrmPrintf(pStrm,
119 "VBoxManage showvminfo <uuid>|<name> [--details]\n"
120 " [--machinereadable]\n"
121 "VBoxManage showvminfo <uuid>|<name> --log <idx>\n"
122 "\n");
123
124 if (u64Cmd & USAGE_REGISTERVM)
125 RTStrmPrintf(pStrm,
126 "VBoxManage registervm <filename>\n"
127 "\n");
128
129 if (u64Cmd & USAGE_UNREGISTERVM)
130 RTStrmPrintf(pStrm,
131 "VBoxManage unregistervm <uuid>|<name> [--delete]\n"
132 "\n");
133
134 if (u64Cmd & USAGE_CREATEVM)
135 RTStrmPrintf(pStrm,
136 "VBoxManage createvm --name <name>\n"
137 " [--ostype <ostype>]\n"
138 " [--register]\n"
139 " [--basefolder <path> | --settingsfile <path>]\n"
140 " [--uuid <uuid>]\n"
141 "\n");
142
143 if (u64Cmd & USAGE_MODIFYVM)
144 {
145 RTStrmPrintf(pStrm,
146 "VBoxManage modifyvm <uuid|name>\n"
147 " [--name <name>]\n"
148 " [--ostype <ostype>]\n"
149 " [--memory <memorysize in MB>]\n"
150 " [--pagefusion on|off]\n"
151 " [--vram <vramsize in MB>]\n"
152 " [--acpi on|off]\n"
153#ifdef VBOX_WITH_PCI_PASSTHROUGH
154 " [--attachpci 03:04.0]\n"
155 " [--attachpci 03:04.0@02:01.0]\n"
156 " [--detachpci 03:04.0]\n"
157#endif
158 " [--ioapic on|off]\n"
159 " [--pae on|off]\n"
160 " [--hpet on|off]\n"
161 " [--hwvirtex on|off]\n"
162 " [--hwvirtexexcl on|off]\n"
163 " [--nestedpaging on|off]\n"
164 " [--largepages on|off]\n"
165 " [--vtxvpid on|off]\n"
166 " [--synthcpu on|off]\n"
167 " [--cpuidset <leaf> <eax> <ebx> <ecx> <edx>]\n"
168 " [--cpuidremove <leaf>]\n"
169 " [--cpuidremoveall]\n"
170 " [--hardwareuuid <uuid>]\n"
171 " [--cpus <number>]\n"
172 " [--cpuhotplug on|off]\n"
173 " [--plugcpu <id>]\n"
174 " [--unplugcpu <id>]\n"
175 " [--cpuexecutioncap <1-100>]\n"
176 " [--rtcuseutc on|off]\n"
177 " [--monitorcount <number>]\n"
178 " [--accelerate3d on|off]\n"
179#ifdef VBOX_WITH_VIDEOHWACCEL
180 " [--accelerate2dvideo on|off]\n"
181#endif
182 " [--firmware bios|efi|efi32|efi64]\n"
183 " [--chipset ich9|piix3]\n"
184 " [--bioslogofadein on|off]\n"
185 " [--bioslogofadeout on|off]\n"
186 " [--bioslogodisplaytime <msec>]\n"
187 " [--bioslogoimagepath <imagepath>]\n"
188 " [--biosbootmenu disabled|menuonly|messageandmenu]\n"
189 " [--biossystemtimeoffset <msec>]\n"
190 " [--biospxedebug on|off]\n"
191 " [--boot<1-4> none|floppy|dvd|disk|net>]\n"
192 " [--nic<1-N> none|null|nat|bridged|intnet"
193#if defined(VBOX_WITH_NETFLT)
194 "|hostonly"
195#endif
196 "|\n"
197 " generic"
198 "]\n"
199 " [--nictype<1-N> Am79C970A|Am79C973"
200#ifdef VBOX_WITH_E1000
201 "|\n 82540EM|82543GC|82545EM"
202#endif
203#ifdef VBOX_WITH_VIRTIO
204 "|\n virtio"
205#endif /* VBOX_WITH_VIRTIO */
206 "]\n"
207 " [--cableconnected<1-N> on|off]\n"
208 " [--nictrace<1-N> on|off]\n"
209 " [--nictracefile<1-N> <filename>]\n"
210 " [--nicproperty<1-N> name=[value]]\n"
211 " [--nicspeed<1-N> <kbps>]\n"
212 " [--nicbootprio<1-N> <priority>]\n"
213 " [--nicpromisc<1-N> deny|allow-vms|allow-all]\n"
214 " [--nicbandwidthgroup<1-N> none|<name>]\n"
215 " [--bridgeadapter<1-N> none|<devicename>]\n"
216#if defined(VBOX_WITH_NETFLT)
217 " [--hostonlyadapter<1-N> none|<devicename>]\n"
218#endif
219 " [--intnet<1-N> <network name>]\n"
220 " [--natnet<1-N> <network>|default]\n"
221 " [--nicgenericdrv<1-N> <driver>\n"
222 " [--natsettings<1-N> [<mtu>],[<socksnd>],\n"
223 " [<sockrcv>],[<tcpsnd>],\n"
224 " [<tcprcv>]]\n"
225 " [--natpf<1-N> [<rulename>],tcp|udp,[<hostip>],\n"
226 " <hostport>,[<guestip>],<guestport>]\n"
227 " [--natpf<1-N> delete <rulename>]\n"
228 " [--nattftpprefix<1-N> <prefix>]\n"
229 " [--nattftpfile<1-N> <file>]\n"
230 " [--nattftpserver<1-N> <ip>]\n"
231 " [--natbindip<1-N> <ip>\n"
232 " [--natdnspassdomain<1-N> on|off]\n"
233 " [--natdnsproxy<1-N> on|off]\n"
234 " [--natdnshostresolver<1-N> on|off]\n"
235 " [--nataliasmode<1-N> default|[log],[proxyonly],\n"
236 " [sameports]]\n"
237 " [--macaddress<1-N> auto|<mac>]\n"
238 " [--mouse ps2|usb|usbtablet\n"
239 " [--keyboard ps2|usb\n"
240 " [--uart<1-N> off|<I/O base> <IRQ>]\n"
241 " [--uartmode<1-N> disconnected|\n"
242 " server <pipe>|\n"
243 " client <pipe>|\n"
244 " file <file>|\n"
245 " <devicename>]\n"
246 " [--guestmemoryballoon <balloonsize in MB>]\n"
247 " [--gueststatisticsinterval <seconds>]\n"
248 " [--audio none|null");
249 if (fWin)
250 {
251#ifdef VBOX_WITH_WINMM
252 RTStrmPrintf(pStrm, "|winmm|dsound");
253#else
254 RTStrmPrintf(pStrm, "|dsound");
255#endif
256 }
257 if (fSolaris)
258 {
259 RTStrmPrintf(pStrm, "|solaudio"
260#ifdef VBOX_WITH_SOLARIS_OSS
261 "|oss"
262#endif
263 );
264 }
265 if (fLinux)
266 {
267 RTStrmPrintf(pStrm, "|oss"
268#ifdef VBOX_WITH_ALSA
269 "|alsa"
270#endif
271#ifdef VBOX_WITH_PULSE
272 "|pulse"
273#endif
274 );
275 }
276 if (fFreeBSD)
277 {
278 /* Get the line break sorted when dumping all option variants. */
279 if (fDumpOpts)
280 {
281 RTStrmPrintf(pStrm, "|\n"
282 " oss");
283 }
284 else
285 RTStrmPrintf(pStrm, "|oss");
286#ifdef VBOX_WITH_PULSE
287 RTStrmPrintf(pStrm, "|pulse");
288#endif
289 }
290 if (fDarwin)
291 {
292 RTStrmPrintf(pStrm, "|coreaudio");
293 }
294 RTStrmPrintf(pStrm, "]\n");
295 RTStrmPrintf(pStrm,
296 " [--audiocontroller ac97|hda|sb16]\n"
297 " [--clipboard disabled|hosttoguest|guesttohost|\n"
298 " bidirectional]\n");
299 RTStrmPrintf(pStrm,
300 " [--vrde on|off]\n"
301 " [--vrdeextpack default|<name>\n"
302 " [--vrdeproperty <name=[value]>]\n"
303 " [--vrdeport <hostport>]\n"
304 " [--vrdeaddress <hostip>]\n"
305 " [--vrdeauthtype null|external|guest]\n"
306 " [--vrdeauthlibrary default|<name>\n"
307 " [--vrdemulticon on|off]\n"
308 " [--vrdereusecon on|off]\n"
309 " [--vrdevideochannel on|off]\n"
310 " [--vrdevideochannelquality <percent>]\n");
311 RTStrmPrintf(pStrm,
312 " [--usb on|off]\n"
313 " [--usbehci on|off]\n"
314 " [--snapshotfolder default|<path>]\n"
315 " [--teleporter on|off]\n"
316 " [--teleporterport <port>]\n"
317 " [--teleporteraddress <address|empty>\n"
318 " [--teleporterpassword <password>]\n"
319#if 0
320 " [--iocache on|off]\n"
321 " [--iocachesize <I/O cache size in MB>]\n"
322#endif
323#if 0
324 " [--faulttolerance master|standby]\n"
325 " [--faulttoleranceaddress <name>]\n"
326 " [--faulttoleranceport <port>]\n"
327 " [--faulttolerancesyncinterval <msec>]\n"
328 " [--faulttolerancepassword <password>]\n"
329#endif
330 "\n");
331 }
332
333 if (u64Cmd & USAGE_CLONEVM)
334 RTStrmPrintf(pStrm,
335 "VBoxManage clonevm <uuid>|<name>\n"
336 " [--name <name>]\n"
337 " [--basefolder <basefolder>]\n"
338 " [--uuid <uuid>]\n"
339 " [--register]\n"
340 "\n");
341
342 if (u64Cmd & USAGE_IMPORTAPPLIANCE)
343 RTStrmPrintf(pStrm,
344 "VBoxManage import <ovf/ova> [--dry-run|-n] [more options]\n"
345 " (run with -n to have options displayed\n"
346 " for a particular OVF)\n\n");
347
348 if (u64Cmd & USAGE_EXPORTAPPLIANCE)
349 RTStrmPrintf(pStrm,
350 "VBoxManage export <machines> --output|-o <ovf/ova>\n"
351 " [--legacy09]\n"
352 " [--manifest]\n"
353 " [--vsys <number of virtual system>]\n"
354 " [--product <product name>]\n"
355 " [--producturl <product url>]\n"
356 " [--vendor <vendor name>]\n"
357 " [--vendorurl <vendor url>]\n"
358 " [--version <version info>]\n"
359 " [--eula <license text>]\n"
360 " [--eulafile <filename>]\n"
361 "\n");
362
363 if (u64Cmd & USAGE_STARTVM)
364 {
365 RTStrmPrintf(pStrm,
366 "VBoxManage startvm <uuid>|<name>\n");
367 RTStrmPrintf(pStrm,
368 " [--type gui");
369 if (fVBoxSDL)
370 RTStrmPrintf(pStrm, "|sdl");
371 RTStrmPrintf(pStrm, "|headless]\n");
372 RTStrmPrintf(pStrm,
373 "\n");
374 }
375
376 if (u64Cmd & USAGE_CONTROLVM)
377 {
378 RTStrmPrintf(pStrm,
379 "VBoxManage controlvm <uuid>|<name>\n"
380 " pause|resume|reset|poweroff|savestate|\n"
381 " acpipowerbutton|acpisleepbutton|\n"
382 " keyboardputscancode <hex> [<hex> ...]|\n"
383 " setlinkstate<1-N> on|off |\n"
384#if defined(VBOX_WITH_NETFLT)
385 " nic<1-N> null|nat|bridged|intnet|hostonly|generic"
386 "\n"
387 " [<devicename>] |\n"
388#else /* !VBOX_WITH_NETFLT */
389 " nic<1-N> null|nat|bridged|intnet|generic\n"
390 " [<devicename>] |\n"
391#endif /* !VBOX_WITH_NETFLT */
392 " nictrace<1-N> on|off\n"
393 " nictracefile<1-N> <filename>\n"
394 " nicproperty<1-N> name=[value]\n"
395 " natpf<1-N> [<rulename>],tcp|udp,[<hostip>],\n"
396 " <hostport>,[<guestip>],<guestport>\n"
397 " natpf<1-N> delete <rulename>\n"
398 " guestmemoryballoon <balloonsize in MB>]\n"
399 " gueststatisticsinterval <seconds>]\n"
400 " usbattach <uuid>|<address> |\n"
401 " usbdetach <uuid>|<address> |\n");
402 RTStrmPrintf(pStrm,
403 " vrde on|off |\n");
404 RTStrmPrintf(pStrm,
405 " vrdeport <port> |\n"
406 " vrdeproperty <name=[value]> |\n"
407 " vrdevideochannelquality <percent>\n");
408 RTStrmPrintf(pStrm,
409 " setvideomodehint <xres> <yres> <bpp> [display] |\n"
410 " screenshotpng <file> [display] |\n"
411 " setcredentials <username> <password> <domain>\n"
412 " [--allowlocallogon <yes|no>] |\n"
413 " teleport --host <name> --port <port>\n"
414 " [--maxdowntime <msec>] [--password password]\n"
415 " plugcpu <id>\n"
416 " unplugcpu <id>\n"
417 " cpuexecutioncap <1-100>\n"
418 "\n");
419 }
420
421 if (u64Cmd & USAGE_DISCARDSTATE)
422 RTStrmPrintf(pStrm,
423 "VBoxManage discardstate <uuid>|<name>\n"
424 "\n");
425
426 if (u64Cmd & USAGE_ADOPTSTATE)
427 RTStrmPrintf(pStrm,
428 "VBoxManage adoptstate <uuid>|<name> <state_file>\n"
429 "\n");
430
431 if (u64Cmd & USAGE_SNAPSHOT)
432 RTStrmPrintf(pStrm,
433 "VBoxManage snapshot <uuid>|<name>\n"
434 " take <name> [--description <desc>] [--pause] |\n"
435 " delete <uuid>|<name> |\n"
436 " restore <uuid>|<name> |\n"
437 " restorecurrent |\n"
438 " edit <uuid>|<name>|--current\n"
439 " [--name <name>]\n"
440 " [--description <desc>] |\n"
441 " showvminfo <uuid>|<name>\n"
442 "\n");
443
444 if (u64Cmd & USAGE_CLOSEMEDIUM)
445 RTStrmPrintf(pStrm,
446 "VBoxManage closemedium disk|dvd|floppy <uuid>|<filename>\n"
447 " [--delete]\n"
448 "\n");
449
450 if (u64Cmd & USAGE_STORAGEATTACH)
451 RTStrmPrintf(pStrm,
452 "VBoxManage storageattach <uuid|vmname>\n"
453 " --storagectl <name>\n"
454 " --port <number>\n"
455 " --device <number>\n"
456 " [--type dvddrive|hdd|fdd]\n"
457 " [--medium none|emptydrive|\n"
458 " <uuid>|<filename>|host:<drive>|iscsi]\n"
459 " [--mtype normal|writethrough|immutable|shareable|\n"
460 " readonly|multiattach]\n"
461 " [--comment <text>]\n"
462 " [--passthrough on|off]\n"
463 " [--bandwidthgroup <name>]\n"
464 " [--forceunmount]\n"
465 " [--server <name>|<ip>]\n"
466 " [--target <target>]\n"
467 " [--port <port>]\n"
468 " [--lun <lun>]\n"
469 " [--encodedlun <lun>]\n"
470 " [--username <username>]\n"
471 " [--password <password>]\n"
472 " [--intnet]\n"
473 "\n");
474
475 if (u64Cmd & USAGE_STORAGECONTROLLER)
476 RTStrmPrintf(pStrm,
477 "VBoxManage storagectl <uuid|vmname>\n"
478 " --name <name>\n"
479 " [--add ide|sata|scsi|floppy|sas]\n"
480 " [--controller LSILogic|LSILogicSAS|BusLogic|\n"
481 " IntelAHCI|PIIX3|PIIX4|ICH6|I82078]\n"
482 " [--sataideemulation<1-4> <1-30>]\n"
483 " [--sataportcount <1-30>]\n"
484 " [--hostiocache on|off]\n"
485 " [--bootable on|off]\n"
486 " [--remove]\n"
487 "\n");
488
489 if (u64Cmd & USAGE_BANDWIDTHCONTROL)
490 RTStrmPrintf(pStrm,
491 "VBoxManage bandwidthctl <uuid|vmname>\n"
492 " --name <name>\n"
493 " [--add disk|network]\n"
494 " [--limit <megabytes per second>\n"
495 " [--delete]\n"
496 "\n");
497
498 if (u64Cmd & USAGE_SHOWHDINFO)
499 RTStrmPrintf(pStrm,
500 "VBoxManage showhdinfo <uuid>|<filename>\n"
501 "\n");
502
503 if (u64Cmd & USAGE_CREATEHD)
504 RTStrmPrintf(pStrm,
505 "VBoxManage createhd --filename <filename>\n"
506 " --size <megabytes>|--sizebyte <bytes>\n"
507 " [--format VDI|VMDK|VHD] (default: VDI)\n"
508 " [--variant Standard,Fixed,Split2G,Stream,ESX]\n"
509 "\n");
510
511 if (u64Cmd & USAGE_MODIFYHD)
512 RTStrmPrintf(pStrm,
513 "VBoxManage modifyhd <uuid>|<filename>\n"
514 " [--type normal|writethrough|immutable|shareable|\n"
515 " readonly|multiattach]\n"
516 " [--autoreset on|off]\n"
517 " [--compact]\n"
518 " [--resize <megabytes>|--resizebyte <bytes>]\n"
519 "\n");
520
521 if (u64Cmd & USAGE_CLONEHD)
522 RTStrmPrintf(pStrm,
523 "VBoxManage clonehd <uuid>|<filename> <uuid>|<outputfile>\n"
524 " [--format VDI|VMDK|VHD|RAW|<other>]\n"
525 " [--variant Standard,Fixed,Split2G,Stream,ESX]\n"
526 " [--existing]\n"
527 "\n");
528
529 if (u64Cmd & USAGE_CONVERTFROMRAW)
530 RTStrmPrintf(pStrm,
531 "VBoxManage convertfromraw <filename> <outputfile>\n"
532 " [--format VDI|VMDK|VHD]\n"
533 " [--variant Standard,Fixed,Split2G,Stream,ESX]\n"
534#ifndef RT_OS_WINDOWS
535 "VBoxManage convertfromraw stdin <outputfile> <bytes>\n"
536 " [--format VDI|VMDK|VHD]\n"
537 " [--variant Standard,Fixed,Split2G,Stream,ESX]\n"
538#endif
539 "\n");
540
541 if (u64Cmd & USAGE_GETEXTRADATA)
542 RTStrmPrintf(pStrm,
543 "VBoxManage getextradata global|<uuid>|<name>\n"
544 " <key>|enumerate\n"
545 "\n");
546
547 if (u64Cmd & USAGE_SETEXTRADATA)
548 RTStrmPrintf(pStrm,
549 "VBoxManage setextradata global|<uuid>|<name>\n"
550 " <key>\n"
551 " [<value>] (no value deletes key)\n"
552 "\n");
553
554 if (u64Cmd & USAGE_SETPROPERTY)
555 RTStrmPrintf(pStrm,
556 "VBoxManage setproperty machinefolder default|<folder> |\n"
557 " vrdeauthlibrary default|<library> |\n"
558 " websrvauthlibrary default|null|<library> |\n"
559 " vrdeextpack null|<library> |\n"
560 " loghistorycount <value>\n"
561 "\n");
562
563 if (u64Cmd & USAGE_USBFILTER_ADD)
564 RTStrmPrintf(pStrm,
565 "VBoxManage usbfilter add <index,0-N>\n"
566 " --target <uuid>|<name>|global\n"
567 " --name <string>\n"
568 " --action ignore|hold (global filters only)\n"
569 " [--active yes|no] (yes)\n"
570 " [--vendorid <XXXX>] (null)\n"
571 " [--productid <XXXX>] (null)\n"
572 " [--revision <IIFF>] (null)\n"
573 " [--manufacturer <string>] (null)\n"
574 " [--product <string>] (null)\n"
575 " [--remote yes|no] (null, VM filters only)\n"
576 " [--serialnumber <string>] (null)\n"
577 " [--maskedinterfaces <XXXXXXXX>]\n"
578 "\n");
579
580 if (u64Cmd & USAGE_USBFILTER_MODIFY)
581 RTStrmPrintf(pStrm,
582 "VBoxManage usbfilter modify <index,0-N>\n"
583 " --target <uuid>|<name>|global\n"
584 " [--name <string>]\n"
585 " [--action ignore|hold] (global filters only)\n"
586 " [--active yes|no]\n"
587 " [--vendorid <XXXX>|\"\"]\n"
588 " [--productid <XXXX>|\"\"]\n"
589 " [--revision <IIFF>|\"\"]\n"
590 " [--manufacturer <string>|\"\"]\n"
591 " [--product <string>|\"\"]\n"
592 " [--remote yes|no] (null, VM filters only)\n"
593 " [--serialnumber <string>|\"\"]\n"
594 " [--maskedinterfaces <XXXXXXXX>]\n"
595 "\n");
596
597 if (u64Cmd & USAGE_USBFILTER_REMOVE)
598 RTStrmPrintf(pStrm,
599 "VBoxManage usbfilter remove <index,0-N>\n"
600 " --target <uuid>|<name>|global\n"
601 "\n");
602
603 if (u64Cmd & USAGE_SHAREDFOLDER_ADD)
604 RTStrmPrintf(pStrm,
605 "VBoxManage sharedfolder add <vmname>|<uuid>\n"
606 " --name <name> --hostpath <hostpath>\n"
607 " [--transient] [--readonly] [--automount]\n"
608 "\n");
609
610 if (u64Cmd & USAGE_SHAREDFOLDER_REMOVE)
611 RTStrmPrintf(pStrm,
612 "VBoxManage sharedfolder remove <vmname>|<uuid>\n"
613 " --name <name> [--transient]\n"
614 "\n");
615
616#ifdef VBOX_WITH_GUEST_PROPS
617 if (u64Cmd & USAGE_GUESTPROPERTY)
618 usageGuestProperty(pStrm);
619#endif /* VBOX_WITH_GUEST_PROPS defined */
620
621#ifdef VBOX_WITH_GUEST_CONTROL
622 if (u64Cmd & USAGE_GUESTCONTROL)
623 usageGuestControl(pStrm);
624#endif /* VBOX_WITH_GUEST_CONTROL defined */
625
626 if (u64Cmd & USAGE_DEBUGVM)
627 {
628 RTStrmPrintf(pStrm,
629 "VBoxManage debugvm <uuid>|<name>\n"
630 " dumpguestcore --filename <name> |\n"
631 " info <item> [args] |\n"
632 " injectnmi |\n"
633 " osdetect |\n"
634 " osinfo |\n"
635 " getregisters [--cpu <id>] <reg>|all ... |\n"
636 " setregisters [--cpu <id>] <reg>=<value> ... |\n"
637 " statistics [--reset] [--pattern <pattern>]\n"
638 " [--descriptions]\n"
639 "\n");
640 }
641 if (u64Cmd & USAGE_METRICS)
642 RTStrmPrintf(pStrm,
643 "VBoxManage metrics list [*|host|<vmname> [<metric_list>]]\n"
644 " (comma-separated)\n\n"
645 "VBoxManage metrics setup\n"
646 " [--period <seconds>] (default: 1)\n"
647 " [--samples <count>] (default: 1)\n"
648 " [--list]\n"
649 " [*|host|<vmname> [<metric_list>]]\n\n"
650 "VBoxManage metrics query [*|host|<vmname> [<metric_list>]]\n\n"
651 "VBoxManage metrics enable\n"
652 " [--list]\n"
653 " [*|host|<vmname> [<metric_list>]]\n\n"
654 "VBoxManage metrics disable\n"
655 " [--list]\n"
656 " [*|host|<vmname> [<metric_list>]]\n\n"
657 "VBoxManage metrics collect\n"
658 " [--period <seconds>] (default: 1)\n"
659 " [--samples <count>] (default: 1)\n"
660 " [--list]\n"
661 " [--detach]\n"
662 " [*|host|<vmname> [<metric_list>]]\n"
663 "\n");
664
665#if defined(VBOX_WITH_NETFLT)
666 if (u64Cmd & USAGE_HOSTONLYIFS)
667 {
668 RTStrmPrintf(pStrm,
669 "VBoxManage hostonlyif ipconfig <name>\n"
670 " [--dhcp |\n"
671 " --ip<ipv4> [--netmask<ipv4> (def: 255.255.255.0)] |\n"
672 " --ipv6<ipv6> [--netmasklengthv6<length> (def: 64)]]\n"
673# if !defined(RT_OS_SOLARIS)
674 " create |\n"
675 " remove <name>\n"
676# endif
677 "\n");
678 }
679#endif
680
681 if (u64Cmd & USAGE_DHCPSERVER)
682 {
683 RTStrmPrintf(pStrm,
684 "VBoxManage dhcpserver add|modify --netname <network_name> |\n"
685#if defined(VBOX_WITH_NETFLT)
686 " --ifname <hostonly_if_name>\n"
687#endif
688 " [--ip <ip_address>\n"
689 " --netmask <network_mask>\n"
690 " --lowerip <lower_ip>\n"
691 " --upperip <upper_ip>]\n"
692 " [--enable | --disable]\n\n"
693 "VBoxManage dhcpserver remove --netname <network_name> |\n"
694#if defined(VBOX_WITH_NETFLT)
695 " --ifname <hostonly_if_name>\n"
696#endif
697 "\n");
698 }
699 if (u64Cmd & USAGE_EXTPACK)
700 {
701 RTStrmPrintf(pStrm,
702 "VBoxManage extpack install <tarball> |\n"
703 " uninstall [--force] <name> |\n"
704 " cleanup\n"
705 "\n");
706 }
707}
708
709/**
710 * Print a usage synopsis and the syntax error message.
711 * @returns RTEXITCODE_SYNTAX.
712 */
713RTEXITCODE errorSyntax(USAGECATEGORY u64Cmd, const char *pszFormat, ...)
714{
715 va_list args;
716 showLogo(g_pStdErr); // show logo even if suppressed
717#ifndef VBOX_ONLY_DOCS
718 if (g_fInternalMode)
719 printUsageInternal(u64Cmd, g_pStdErr);
720 else
721 printUsage(u64Cmd, g_pStdErr);
722#endif /* !VBOX_ONLY_DOCS */
723 va_start(args, pszFormat);
724 RTStrmPrintf(g_pStdErr, "\nSyntax error: %N\n", pszFormat, &args);
725 va_end(args);
726 return RTEXITCODE_SYNTAX;
727}
728
729/**
730 * errorSyntax for RTGetOpt users.
731 *
732 * @returns RTEXITCODE_SYNTAX.
733 *
734 * @param fUsageCategory The usage category of the command.
735 * @param rc The RTGetOpt return code.
736 * @param pValueUnion The value union.
737 */
738RTEXITCODE errorGetOpt(USAGECATEGORY fUsageCategory, int rc, union RTGETOPTUNION const *pValueUnion)
739{
740 /*
741 * Check if it is an unhandled standard option.
742 */
743 if (rc == 'V')
744 {
745 RTPrintf("%sr%d\n", VBOX_VERSION_STRING, RTBldCfgRevision());
746 return RTEXITCODE_SUCCESS;
747 }
748
749 if (rc == 'h')
750 {
751 showLogo(g_pStdErr);
752#ifndef VBOX_ONLY_DOCS
753 if (g_fInternalMode)
754 printUsageInternal(fUsageCategory, g_pStdOut);
755 else
756 printUsage(fUsageCategory, g_pStdOut);
757#endif
758 return RTEXITCODE_SUCCESS;
759 }
760
761 /*
762 * General failure.
763 */
764 showLogo(g_pStdErr); // show logo even if suppressed
765#ifndef VBOX_ONLY_DOCS
766 if (g_fInternalMode)
767 printUsageInternal(fUsageCategory, g_pStdErr);
768 else
769 printUsage(fUsageCategory, g_pStdErr);
770#endif /* !VBOX_ONLY_DOCS */
771
772 if (rc == VINF_GETOPT_NOT_OPTION)
773 return RTMsgErrorExit(RTEXITCODE_SYNTAX, "Invalid parameter '%s'", pValueUnion->psz);
774 if (rc > 0)
775 {
776 if (RT_C_IS_PRINT(rc))
777 return RTMsgErrorExit(RTEXITCODE_SYNTAX, "Invalid option -%c", rc);
778 return RTMsgErrorExit(RTEXITCODE_SYNTAX, "Invalid option case %i", rc);
779 }
780 if (rc == VERR_GETOPT_UNKNOWN_OPTION)
781 return RTMsgErrorExit(RTEXITCODE_SYNTAX, "Unknown option: %s", pValueUnion->psz);
782 if (pValueUnion->pDef)
783 return RTMsgErrorExit(RTEXITCODE_SYNTAX, "%s: %Rrs", pValueUnion->pDef->pszLong, rc);
784 return RTMsgErrorExit(RTEXITCODE_SYNTAX, "%Rrs", rc);
785}
786
787/**
788 * Print an error message without the syntax stuff.
789 *
790 * @returns RTEXITCODE_SYNTAX.
791 */
792RTEXITCODE errorArgument(const char *pszFormat, ...)
793{
794 va_list args;
795 va_start(args, pszFormat);
796 RTMsgErrorV(pszFormat, args);
797 va_end(args);
798 return RTEXITCODE_SYNTAX;
799}
Note: See TracBrowser for help on using the repository browser.

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