settings.h revision 101e307bb33304d9dda53a7652510880e8228b13
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/** @file
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Settings file data structures.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * These structures are created by the settings file loader and filled with values
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * copied from the raw XML data. This was all new with VirtualBox 3.1 and allows us
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * to finally make the XML reader version-independent and read VirtualBox XML files
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * from earlier and even newer (future) versions without requiring complicated,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * tedious and error-prone XSLT conversions.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * It is this file that defines all structures that map VirtualBox global and
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * machine settings to XML files. These structures are used by the rest of Main,
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * even though this header file does not require anything else in Main.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Note: Headers in Main code have been tweaked to only declare the structures
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * defined here so that this header need only be included from code files that
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * actually use these structures.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/*
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Copyright (C) 2007-2013 Oracle Corporation
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * available from http://www.virtualbox.org. This file is free software;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * you can redistribute it and/or modify it under the terms of the GNU
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * General Public License (GPL) as published by the Free Software
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * The contents of this file may alternatively be used under the terms
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * of the Common Development and Distribution License Version 1.0
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * VirtualBox OSE distribution, in which case the provisions of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * CDDL are applicable instead of those of the GPL.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * You may elect to license modified versions of this file under the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * terms and conditions of either the GPL or the CDDL or both.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifndef ___VBox_settings_h
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define ___VBox_settings_h
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <iprt/time.h>
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "VBox/com/VirtualBox.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <VBox/com/Guid.h>
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <VBox/com/string.h>
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <list>
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <map>
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync/**
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * Maximum depth of the snapshot tree, to prevent stack overflows.
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * XPCOM has a relatively low stack size for its workers, and we have
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * to avoid crashes due to exceeding the limit both on reading and
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * writing config files.
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync */
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync#define SETTINGS_SNAPSHOT_DEPTH_MAX 250
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsyncnamespace xml
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync{
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync class ElementNode;
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync}
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsyncnamespace settings
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync{
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsyncclass ConfigFileError;
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync////////////////////////////////////////////////////////////////////////////////
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync//
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync// Structures shared between Machine XML and VirtualBox.xml
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync//
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync////////////////////////////////////////////////////////////////////////////////
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync/**
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * USB device filter definition. This struct is used both in MainConfigFile
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * (for global USB filters) and MachineConfigFile (for machine filters).
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync *
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * your settings might never get saved.
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync */
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsyncstruct USBDeviceFilter
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync USBDeviceFilter()
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync : fActive(false),
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync action(USBDeviceFilterAction_Null),
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ulMaskedInterfaces(0)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool operator==(const USBDeviceFilter&u) const;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strName;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool fActive;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strVendorId,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync strProductId,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync strRevision,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync strManufacturer,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync strProduct,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync strSerialNumber,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync strPort;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync USBDeviceFilterAction_T action; // only used with host USB filters
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strRemote; // irrelevant for host USB objects
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync uint32_t ulMaskedInterfaces; // irrelevant for host USB objects
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::map<com::Utf8Str, com::Utf8Str> StringsMap;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<com::Utf8Str> StringsList;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync// ExtraDataItem (used by both VirtualBox.xml and machines XML)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct USBDeviceFilter;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<USBDeviceFilter> USBDeviceFiltersList;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct Medium;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<Medium> MediaList;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/**
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * your settings might never get saved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct Medium
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync Medium()
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync : fAutoReset(false),
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync hdType(MediumType_Normal)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Guid uuid;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strLocation;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDescription;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync // the following are for hard disks only:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strFormat;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool fAutoReset; // optional, only for diffs, default is false
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync StringsMap properties;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync MediumType_T hdType;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync MediaList llChildren; // only used with hard disks
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool operator==(const Medium &m) const;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/**
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * A media registry. Starting with VirtualBox 3.3, this can appear in both the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * VirtualBox.xml file as well as machine XML files with settings version 1.11
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * or higher, so these lists are now in ConfigFileBase.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * your settings might never get saved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct MediaRegistry
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync MediaList llHardDisks,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync llDvdImages,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync llFloppyImages;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool operator==(const MediaRegistry &m) const;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/**
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct NATRule
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync NATRule()
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync : proto(NATProtocol_TCP),
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync u16HostPort(0),
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync u16GuestPort(0)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool operator==(const NATRule &r) const
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return strName == r.strName
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync && proto == r.proto
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync && u16HostPort == r.u16HostPort
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync && strHostIP == r.strHostIP
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync && u16GuestPort == r.u16GuestPort
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync && strGuestIP == r.strGuestIP;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strName;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync NATProtocol_T proto;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync uint16_t u16HostPort;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strHostIP;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync uint16_t u16GuestPort;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strGuestIP;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<NATRule> NATRuleList;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct NATHostLoopbackOffset
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync /** Note: 128/8 is only acceptable */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strLoopbackHostAddress;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync uint32_t u32Offset;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool operator == (const com::Utf8Str& strAddr)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return (strLoopbackHostAddress == strAddr);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool operator == (uint32_t off)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return (this->u32Offset == off);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<NATHostLoopbackOffset> NATLoopbackOffsetList;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/**
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Common base class for both MainConfigFile and MachineConfigFile
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * which contains some common logic for both.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncclass ConfigFileBase
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncpublic:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool fileExists();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void copyBaseFrom(const ConfigFileBase &b);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncprotected:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ConfigFileBase(const com::Utf8Str *pstrFilename);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync /* Note: this copy constructor doesn't create a full copy of other, cause
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * the file based stuff (xml doc) could not be copied. */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ConfigFileBase(const ConfigFileBase &other);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ~ConfigFileBase();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void parseUUID(com::Guid &guid,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync const com::Utf8Str &strUUID) const;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void parseTimestamp(RTTIMESPEC &timestamp,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync const com::Utf8Str &str) const;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str makeString(const RTTIMESPEC &tm);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readExtraData(const xml::ElementNode &elmExtraData,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync StringsMap &map);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readUSBDeviceFilters(const xml::ElementNode &elmDeviceFilters,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync USBDeviceFiltersList &ll);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync typedef enum {Error, HardDisk, DVDImage, FloppyImage} MediaType;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readMedium(MediaType t, const xml::ElementNode &elmMedium, MediaList &llMedia);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readMediaRegistry(const xml::ElementNode &elmMediaRegistry, MediaRegistry &mr);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readNATForwardRuleList(const xml::ElementNode &elmParent, NATRuleList &llRules);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readNATLoopbacks(const xml::ElementNode &elmParent, NATLoopbackOffsetList &llLoopBacks);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void setVersionAttribute(xml::ElementNode &elm);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void createStubDocument();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void buildExtraData(xml::ElementNode &elmParent, const StringsMap &me);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void buildUSBDeviceFilters(xml::ElementNode &elmParent,
c62d2520ac91e12cf4665c936f490dd2064152d3vboxsync const USBDeviceFiltersList &ll,
c62d2520ac91e12cf4665c936f490dd2064152d3vboxsync bool fHostMode);
c62d2520ac91e12cf4665c936f490dd2064152d3vboxsync void buildMedium(xml::ElementNode &elmMedium,
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync DeviceType_T devType,
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync const Medium &m,
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync uint32_t level);
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync void buildMediaRegistry(xml::ElementNode &elmParent,
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync const MediaRegistry &mr);
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync void buildNATForwardRuleList(xml::ElementNode &elmParent, const NATRuleList &natRuleList);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void buildNATLoopbacks(xml::ElementNode &elmParent, const NATLoopbackOffsetList &natLoopbackList);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void clearDocument();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync struct Data;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync Data *m;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync friend class ConfigFileError;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync////////////////////////////////////////////////////////////////////////////////
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync//
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync// VirtualBox.xml structures
a7ba3d5f31ca70d04a3933e570374e5ec5eff84avboxsync//
12204ff4d822f4d94cf0ced0a12f4e1b5fc664advboxsync////////////////////////////////////////////////////////////////////////////////
12204ff4d822f4d94cf0ced0a12f4e1b5fc664advboxsync
b57c052e6d9d432fa8b66fb33d373fc608d4d050vboxsyncstruct Host
b57c052e6d9d432fa8b66fb33d373fc608d4d050vboxsync{
b57c052e6d9d432fa8b66fb33d373fc608d4d050vboxsync USBDeviceFiltersList llUSBDeviceFilters;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct SystemProperties
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync SystemProperties()
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync : ulLogHistoryCount(3)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if defined(RT_OS_DARWIN) || defined(RT_OS_WINDOWS)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync , fExclusiveHwVirt(false)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync , fExclusiveHwVirt(true)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDefaultMachineFolder;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDefaultHardDiskFolder;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDefaultHardDiskFormat;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strVRDEAuthLibrary;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strWebServiceAuthLibrary;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDefaultVRDEExtPack;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strAutostartDatabasePath;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDefaultAdditionsISO;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strDefaultFrontend;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strLoggingLevel;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync uint32_t ulLogHistoryCount;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool fExclusiveHwVirt;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync};
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstruct MachineRegistryEntry
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Guid uuid;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync com::Utf8Str strSettingsFile;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync};
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::list<MachineRegistryEntry> MachinesRegistry;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::map<DhcpOpt_T, com::Utf8Str> DhcpOptionMap;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef DhcpOptionMap::value_type DhcpOptValuePair;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef DhcpOptionMap::iterator DhcpOptIterator;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef DhcpOptionMap::const_iterator DhcpOptConstIterator;
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef struct VmNameSlotKey
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync VmNameSlotKey(const com::Utf8Str& aVmName, LONG aSlot): VmName(aVmName),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync Slot(aSlot){}
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync const com::Utf8Str VmName;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync LONG Slot;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator< (const VmNameSlotKey& that) const
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync if (VmName == that.VmName)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync return Slot < that.Slot;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync else return VmName < that.VmName;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync }
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync} VmNameSlotKey;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef std::map<VmNameSlotKey, DhcpOptionMap> VmSlot2OptionsMap;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef VmSlot2OptionsMap::value_type VmSlot2OptionsPair;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef VmSlot2OptionsMap::iterator VmSlot2OptionsIterator;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef VmSlot2OptionsMap::const_iterator VmSlot2OptionsConstIterator;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsyncstruct DHCPServer
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync{
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync DHCPServer()
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync : fEnabled(false)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync {}
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync com::Utf8Str strNetworkName,
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync strIPAddress,
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync strIPLower,
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync strIPUpper;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fEnabled;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync std::map<DhcpOpt_T, com::Utf8Str> GlobalDhcpOptions;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync VmSlot2OptionsMap VmSlot2OptionsM;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync};
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::list<DHCPServer> DHCPServersList;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync/**
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * Nat Networking settings (NAT service).
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsyncstruct NATNetwork
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync{
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strNetworkName;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fEnabled;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strNetwork;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fIPv6;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strIPv6Prefix;
a91869e545af1b242b7c5f6f0aa12164f74225f4vboxsync uint32_t u32HostLoopback6Offset;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync NATLoopbackOffsetList llHostLoopbackOffsetList;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fAdvertiseDefaultIPv6Route;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fNeedDhcpServer;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync NATRuleList llPortForwardRules4;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync NATRuleList llPortForwardRules6;
a91869e545af1b242b7c5f6f0aa12164f74225f4vboxsync NATNetwork():fEnabled(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fAdvertiseDefaultIPv6Route(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fNeedDhcpServer(false)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {}
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator==(const NATNetwork &n) const
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync return strNetworkName == n.strNetworkName
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && strNetwork == n.strNetwork;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync }
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync};
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef std::list<NATNetwork> NATNetworksList;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsyncclass MainConfigFile : public ConfigFileBase
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync{
c113f3435253eb5c01a17f6b599c280d505663f7vboxsyncpublic:
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync MainConfigFile(const com::Utf8Str *pstrFilename);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readMachineRegistry(const xml::ElementNode &elmMachineRegistry);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readDHCPServers(const xml::ElementNode &elmDHCPServers);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readDhcpOptions(DhcpOptionMap& map, const xml::ElementNode& options);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readNATNetworks(const xml::ElementNode &elmNATNetworks);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void write(const com::Utf8Str strFilename);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync Host host;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync SystemProperties systemProperties;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync MediaRegistry mediaRegistry;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync MachinesRegistry llMachines;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync DHCPServersList llDhcpServers;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync NATNetworksList llNATNetworks;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync StringsMap mapExtraDataItems;
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsyncprivate:
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void bumpSettingsVersionIfNeeded();
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync};
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync////////////////////////////////////////////////////////////////////////////////
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync//
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync// Machine XML structures
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync//
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync////////////////////////////////////////////////////////////////////////////////
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync/**
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
a91869e545af1b242b7c5f6f0aa12164f74225f4vboxsync * your settings might never get saved.
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsyncstruct VRDESettings
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync{
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync VRDESettings()
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync : fEnabled(true),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync authType(AuthType_Null),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync ulAuthTimeout(5000),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fAllowMultiConnection(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fReuseSingleConnection(false)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {}
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator==(const VRDESettings& v) const;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fEnabled;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync AuthType_T authType;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t ulAuthTimeout;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strAuthLibrary;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fAllowMultiConnection,
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fReuseSingleConnection;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strVrdeExtPack;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync StringsMap mapProperties;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync};
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync/**
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * your settings might never get saved.
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsyncstruct BIOSSettings
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync{
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync BIOSSettings()
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync : fACPIEnabled(true),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fIOAPICEnabled(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fLogoFadeIn(true),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fLogoFadeOut(true),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync ulLogoDisplayTime(0),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync biosBootMenuMode(BIOSBootMenuMode_MessageAndMenu),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fPXEDebugEnabled(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync llTimeOffset(0)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {}
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator==(const BIOSSettings &d) const;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fACPIEnabled,
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fIOAPICEnabled,
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fLogoFadeIn,
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fLogoFadeOut;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t ulLogoDisplayTime;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strLogoImagePath;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync BIOSBootMenuMode_T biosBootMenuMode;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool fPXEDebugEnabled;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync int64_t llTimeOffset;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync};
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync/**
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * your settings might never get saved.
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsyncstruct USBController
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync{
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync USBController()
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync : enmType(USBControllerType_Null)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {}
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator==(const USBController &u) const;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strName;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync USBControllerType_T enmType;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync};
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef std::list<USBController> USBControllerList;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsyncstruct USB
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync{
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync USB() {}
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator==(const USB &u) const;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync /** List of USB controllers present. */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync USBControllerList llUSBControllers;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync /** List of USB device filters. */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync USBDeviceFiltersList llDeviceFilters;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync};
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync struct NAT
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync NAT()
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync : u32Mtu(0),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync u32SockRcv(0),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync u32SockSnd(0),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync u32TcpRcv(0),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync u32TcpSnd(0),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fDNSPassDomain(true), /* historically this value is true */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fDNSProxy(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fDNSUseHostResolver(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fAliasLog(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fAliasProxyOnly(false),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fAliasUseSamePorts(false)
a91869e545af1b242b7c5f6f0aa12164f74225f4vboxsync {}
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync bool operator==(const NAT &n) const
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync {
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync return strNetwork == n.strNetwork
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && strBindIP == n.strBindIP
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && u32Mtu == n.u32Mtu
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && u32SockRcv == n.u32SockRcv
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && u32SockSnd == n.u32SockSnd
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && u32TcpSnd == n.u32TcpSnd
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && u32TcpRcv == n.u32TcpRcv
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && strTFTPPrefix == n.strTFTPPrefix
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && strTFTPBootFile == n.strTFTPBootFile
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && strTFTPNextServer == n.strTFTPNextServer
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && fDNSPassDomain == n.fDNSPassDomain
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && fDNSProxy == n.fDNSProxy
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && fDNSUseHostResolver == n.fDNSUseHostResolver
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && fAliasLog == n.fAliasLog
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && fAliasProxyOnly == n.fAliasProxyOnly
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && fAliasUseSamePorts == n.fAliasUseSamePorts
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync && llRules == n.llRules;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync }
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strNetwork;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strBindIP;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t u32Mtu;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t u32SockRcv;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t u32SockSnd;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t u32TcpRcv;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync uint32_t u32TcpSnd;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strTFTPPrefix;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync com::Utf8Str strTFTPBootFile;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync com::Utf8Str strTFTPNextServer;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fDNSPassDomain;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fDNSProxy;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fDNSUseHostResolver;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fAliasLog;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fAliasProxyOnly;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fAliasUseSamePorts;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NATRuleList llRules;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync };
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync/**
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncstruct NetworkAdapter
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NetworkAdapter()
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync : ulSlot(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync type(NetworkAdapterType_Am79C970A),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fEnabled(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fCableConnected(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulLineSpeed(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync enmPromiscModePolicy(NetworkAdapterPromiscModePolicy_Deny),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fTraceEnabled(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync mode(NetworkAttachmentType_Null),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulBootPriority(0)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync {}
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool operator==(const NetworkAdapter &n) const;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulSlot;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NetworkAdapterType_T type;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fEnabled;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strMACAddress;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fCableConnected;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulLineSpeed;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NetworkAdapterPromiscModePolicy_T enmPromiscModePolicy;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fTraceEnabled;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strTraceFile;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NetworkAttachmentType_T mode;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NAT nat;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strBridgedName;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strHostOnlyName;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strInternalNetworkName;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strGenericDriver;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync StringsMap genericProperties;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulBootPriority;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strBandwidthGroup; // requires settings version 1.13 (VirtualBox 4.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync};
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef std::list<NetworkAdapter> NetworkAdaptersList;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync/**
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncstruct SerialPort
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync SerialPort()
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync : ulSlot(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fEnabled(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulIOBase(0x3f8),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulIRQ(4),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync portMode(PortMode_Disconnected),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fServer(false)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync {}
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool operator==(const SerialPort &n) const;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulSlot;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fEnabled;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulIOBase;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulIRQ;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync PortMode_T portMode;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strPath;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fServer;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync};
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef std::list<SerialPort> SerialPortsList;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync/**
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncstruct ParallelPort
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ParallelPort()
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync : ulSlot(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fEnabled(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulIOBase(0x378),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulIRQ(7)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync {}
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool operator==(const ParallelPort &d) const;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulSlot;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fEnabled;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulIOBase;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulIRQ;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strPath;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync};
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef std::list<ParallelPort> ParallelPortsList;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync/**
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncstruct AudioAdapter
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync AudioAdapter()
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync : fEnabled(true),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync controllerType(AudioControllerType_AC97),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync driverType(AudioDriverType_Null)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {}
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const AudioAdapter &a) const
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return (this == &a)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync || ( (fEnabled == a.fEnabled)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (controllerType == a.controllerType)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (driverType == a.driverType)
d7bd3e8bc4c337f385a92e0e5528525abba906c2vboxsync );
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool fEnabled;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync AudioControllerType_T controllerType;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync AudioDriverType_T driverType;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct SharedFolder
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync SharedFolder()
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync : fWritable(false)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync , fAutoMount(false)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {}
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const SharedFolder &a) const;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strName,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync strHostPath;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool fWritable;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool fAutoMount;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<SharedFolder> SharedFoldersList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
7908c1b917ec64d28d80a506f7a1bc524cd2f212vboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct GuestProperty
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync GuestProperty()
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync : timestamp(0)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const GuestProperty &g) const;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strName,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync strValue;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint64_t timestamp;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strFlags;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<GuestProperty> GuestPropertiesList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::map<uint32_t, DeviceType_T> BootOrderMap;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct CpuIdLeaf
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync CpuIdLeaf()
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync : ulId(UINT32_MAX),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync ulEax(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync ulEbx(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync ulEcx(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync ulEdx(0)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {}
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const CpuIdLeaf &c) const
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return ( (this == &c)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync || ( (ulId == c.ulId)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (ulEax == c.ulEax)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (ulEbx == c.ulEbx)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (ulEcx == c.ulEcx)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (ulEdx == c.ulEdx)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync )
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync );
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulId;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulEax;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulEbx;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulEcx;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulEdx;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<CpuIdLeaf> CpuIdLeafsList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct Cpu
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync Cpu()
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync : ulId(UINT32_MAX)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {}
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const Cpu &c) const
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return (ulId == c.ulId);
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulId;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<Cpu> CpuList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct BandwidthGroup
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync BandwidthGroup()
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync : cMaxBytesPerSec(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync enmType(BandwidthGroupType_Null)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {}
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const BandwidthGroup &i) const
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return ( (strName == i.strName)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (cMaxBytesPerSec == i.cMaxBytesPerSec)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (enmType == i.enmType));
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strName;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint64_t cMaxBytesPerSec;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync BandwidthGroupType_T enmType;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<BandwidthGroup> BandwidthGroupList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct IOSettings
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync IOSettings();
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const IOSettings &i) const
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return ( (fIOCacheEnabled == i.fIOCacheEnabled)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (ulIOCacheSize == i.ulIOCacheSize)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (llBandwidthGroups == i.llBandwidthGroups));
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool fIOCacheEnabled;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t ulIOCacheSize;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync BandwidthGroupList llBandwidthGroups;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct HostPCIDeviceAttachment
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync HostPCIDeviceAttachment()
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync : uHostAddress(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uGuestAddress(0)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {}
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const HostPCIDeviceAttachment &a) const
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return ( (uHostAddress == a.uHostAddress)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (uGuestAddress == a.uGuestAddress)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (strDeviceName == a.strDeviceName)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync );
f0b06b8e4de2a0d9ddb10ac0a30d68fafd73d8c1vboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f0b06b8e4de2a0d9ddb10ac0a30d68fafd73d8c1vboxsync com::Utf8Str strDeviceName;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t uHostAddress;
f0b06b8e4de2a0d9ddb10ac0a30d68fafd73d8c1vboxsync uint32_t uGuestAddress;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsynctypedef std::list<HostPCIDeviceAttachment> HostPCIDeviceAttachmentList;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * Representation of Machine hardware; this is used in the MachineConfigFile.hardwareMachine
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * field.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync *
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct Hardware
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync Hardware();
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const Hardware&) const;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strVersion; // hardware version, optional
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Guid uuid; // hardware uuid, optional (null).
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool fHardwareVirt,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fNestedPaging,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fLargePages,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fVPID,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fUnrestrictedExecution,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fHardwareVirtForce,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fSyntheticCpu,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fPAE;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync typedef enum LongModeType { LongMode_Enabled, LongMode_Disabled, LongMode_Legacy } LongModeType;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync LongModeType enmLongMode;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t cCPUs;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fCpuHotPlug; // requires settings version 1.10 (VirtualBox 3.2)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync CpuList llCpus; // requires settings version 1.10 (VirtualBox 3.2)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fHPETEnabled; // requires settings version 1.10 (VirtualBox 3.2)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync uint32_t ulCpuExecutionCap; // requires settings version 1.11 (VirtualBox 3.3)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsync CpuIdLeafsList llCpuIdLeafs;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulMemorySizeMB;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BootOrderMap mapBootOrder; // item 0 has highest priority
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync GraphicsControllerType_T graphicsControllerType;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVRAMSizeMB;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t cMonitors;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fAccelerate3D,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fAccelerate2DVideo; // requires settings version 1.8 (VirtualBox 3.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureHorzRes; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureVertRes; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureRate; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureFPS; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fVideoCaptureEnabled; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint64_t u64VideoCaptureScreens; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strVideoCaptureFile; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync FirmwareType_T firmwareType; // requires settings version 1.9 (VirtualBox 3.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync PointingHIDType_T pointingHIDType; // requires settings version 1.10 (VirtualBox 3.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync KeyboardHIDType_T keyboardHIDType; // requires settings version 1.10 (VirtualBox 3.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ChipsetType_T chipsetType; // requires settings version 1.11 (VirtualBox 4.0)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fEmulatedUSBCardReader; // 1.12 (VirtualBox 4.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync VRDESettings vrdeSettings;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BIOSSettings biosSettings;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync USB usbSettings;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NetworkAdaptersList llNetworkAdapters;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync SerialPortsList llSerialPorts;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ParallelPortsList llParallelPorts;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync AudioAdapter audioAdapter;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // technically these two have no business in the hardware section, but for some
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // clever reason <Hardware> is where they are in the XML....
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync SharedFoldersList llSharedFolders;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ClipboardMode_T clipboardMode;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync DragAndDropMode_T dragAndDropMode;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulMemoryBalloonSize;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fPageFusionEnabled;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync GuestPropertiesList llGuestProperties;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strNotificationPatterns;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync IOSettings ioSettings; // requires settings version 1.10 (VirtualBox 3.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync HostPCIDeviceAttachmentList pciAttachments; // requires settings version 1.12 (VirtualBox 4.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strDefaultFrontend; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync};
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync/**
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * A device attached to a storage controller. This can either be a
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * hard disk or a DVD drive or a floppy drive and also specifies
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * which medium is "in" the drive; as a result, this is a combination
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * of the Main IMedium and IMediumAttachment interfaces.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync *
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncstruct AttachedDevice
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync AttachedDevice()
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync : deviceType(DeviceType_Null),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fPassThrough(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fTempEject(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fNonRotational(false),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync lPort(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync lDevice(0)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync {}
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool operator==(const AttachedDevice &a) const;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync DeviceType_T deviceType; // only HardDisk, DVD or Floppy are allowed
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // DVDs can be in pass-through mode:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fPassThrough;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Whether guest-triggered eject of DVDs will keep the medium in the
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // VM config or not:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fTempEject;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Whether the medium is non-rotational:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fNonRotational;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Whether the medium supports discarding unused blocks:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fDiscard;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync int32_t lPort;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync int32_t lDevice;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // if an image file is attached to the device (ISO, RAW, or hard disk image such as VDI),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // this is its UUID; it depends on deviceType which media registry this then needs to
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // be looked up in. If no image file (only permitted for DVDs and floppies), then the UUID is NULL
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Guid uuid;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // for DVDs and floppies, the attachment can also be a host device:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strHostDriveSrc; // if != NULL, value of <HostDrive>/@src
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Bandwidth group the device is attached to.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strBwGroup;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync};
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef std::list<AttachedDevice> AttachedDevicesList;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync/**
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncstruct StorageController
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync{
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync StorageController()
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync : storageBus(StorageBus_IDE),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync controllerType(StorageControllerType_PIIX3),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulPortCount(2),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ulInstance(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fUseHostIOCache(true),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fBootable(true),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync lIDE0MasterEmulationPort(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync lIDE0SlaveEmulationPort(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync lIDE1MasterEmulationPort(0),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync lIDE1SlaveEmulationPort(0)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync {}
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool operator==(const StorageController &s) const;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strName;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync StorageBus_T storageBus; // _SATA, _SCSI, _IDE, _SAS
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync StorageControllerType_T controllerType;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulPortCount;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulInstance;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fUseHostIOCache;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fBootable;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // only for when controllerType == StorageControllerType_IntelAhci:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync int32_t lIDE0MasterEmulationPort,
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync lIDE0SlaveEmulationPort,
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync lIDE1MasterEmulationPort,
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync lIDE1SlaveEmulationPort;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync AttachedDevicesList llAttachedDevices;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync};
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::list<StorageController> StorageControllersList;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync/**
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * We wrap the storage controllers list into an extra struct so we can
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * use an undefined struct without needing std::list<> in all the headers.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync *
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * your settings might never get saved.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync */
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsyncstruct Storage
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync{
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool operator==(const Storage &s) const;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync StorageControllersList llStorageControllers;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync};
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync/**
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * Settings that has to do with debugging.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync */
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsyncstruct Debugging
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync{
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync Debugging()
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync : fTracingEnabled(false),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync fAllowTracingToAccessVM(false),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync strTracingConfig()
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync { }
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool operator==(const Debugging &rOther) const
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync {
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync return fTracingEnabled == rOther.fTracingEnabled
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && fAllowTracingToAccessVM == rOther.fAllowTracingToAccessVM
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && strTracingConfig == rOther.strTracingConfig;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync }
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool areDefaultSettings() const
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync {
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync return !fTracingEnabled
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && !fAllowTracingToAccessVM
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && strTracingConfig.isEmpty();
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync }
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fTracingEnabled;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fAllowTracingToAccessVM;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync com::Utf8Str strTracingConfig;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync};
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync/**
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * Settings that has to do with autostart.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync */
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsyncstruct Autostart
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync{
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync Autostart()
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync : fAutostartEnabled(false),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync uAutostartDelay(0),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync enmAutostopType(AutostopType_Disabled)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync { }
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool operator==(const Autostart &rOther) const
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync {
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync return fAutostartEnabled == rOther.fAutostartEnabled
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && uAutostartDelay == rOther.uAutostartDelay
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && enmAutostopType == rOther.enmAutostopType;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
819fb2627ce7d9246fcd2bfcf9d336b2175cab57vboxsync bool areDefaultSettings() const
819fb2627ce7d9246fcd2bfcf9d336b2175cab57vboxsync {
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return !fAutostartEnabled
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && !uAutostartDelay
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && enmAutostopType == AutostopType_Disabled;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync }
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool fAutostartEnabled;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uint32_t uAutostartDelay;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync AutostopType_T enmAutostopType;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct Snapshot;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<Snapshot> SnapshotsList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync/**
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync */
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsyncstruct Snapshot
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync{
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const Snapshot &s) const;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Guid uuid;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strName,
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync strDescription; // optional
77708d0cc3d81cb2007c13ed2ca5fb1b8379d0ddvboxsync RTTIMESPEC timestamp;
77708d0cc3d81cb2007c13ed2ca5fb1b8379d0ddvboxsync
77708d0cc3d81cb2007c13ed2ca5fb1b8379d0ddvboxsync com::Utf8Str strStateFile; // for online snapshots only
77708d0cc3d81cb2007c13ed2ca5fb1b8379d0ddvboxsync
77708d0cc3d81cb2007c13ed2ca5fb1b8379d0ddvboxsync Hardware hardware;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync Storage storage;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync Debugging debugging;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync Autostart autostart;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync SnapshotsList llChildSnapshots;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync};
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsync
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsyncstruct MachineUserData
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsync{
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync MachineUserData()
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync : fDirectoryIncludesUUID(false),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync fNameSync(true),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync fTeleporterEnabled(false),
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsync uTeleporterPort(0),
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsync enmFaultToleranceState(FaultToleranceState_Inactive),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uFaultTolerancePort(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync uFaultToleranceInterval(0),
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync fRTCUseUTC(false)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync {
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync llGroups.push_back("/");
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync }
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool operator==(const MachineUserData &c) const
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync {
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync return (strName == c.strName)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (fDirectoryIncludesUUID == c.fDirectoryIncludesUUID)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (fNameSync == c.fNameSync)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (strDescription == c.strDescription)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (llGroups == c.llGroups)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (strOsType == c.strOsType)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (strSnapshotFolder == c.strSnapshotFolder)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync && (fTeleporterEnabled == c.fTeleporterEnabled)
05e2d532b00db03e631595029308c4c621a11e43vboxsync && (uTeleporterPort == c.uTeleporterPort)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (strTeleporterAddress == c.strTeleporterAddress)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (strTeleporterPassword == c.strTeleporterPassword)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (enmFaultToleranceState == c.enmFaultToleranceState)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (uFaultTolerancePort == c.uFaultTolerancePort)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (uFaultToleranceInterval == c.uFaultToleranceInterval)
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync && (strFaultToleranceAddress == c.strFaultToleranceAddress)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (strFaultTolerancePassword == c.strFaultTolerancePassword)
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync && (fRTCUseUTC == c.fRTCUseUTC)
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync && (ovIcon == c.ovIcon);
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync }
4a90abf7472a436c6951fd92417018a6890a69a7vboxsync
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync com::Utf8Str strName;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fDirectoryIncludesUUID;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool fNameSync;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync com::Utf8Str strDescription;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync StringsList llGroups;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync com::Utf8Str strOsType;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync com::Utf8Str strSnapshotFolder;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync bool fTeleporterEnabled;
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync uint32_t uTeleporterPort;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync com::Utf8Str strTeleporterAddress;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync com::Utf8Str strTeleporterPassword;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync FaultToleranceState_T enmFaultToleranceState;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync uint32_t uFaultTolerancePort;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync com::Utf8Str strFaultToleranceAddress;
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync com::Utf8Str strFaultTolerancePassword;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync uint32_t uFaultToleranceInterval;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool fRTCUseUTC;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync com::Utf8Str ovIcon;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync};
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync/**
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * MachineConfigFile represents an XML machine configuration. All the machine settings
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * that go out to the XML (or are read from it) are in here.
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync *
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * the operator== which is used by Machine::saveSettings(), or otherwise your settings
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * might never get saved.
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync */
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsyncclass MachineConfigFile : public ConfigFileBase
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync{
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsyncpublic:
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync com::Guid uuid;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync MachineUserData machineUserData;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync com::Utf8Str strStateFile;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool fCurrentStateModified; // optional, default is true
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync RTTIMESPEC timeLastStateChange; // optional, defaults to now
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool fAborted; // optional, default is false
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync com::Guid uuidCurrentSnapshot;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync Hardware hardwareMachine;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync Storage storageMachine;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync MediaRegistry mediaRegistry;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync Debugging debugging;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync Autostart autostart;
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync StringsMap mapExtraDataItems;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync SnapshotsList llFirstSnapshot; // first snapshot or empty list if there's none
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync MachineConfigFile(const com::Utf8Str *pstrFilename);
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool operator==(const MachineConfigFile &m) const;
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool canHaveOwnMediaRegistry() const;
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void importMachineXML(const xml::ElementNode &elmMachine);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void write(const com::Utf8Str &strFilename);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync enum
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync {
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BuildMachineXML_IncludeSnapshots = 0x01,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BuildMachineXML_WriteVboxVersionAttribute = 0x02,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BuildMachineXML_SkipRemovableMedia = 0x04,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BuildMachineXML_MediaRegistry = 0x08,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BuildMachineXML_SuppressSavedState = 0x10
4a90abf7472a436c6951fd92417018a6890a69a7vboxsync };
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void buildMachineXML(xml::ElementNode &elmMachine,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t fl,
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync std::list<xml::ElementNode*> *pllElementsWithUuidAttributes);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync static bool isAudioDriverAllowedOnThisHost(AudioDriverType_T drv);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync static AudioDriverType_T getHostDefaultAudioDriver();
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsyncprivate:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readNetworkAdapters(const xml::ElementNode &elmHardware, NetworkAdaptersList &ll);
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void readAttachedNetworkMode(const xml::ElementNode &pelmMode, bool fEnabled, NetworkAdapter &nic);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readCpuIdTree(const xml::ElementNode &elmCpuid, CpuIdLeafsList &ll);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readCpuTree(const xml::ElementNode &elmCpu, CpuList &ll);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readSerialPorts(const xml::ElementNode &elmUART, SerialPortsList &ll);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readParallelPorts(const xml::ElementNode &elmLPT, ParallelPortsList &ll);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readAudioAdapter(const xml::ElementNode &elmAudioAdapter, AudioAdapter &aa);
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void readGuestProperties(const xml::ElementNode &elmGuestProperties, Hardware &hw);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readStorageControllerAttributes(const xml::ElementNode &elmStorageController, StorageController &sctl);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readHardware(const xml::ElementNode &elmHardware, Hardware &hw, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readHardDiskAttachments_pre1_7(const xml::ElementNode &elmHardDiskAttachments, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readStorageControllers(const xml::ElementNode &elmStorageControllers, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readDVDAndFloppies_pre1_9(const xml::ElementNode &elmHardware, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readTeleporter(const xml::ElementNode *pElmTeleporter, MachineUserData *pUserData);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readDebugging(const xml::ElementNode *pElmDbg, Debugging *pDbg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readAutostart(const xml::ElementNode *pElmAutostart, Autostart *pAutostart);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readGroups(const xml::ElementNode *elmGroups, StringsList *pllGroups);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readSnapshot(uint32_t depth, const xml::ElementNode &elmSnapshot, Snapshot &snap);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void convertOldOSType_pre1_5(com::Utf8Str &str);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readMachine(const xml::ElementNode &elmMachine);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildHardwareXML(xml::ElementNode &elmParent, const Hardware &hw, const Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildNetworkXML(NetworkAttachmentType_T mode, xml::ElementNode &elmParent, bool fEnabled, const NetworkAdapter &nic);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildStorageControllersXML(xml::ElementNode &elmParent,
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync const Storage &st,
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool fSkipRemovableMedia,
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync std::list<xml::ElementNode*> *pllElementsWithUuidAttributes);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildDebuggingXML(xml::ElementNode *pElmParent, const Debugging *pDbg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildAutostartXML(xml::ElementNode *pElmParent, const Autostart *pAutostart);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildGroupsXML(xml::ElementNode *pElmParent, const StringsList *pllGroups);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildSnapshotXML(uint32_t depth, xml::ElementNode &elmParent, const Snapshot &snap);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void bumpSettingsVersionIfNeeded();
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync};
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync} // namespace settings
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync#endif /* ___VBox_settings_h */
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync