settings.h revision f1301dd8b6870b5a25c7dbdd46e0a0671bb62031
d46ee884c41b808b239563b1978468aae12e33a2vboxsync/** @file
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * Settings file data structures.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync *
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * These structures are created by the settings file loader and filled with values
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * copied from the raw XML data. This was all new with VirtualBox 3.1 and allows us
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * to finally make the XML reader version-independent and read VirtualBox XML files
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * from earlier and even newer (future) versions without requiring complicated,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * tedious and error-prone XSLT conversions.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * It is this file that defines all structures that map VirtualBox global and
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * machine settings to XML files. These structures are used by the rest of Main,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * even though this header file does not require anything else in Main.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync *
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * Note: Headers in Main code have been tweaked to only declare the structures
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * defined here so that this header need only be included from code files that
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * actually use these structures.
d46ee884c41b808b239563b1978468aae12e33a2vboxsync */
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync/*
904810c4c6668233349b025cc58013cb7c11c701vboxsync * Copyright (C) 2007-2010 Oracle Corporation
d46ee884c41b808b239563b1978468aae12e33a2vboxsync *
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * available from http://www.virtualbox.org. This file is free software;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * you can redistribute it and/or modify it under the terms of the GNU
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * General Public License (GPL) as published by the Free Software
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * The contents of this file may alternatively be used under the terms
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * of the Common Development and Distribution License Version 1.0
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * VirtualBox OSE distribution, in which case the provisions of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * CDDL are applicable instead of those of the GPL.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * You may elect to license modified versions of this file under the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * terms and conditions of either the GPL or the CDDL or both.
d46ee884c41b808b239563b1978468aae12e33a2vboxsync */
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#ifndef ___VBox_settings_h
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#define ___VBox_settings_h
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#include <iprt/time.h>
3b70c9ab3cea93ab1a771d2db319311282041382vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include "VBox/com/VirtualBox.h"
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <VBox/com/Guid.h>
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <VBox/com/string.h>
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <list>
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <map>
2a229554eb081e98411c81dcdef146c35a000f80vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncnamespace xml
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync class ElementNode;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync}
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsyncnamespace settings
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncclass ConfigFileError;
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync// Helper classes
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync// ExtraDataItem (used by both VirtualBox.xml and machines XML)
d8523ff7d948462e328eec88b602effe2e7f7080vboxsynctypedef std::map<com::Utf8Str, com::Utf8Str> ExtraDataItemsMap;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsyncstruct USBDeviceFilter;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsynctypedef std::list<USBDeviceFilter> USBDeviceFiltersList;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync/**
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * Common base class for both MainConfigFile and MachineConfigFile
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * which contains some common logic for both.
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync */
d8523ff7d948462e328eec88b602effe2e7f7080vboxsyncclass ConfigFileBase
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync{
d8523ff7d948462e328eec88b602effe2e7f7080vboxsyncpublic:
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync bool fileExists();
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void copyBaseFrom(const ConfigFileBase &b);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsyncprotected:
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync ConfigFileBase(const com::Utf8Str *pstrFilename);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync ~ConfigFileBase();
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void parseUUID(com::Guid &guid,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync const com::Utf8Str &strUUID) const;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void parseTimestamp(RTTIMESPEC &timestamp,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync const com::Utf8Str &str) const;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync com::Utf8Str makeString(const RTTIMESPEC &tm);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void readExtraData(const xml::ElementNode &elmExtraData,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync ExtraDataItemsMap &map);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void readUSBDeviceFilters(const xml::ElementNode &elmDeviceFilters,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync USBDeviceFiltersList &ll);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
64836f6a22eea42b83b0ec64abcb3aa7ccc27f25vboxsync void setVersionAttribute(xml::ElementNode &elm);
01b2e367e947049139a5d5813ccc1fa162b11f76vboxsync void createStubDocument();
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void writeExtraData(xml::ElementNode &elmParent, const ExtraDataItemsMap &me);
71e8510a26b72d539cf6d7d7157bd87a53de8cf4vboxsync void writeUSBDeviceFilters(xml::ElementNode &elmParent,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync const USBDeviceFiltersList &ll,
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync bool fHostMode);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void clearDocument();
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync struct Data;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync Data *m;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsyncprivate:
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync // prohibit copying (Data contains pointers to XML which cannot be copied)
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync ConfigFileBase(const ConfigFileBase&);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync friend class ConfigFileError;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync};
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync////////////////////////////////////////////////////////////////////////////////
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync//
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync// Structures shared between Machine XML and VirtualBox.xml
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync//
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync////////////////////////////////////////////////////////////////////////////////
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync/**
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * USB device filter definition. This struct is used both in MainConfigFile
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * (for global USB filters) and MachineConfigFile (for machine filters).
64836f6a22eea42b83b0ec64abcb3aa7ccc27f25vboxsync *
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync * your settings might never get saved.
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync */
d8523ff7d948462e328eec88b602effe2e7f7080vboxsyncstruct USBDeviceFilter
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync{
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync USBDeviceFilter()
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync : fActive(false),
b099c6398b85f527d7343cb1da573e1e95f9fd10vboxsync action(USBDeviceFilterAction_Null),
b099c6398b85f527d7343cb1da573e1e95f9fd10vboxsync ulMaskedInterfaces(0)
b099c6398b85f527d7343cb1da573e1e95f9fd10vboxsync {}
b099c6398b85f527d7343cb1da573e1e95f9fd10vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync bool operator==(const USBDeviceFilter&u) const;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync com::Utf8Str strName;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync bool fActive;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync com::Utf8Str strVendorId,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strProductId,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strRevision,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strManufacturer,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strProduct,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strSerialNumber,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strPort;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync USBDeviceFilterAction_T action; // only used with host USB filters
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync com::Utf8Str strRemote; // irrelevant for host USB objects
c09430453634ebc72695a69d12366a8fb57132e3vboxsync uint32_t ulMaskedInterfaces; // irrelevant for host USB objects
71626c00d9eb0b73ed7254794a6dfb000f4bb65cvboxsync};
c09430453634ebc72695a69d12366a8fb57132e3vboxsync
c09430453634ebc72695a69d12366a8fb57132e3vboxsync////////////////////////////////////////////////////////////////////////////////
c09430453634ebc72695a69d12366a8fb57132e3vboxsync//
c09430453634ebc72695a69d12366a8fb57132e3vboxsync// VirtualBox.xml structures
c09430453634ebc72695a69d12366a8fb57132e3vboxsync//
c09430453634ebc72695a69d12366a8fb57132e3vboxsync////////////////////////////////////////////////////////////////////////////////
c09430453634ebc72695a69d12366a8fb57132e3vboxsync
c09430453634ebc72695a69d12366a8fb57132e3vboxsyncstruct Host
c09430453634ebc72695a69d12366a8fb57132e3vboxsync{
c09430453634ebc72695a69d12366a8fb57132e3vboxsync USBDeviceFiltersList llUSBDeviceFilters;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync};
c09430453634ebc72695a69d12366a8fb57132e3vboxsync
c09430453634ebc72695a69d12366a8fb57132e3vboxsyncstruct SystemProperties
c09430453634ebc72695a69d12366a8fb57132e3vboxsync{
c09430453634ebc72695a69d12366a8fb57132e3vboxsync SystemProperties()
c09430453634ebc72695a69d12366a8fb57132e3vboxsync : ulLogHistoryCount(3)
c09430453634ebc72695a69d12366a8fb57132e3vboxsync {}
c09430453634ebc72695a69d12366a8fb57132e3vboxsync
c09430453634ebc72695a69d12366a8fb57132e3vboxsync com::Utf8Str strDefaultMachineFolder;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync com::Utf8Str strDefaultHardDiskFolder;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync com::Utf8Str strDefaultHardDiskFormat;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync com::Utf8Str strRemoteDisplayAuthLibrary;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync com::Utf8Str strWebServiceAuthLibrary;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync uint32_t ulLogHistoryCount;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync};
c09430453634ebc72695a69d12366a8fb57132e3vboxsync
c09430453634ebc72695a69d12366a8fb57132e3vboxsynctypedef std::map<com::Utf8Str, com::Utf8Str> PropertiesMap;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct Medium;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<Medium> MediaList;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct Medium
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync{
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync com::Guid uuid;
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync com::Utf8Str strLocation;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDescription;
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync // the following are for hard disks only:
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync com::Utf8Str strFormat;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAutoReset; // optional, only for diffs, default is false
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync PropertiesMap properties;
1d9143584d5616e94efe0ff5ce57e04708529775vboxsync MediumType_T hdType;
1d9143584d5616e94efe0ff5ce57e04708529775vboxsync
1d9143584d5616e94efe0ff5ce57e04708529775vboxsync MediaList llChildren; // only used with hard disks
1d9143584d5616e94efe0ff5ce57e04708529775vboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
e33247bff4fddfdba92538374bcc9e2753044a38vboxsyncstruct MachineRegistryEntry
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strSettingsFile;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
e33247bff4fddfdba92538374bcc9e2753044a38vboxsynctypedef std::list<MachineRegistryEntry> MachinesRegistry;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
e33247bff4fddfdba92538374bcc9e2753044a38vboxsyncstruct DHCPServer
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
64836f6a22eea42b83b0ec64abcb3aa7ccc27f25vboxsync com::Utf8Str strNetworkName,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strIPAddress,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strIPNetworkMask,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strIPLower,
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync strIPUpper;
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync bool fEnabled;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync};
e33247bff4fddfdba92538374bcc9e2753044a38vboxsynctypedef std::list<DHCPServer> DHCPServersList;
ec037c82be3787508e228c537bd15ad9de28bac0vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncclass MainConfigFile : public ConfigFileBase
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
64836f6a22eea42b83b0ec64abcb3aa7ccc27f25vboxsyncpublic:
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync MainConfigFile(const com::Utf8Str *pstrFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync typedef enum {Error, HardDisk, DVDImage, FloppyImage} MediaType;
ee00a0b29854e7f513198772bccb6650f6dd2184vboxsync void readMedium(MediaType t, const xml::ElementNode &elmMedium, MediaList &llMedia);
ee00a0b29854e7f513198772bccb6650f6dd2184vboxsync void readMediaRegistry(const xml::ElementNode &elmMediaRegistry);
ee00a0b29854e7f513198772bccb6650f6dd2184vboxsync void readMachineRegistry(const xml::ElementNode &elmMachineRegistry);
ee00a0b29854e7f513198772bccb6650f6dd2184vboxsync void readDHCPServers(const xml::ElementNode &elmDHCPServers);
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync void writeHardDisk(xml::ElementNode &elmMedium,
c09430453634ebc72695a69d12366a8fb57132e3vboxsync const Medium &m,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t level);
d46ee884c41b808b239563b1978468aae12e33a2vboxsync void write(const com::Utf8Str strFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Host host;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync SystemProperties systemProperties;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync MediaList llHardDisks,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync llDvdImages,
d46ee884c41b808b239563b1978468aae12e33a2vboxsync llFloppyImages;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync MachinesRegistry llMachines;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync DHCPServersList llDhcpServers;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ExtraDataItemsMap mapExtraDataItems;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync};
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync////////////////////////////////////////////////////////////////////////////////
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync// Machine XML structures
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync/**
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * your settings might never get saved.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync */
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct VRDPSettings
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync VRDPSettings()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fEnabled(true),
3933885bc0c2c93436d858a14564c6179ec72872vboxsync authType(VRDPAuthType_Null),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulAuthTimeout(5000),
9ca017ceee656f9d33f2cb6652e401b5f17fcfb7vboxsync fAllowMultiConnection(false),
2a958663078b64bbcd23ff5ca77acbd42c541455vboxsync fReuseSingleConnection(false),
3a8a18c52fd339275dcd738e571005ab6f7432acvboxsync fVideoChannel(false),
904810c4c6668233349b025cc58013cb7c11c701vboxsync ulVideoChannelQuality(75)
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync bool operator==(const VRDPSettings& v) const;
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strPort;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strNetAddress;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync VRDPAuthType_T authType;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulAuthTimeout;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync bool fAllowMultiConnection,
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync fReuseSingleConnection,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fVideoChannel;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync uint32_t ulVideoChannelQuality;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync};
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync/**
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * your settings might never get saved.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync */
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct BIOSSettings
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BIOSSettings()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fACPIEnabled(true),
d46ee884c41b808b239563b1978468aae12e33a2vboxsync fIOAPICEnabled(false),
c09430453634ebc72695a69d12366a8fb57132e3vboxsync fLogoFadeIn(true),
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync fLogoFadeOut(true),
71626c00d9eb0b73ed7254794a6dfb000f4bb65cvboxsync ulLogoDisplayTime(0),
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync biosBootMenuMode(BIOSBootMenuMode_MessageAndMenu),
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync fPXEDebugEnabled(false),
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync llTimeOffset(0)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync {}
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync bool operator==(const BIOSSettings &d) const;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync bool fACPIEnabled,
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync fIOAPICEnabled,
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync fLogoFadeIn,
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync fLogoFadeOut;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync uint32_t ulLogoDisplayTime;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync com::Utf8Str strLogoImagePath;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync BIOSBootMenuMode_T biosBootMenuMode;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync bool fPXEDebugEnabled;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync int64_t llTimeOffset;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync};
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/**
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
71626c00d9eb0b73ed7254794a6dfb000f4bb65cvboxsync * your settings might never get saved.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsyncstruct USBController
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync{
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync USBController()
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync : fEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fEnabledEHCI(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const USBController &u) const;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
c09430453634ebc72695a69d12366a8fb57132e3vboxsync bool fEnabledEHCI;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBDeviceFiltersList llDeviceFilters;
6c2e2f2be39d679eb8e2e371afd146099f8dc5e7vboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync struct NATRule
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {
d8523ff7d948462e328eec88b602effe2e7f7080vboxsync NATRule(): u32Proto(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync u16HostPort(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync u16GuestPort(0){}
c09430453634ebc72695a69d12366a8fb57132e3vboxsync com::Utf8Str strName;
64836f6a22eea42b83b0ec64abcb3aa7ccc27f25vboxsync uint32_t u32Proto;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint16_t u16HostPort;
5ff3fa0492332325f57e80636321619e2224027evboxsync com::Utf8Str strHostIP;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint16_t u16GuestPort;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strGuestIP;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const NATRule &r) const
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync return strName == r.strName
5ff3fa0492332325f57e80636321619e2224027evboxsync && u32Proto == r.u32Proto
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && u16HostPort == r.u16HostPort
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && strHostIP == r.strHostIP
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && u16GuestPort == r.u16GuestPort
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && strGuestIP == r.strGuestIP;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync }
3933885bc0c2c93436d858a14564c6179ec72872vboxsync };
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync typedef std::list<NATRule> NATRuleList;
3933885bc0c2c93436d858a14564c6179ec72872vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync struct NAT
3933885bc0c2c93436d858a14564c6179ec72872vboxsync {
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NAT() : u32Mtu(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync u32SockRcv(0),
060f7ec6ae5c99df18341ef2e1f3e91f4b0c89f1vboxsync u32SockSnd(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync u32TcpRcv(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync u32TcpSnd(0),
3933885bc0c2c93436d858a14564c6179ec72872vboxsync fDnsPassDomain(true), /* historically this value is true */
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fDnsProxy(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fDnsUseHostResolver(false),
3933885bc0c2c93436d858a14564c6179ec72872vboxsync fAliasLog(false),
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync fAliasProxyOnly(false),
6e25221ce8ef8e656d1e15eb7ec5cf8ae758ceb2vboxsync fAliasUseSamePorts(false) {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strNetwork;
060f7ec6ae5c99df18341ef2e1f3e91f4b0c89f1vboxsync com::Utf8Str strBindIP;
9ca017ceee656f9d33f2cb6652e401b5f17fcfb7vboxsync uint32_t u32Mtu;
fc60d7c6501c5e676e41b11c042d4358d9faa81dvboxsync uint32_t u32SockRcv;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t u32SockSnd;
5ff3fa0492332325f57e80636321619e2224027evboxsync uint32_t u32TcpRcv;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t u32TcpSnd;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync com::Utf8Str strTftpPrefix;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync com::Utf8Str strTftpBootFile;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync com::Utf8Str strTftpNextServer;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool fDnsPassDomain;
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync bool fDnsProxy;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fDnsUseHostResolver;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAliasLog;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAliasProxyOnly;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAliasUseSamePorts;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NATRuleList llRules;
a12929133f77ffa755a13a7d5d2ff3d87c41c9c5vboxsync bool operator==(const NAT &n) const
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync return strNetwork == n.strNetwork
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && strBindIP == n.strBindIP
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && u32Mtu == n.u32Mtu
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && u32SockRcv == n.u32SockRcv
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && u32SockSnd == n.u32SockSnd
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && u32TcpSnd == n.u32TcpSnd
52262a1f2eed7acaf08d8a169159e8201c9da661vboxsync && u32TcpRcv == n.u32TcpRcv
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && strTftpPrefix == n.strTftpPrefix
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && strTftpBootFile == n.strTftpBootFile
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && strTftpNextServer == n.strTftpNextServer
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && fDnsPassDomain == n.fDnsPassDomain
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync && fDnsProxy == n.fDnsProxy
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && fDnsUseHostResolver == n.fDnsUseHostResolver
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && fAliasLog == n.fAliasLog
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && fAliasProxyOnly == n.fAliasProxyOnly
10153a147e7cb38821b5e7404bd2ef6b9af5be4avboxsync && fAliasUseSamePorts == n.fAliasUseSamePorts
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && llRules == n.llRules;
5ff3fa0492332325f57e80636321619e2224027evboxsync }
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync };
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync */
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct NetworkAdapter
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NetworkAdapter()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : ulSlot(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync type(NetworkAdapterType_Am79C970A),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fEnabled(false),
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fCableConnected(false),
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ulLineSpeed(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fTraceEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync mode(NetworkAttachmentType_Null),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulBootPriority(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fHasDisabledNAT(false)
5ff3fa0492332325f57e80636321619e2224027evboxsync {}
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync bool operator==(const NetworkAdapter &n) const;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync uint32_t ulSlot;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync NetworkAdapterType_T type;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync bool fEnabled;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync com::Utf8Str strMACAddress;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync bool fCableConnected;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync uint32_t ulLineSpeed;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync bool fTraceEnabled;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync com::Utf8Str strTraceFile;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync NetworkAttachmentType_T mode;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync NAT nat;
5d02e7a489b8a8a87f2ab2a3f866ba88794a45a9vboxsync com::Utf8Str strName; // NAT has own attribute
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync // with bridged: host interface or empty;
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync // otherwise: network name (required)
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync uint32_t ulBootPriority;
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync bool fHasDisabledNAT;
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync};
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsynctypedef std::list<NetworkAdapter> NetworkAdaptersList;
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync/**
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * your settings might never get saved.
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync */
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsyncstruct SerialPort
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync{
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync SerialPort()
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync : ulSlot(0),
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync fEnabled(false),
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync ulIOBase(0x3f8),
85d78ebc068381ca25c84242e38ec4b2be4843a5vboxsync ulIRQ(4),
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync portMode(PortMode_Disconnected),
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync fServer(false)
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync {}
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync bool operator==(const SerialPort &n) const;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync uint32_t ulSlot;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync bool fEnabled;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync uint32_t ulIOBase;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync uint32_t ulIRQ;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync PortMode_T portMode;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync com::Utf8Str strPath;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync bool fServer;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync};
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsynctypedef std::list<SerialPort> SerialPortsList;
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync/**
6063286f0f0d78e627c9ef48073f5753da93ba10vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
cebc93936b5bb4d867e1c086dd1b206db33c31dcvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
c09430453634ebc72695a69d12366a8fb57132e3vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsyncstruct ParallelPort
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync{
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ParallelPort()
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync : ulSlot(0),
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync fEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulIOBase(0x378),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulIRQ(4)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const ParallelPort &d) const;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulSlot;
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
f62342e2cc901a67e27fa69c0e712ee35e9c4c68vboxsync uint32_t ulIOBase;
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync uint32_t ulIRQ;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strPath;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsynctypedef std::list<ParallelPort> ParallelPortsList;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync/**
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync * your settings might never get saved.
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync */
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsyncstruct AudioAdapter
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync{
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync AudioAdapter()
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync : fEnabled(true),
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync controllerType(AudioControllerType_AC97),
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync driverType(AudioDriverType_Null)
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync {}
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync bool operator==(const AudioAdapter &a) const
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync {
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync return (this == &a)
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync || ( (fEnabled == a.fEnabled)
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync && (controllerType == a.controllerType)
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync && (driverType == a.driverType)
13d1fd6f43e9a245a4f2b4fc6845bdaa5d0f4134vboxsync );
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync }
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync bool fEnabled;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync AudioControllerType_T controllerType;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync AudioDriverType_T driverType;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync};
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * your settings might never get saved.
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync */
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsyncstruct SharedFolder
cbc68a61f0aa44b3f2b8a24217de2091c3ca2258vboxsync{
cbc68a61f0aa44b3f2b8a24217de2091c3ca2258vboxsync SharedFolder()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fWritable(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync , fAutoMount(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const SharedFolder &a) const;
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strHostPath;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fWritable;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync bool fAutoMount;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<SharedFolder> SharedFoldersList;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync/**
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsyncstruct GuestProperty
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync{
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync GuestProperty()
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync : timestamp(0)
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync {};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const GuestProperty &g) const;
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync com::Utf8Str strName,
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync strValue;
bab7647a6ae94ca5137439a3ae6b9cbf1e1968eavboxsync uint64_t timestamp;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strFlags;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsynctypedef std::list<GuestProperty> GuestPropertiesList;
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::map<uint32_t, DeviceType_T> BootOrderMap;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync/**
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * your settings might never get saved.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync */
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct CpuIdLeaf
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync CpuIdLeaf()
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync : ulId(UINT32_MAX),
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ulEax(0),
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ulEbx(0),
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ulEcx(0),
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync ulEdx(0)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const CpuIdLeaf &c) const
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync return ( (this == &c)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync || ( (ulId == c.ulId)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && (ulEax == c.ulEax)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEbx == c.ulEbx)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEcx == c.ulEcx)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEdx == c.ulEdx)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync )
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync );
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync }
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t ulId;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t ulEax;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulEbx;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulEcx;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulEdx;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsynctypedef std::list<CpuIdLeaf> CpuIdLeafsList;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync */
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct Cpu
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Cpu()
f1301dd8b6870b5a25c7dbdd46e0a0671bb62031vboxsync : ulId(UINT32_MAX)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const Cpu &c) const
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync {
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync return (ulId == c.ulId);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync }
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
f1301dd8b6870b5a25c7dbdd46e0a0671bb62031vboxsync uint32_t ulId;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<Cpu> CpuList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct IoSettings
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync IoSettings();
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const IoSettings &i) const
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync return ( (fIoCacheEnabled == i.fIoCacheEnabled)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulIoCacheSize == i.ulIoCacheSize)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync && (ulIoBandwidthMax == i.ulIoBandwidthMax));
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync }
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fIoCacheEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulIoCacheSize;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulIoBandwidthMax;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * Representation of Machine hardware; this is used in the MachineConfigFile.hardwareMachine
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * field.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync * your settings might never get saved.
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync */
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsyncstruct Hardware
1ea22ca610c19eb455275a4398575b6291c27629vboxsync{
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync Hardware();
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync bool operator==(const Hardware&) const;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync com::Utf8Str strVersion; // hardware version, optional
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync com::Guid uuid; // hardware uuid, optional (null).
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool fHardwareVirt,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fHardwareVirtExclusive,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fNestedPaging,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fLargePages,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fVPID,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fSyntheticCpu,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fPAE;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t cCPUs;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool fCpuHotPlug; // requires settings version 1.10 (VirtualBox 3.2)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync CpuList llCpus; // requires settings version 1.10 (VirtualBox 3.2)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool fHpetEnabled; // requires settings version 1.10 (VirtualBox 3.2)
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync CpuIdLeafsList llCpuIdLeafs;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulMemorySizeMB;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync BootOrderMap mapBootOrder; // item 0 has highest priority
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulVRAMSizeMB;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t cMonitors;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool fAccelerate3D,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync fAccelerate2DVideo; // requires settings version 1.8 (VirtualBox 3.1)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync FirmwareType_T firmwareType; // requires settings version 1.9 (VirtualBox 3.1)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync PointingHidType_T pointingHidType; // requires settings version 1.10 (VirtualBox 3.2)
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync KeyboardHidType_T keyboardHidType; // requires settings version 1.10 (VirtualBox 3.2)
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync VRDPSettings vrdpSettings;
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync BIOSSettings biosSettings;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync USBController usbController;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync NetworkAdaptersList llNetworkAdapters;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync SerialPortsList llSerialPorts;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync ParallelPortsList llParallelPorts;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync AudioAdapter audioAdapter;
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync // technically these two have no business in the hardware section, but for some
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync // clever reason <Hardware> is where they are in the XML....
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync SharedFoldersList llSharedFolders;
63b785c3291332a86a9bc473e68f08121368898bvboxsync ClipboardMode_T clipboardMode;
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync uint32_t ulMemoryBalloonSize;
63b785c3291332a86a9bc473e68f08121368898bvboxsync bool fPageFusionEnabled;
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync GuestPropertiesList llGuestProperties;
63b785c3291332a86a9bc473e68f08121368898bvboxsync com::Utf8Str strNotificationPatterns;
63b785c3291332a86a9bc473e68f08121368898bvboxsync
af7209255033c3b77816f81ef6293ff8070ee156vboxsync IoSettings ioSettings; // requires settings version 1.10 (VirtualBox 3.2)
63b785c3291332a86a9bc473e68f08121368898bvboxsync};
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync/**
63b785c3291332a86a9bc473e68f08121368898bvboxsync * A device attached to a storage controller. This can either be a
63b785c3291332a86a9bc473e68f08121368898bvboxsync * hard disk or a DVD drive or a floppy drive and also specifies
63b785c3291332a86a9bc473e68f08121368898bvboxsync * which medium is "in" the drive; as a result, this is a combination
af7209255033c3b77816f81ef6293ff8070ee156vboxsync * of the Main IMedium and IMediumAttachment interfaces.
63b785c3291332a86a9bc473e68f08121368898bvboxsync *
63b785c3291332a86a9bc473e68f08121368898bvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
63b785c3291332a86a9bc473e68f08121368898bvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
63b785c3291332a86a9bc473e68f08121368898bvboxsync * your settings might never get saved.
af7209255033c3b77816f81ef6293ff8070ee156vboxsync */
63b785c3291332a86a9bc473e68f08121368898bvboxsyncstruct AttachedDevice
63b785c3291332a86a9bc473e68f08121368898bvboxsync{
63b785c3291332a86a9bc473e68f08121368898bvboxsync AttachedDevice()
63b785c3291332a86a9bc473e68f08121368898bvboxsync : deviceType(DeviceType_Null),
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync fPassThrough(false),
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync lPort(0),
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync lDevice(0)
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync {}
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync bool operator==(const AttachedDevice &a) const;
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync DeviceType_T deviceType; // only HardDisk, DVD or Floppy are allowed
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync // DVDs can be in pass-through mode:
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync bool fPassThrough;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync int32_t lPort;
63b785c3291332a86a9bc473e68f08121368898bvboxsync int32_t lDevice;
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync // if an image file is attached to the device (ISO, RAW, or hard disk image such as VDI),
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync // this is its UUID; it depends on deviceType which media registry this then needs to
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync // be looked up in. If no image file (only permitted for DVDs and floppies), then the UUID is NULL
63b785c3291332a86a9bc473e68f08121368898bvboxsync com::Guid uuid;
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync // for DVDs and floppies, the attachment can also be a host device:
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync com::Utf8Str strHostDriveSrc; // if != NULL, value of <HostDrive>/@src
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync};
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsynctypedef std::list<AttachedDevice> AttachedDevicesList;
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync/**
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * your settings might never get saved.
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync */
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsyncstruct StorageController
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync{
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync StorageController()
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync : storageBus(StorageBus_IDE),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync controllerType(StorageControllerType_PIIX3),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync ulPortCount(2),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync ulInstance(0),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync fUseHostIOCache(true),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync lIDE0MasterEmulationPort(0),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync lIDE0SlaveEmulationPort(0),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync lIDE1MasterEmulationPort(0),
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync lIDE1SlaveEmulationPort(0)
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync {}
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync bool operator==(const StorageController &s) const;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync
342d1c2e846281e0bcbde2e97218273216b3fb32vboxsync com::Utf8Str strName;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync StorageBus_T storageBus; // _SATA, _SCSI, _IDE, _SAS
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync StorageControllerType_T controllerType;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t ulPortCount;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t ulInstance;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool fUseHostIOCache;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync // only for when controllerType == StorageControllerType_IntelAhci:
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync int32_t lIDE0MasterEmulationPort,
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync lIDE0SlaveEmulationPort,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lIDE1MasterEmulationPort,
606bf1f8cb2c02eb19f231f75e56417f0439951fvboxsync lIDE1SlaveEmulationPort;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync AttachedDevicesList llAttachedDevices;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<StorageController> StorageControllersList;
ad9e5a61fea617d40d07390ff1737277d6aef869vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync/**
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * We wrap the storage controllers list into an extra struct so we can
2c744347b35ec425c206a25ca4095d30a12474d9vboxsync * use an undefined struct without needing std::list<> in all the headers.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync *
c33fc49611f2444dade533488bf431e29eb88bcdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1bf151411167b02ebdc6d6a18de8b97030341e1fvboxsync * your settings might never get saved.
0f8a368b17f9c3e1ef58be06f4bf290d4bb0a729vboxsync */
7119861e2c17e0a4e0638b06a544cc571cf6804avboxsyncstruct Storage
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
3455d9b135d41903504b9be3f4eeaa038f6ee03avboxsync bool operator==(const Storage &s) const;
3455d9b135d41903504b9be3f4eeaa038f6ee03avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync StorageControllersList llStorageControllers;
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync};
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsyncstruct Snapshot;
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsynctypedef std::list<Snapshot> SnapshotsList;
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync/**
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * your settings might never get saved.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync */
d46ee884c41b808b239563b1978468aae12e33a2vboxsyncstruct Snapshot
9f237121ca0294533c66fea7e095a597b9e373cfvboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool operator==(const Snapshot &s) const;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName,
5d57bcb78f1f3f918bd3daf709b551b8c2d30485vboxsync strDescription; // optional
5d57bcb78f1f3f918bd3daf709b551b8c2d30485vboxsync RTTIMESPEC timestamp;
5d57bcb78f1f3f918bd3daf709b551b8c2d30485vboxsync
5d57bcb78f1f3f918bd3daf709b551b8c2d30485vboxsync com::Utf8Str strStateFile; // for online snapshots only
cccc6ee5f7156cfcdf13acca545cf65124d9ed44vboxsync
5d57bcb78f1f3f918bd3daf709b551b8c2d30485vboxsync Hardware hardware;
48890ac9b4b339e0341e826b5c26ce6408729987vboxsync Storage storage;
5d57bcb78f1f3f918bd3daf709b551b8c2d30485vboxsync
48890ac9b4b339e0341e826b5c26ce6408729987vboxsync SnapshotsList llChildSnapshots;
b35e3948f1287430503b6b432945b8cf4bfd3a23vboxsync};
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync/**
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync * MachineConfigFile represents an XML machine configuration. All the machine settings
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * that go out to the XML (or are read from it) are in here.
d70f332ce412cf75187ceda26709e58e4edc69ecvboxsync *
d70f332ce412cf75187ceda26709e58e4edc69ecvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
62ab017295981c81484e5a5f93ff8b5f85f7defbvboxsync * the operator== which is used by Machine::saveSettings(), or otherwise your settings
7708252d252a55417a6a817041e4356797e34255vboxsync * might never get saved.
7708252d252a55417a6a817041e4356797e34255vboxsync */
3933885bc0c2c93436d858a14564c6179ec72872vboxsyncclass MachineConfigFile : public ConfigFileBase
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncpublic:
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fNameSync;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDescription;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strOsType;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync com::Utf8Str strStateFile;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuidCurrentSnapshot;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strSnapshotFolder;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fTeleporterEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t uTeleporterPort;
2a171646d32f8a15e9820d6fb3bf3f9b9990ca3fvboxsync com::Utf8Str strTeleporterAddress;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync com::Utf8Str strTeleporterPassword;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fRTCUseUTC;
60be873116377f59c5b5380ecfe531760eb3308cvboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync bool fCurrentStateModified; // optional, default is true
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync RTTIMESPEC timeLastStateChange; // optional, defaults to now
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAborted; // optional, default is false
2dad255b092a5659ea0274b9385e2019ad040ea7vboxsync
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync Hardware hardwareMachine;
1cd59fdf671ca60c64d77e3f7046aaecf7003824vboxsync Storage storageMachine;
904810c4c6668233349b025cc58013cb7c11c701vboxsync
904810c4c6668233349b025cc58013cb7c11c701vboxsync ExtraDataItemsMap mapExtraDataItems;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync SnapshotsList llFirstSnapshot; // first snapshot or empty list if there's none
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync MachineConfigFile(const com::Utf8Str *pstrFilename);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync bool operator==(const MachineConfigFile &m) const;
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync void importMachineXML(const xml::ElementNode &elmMachine);
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync void write(const com::Utf8Str &strFilename);
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync enum
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsync {
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BuildMachineXML_IncludeSnapshots = 0x01,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BuildMachineXML_WriteVboxVersionAttribute = 0x02,
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync BuildMachineXML_SkipRemovableMedia = 0x02
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync };
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync void buildMachineXML(xml::ElementNode &elmMachine,
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync uint32_t fl,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync std::list<xml::ElementNode*> *pllElementsWithUuidAttributes);
63b785c3291332a86a9bc473e68f08121368898bvboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync static bool isAudioDriverAllowedOnThisHost(AudioDriverType_T drv);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync static AudioDriverType_T getHostDefaultAudioDriver();
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsyncprivate:
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void readNetworkAdapters(const xml::ElementNode &elmHardware, NetworkAdaptersList &ll);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void readAttachedNetworkMode(const xml::ElementNode &pelmMode, bool fEnabled, NetworkAdapter &nic);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void readCpuIdTree(const xml::ElementNode &elmCpuid, CpuIdLeafsList &ll);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void readCpuTree(const xml::ElementNode &elmCpu, CpuList &ll);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void readSerialPorts(const xml::ElementNode &elmUART, SerialPortsList &ll);
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync void readParallelPorts(const xml::ElementNode &elmLPT, ParallelPortsList &ll);
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync void readAudioAdapter(const xml::ElementNode &elmAudioAdapter, AudioAdapter &aa);
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync void readGuestProperties(const xml::ElementNode &elmGuestProperties, Hardware &hw);
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync void readStorageControllerAttributes(const xml::ElementNode &elmStorageController, StorageController &sctl);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync void readHardware(const xml::ElementNode &elmHardware, Hardware &hw, Storage &strg);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync void readHardDiskAttachments_pre1_7(const xml::ElementNode &elmHardDiskAttachments, Storage &strg);
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync void readStorageControllers(const xml::ElementNode &elmStorageControllers, Storage &strg);
f82834355e5789e35df7c244b68109be1ca6a358vboxsync void readDVDAndFloppies_pre1_9(const xml::ElementNode &elmHardware, Storage &strg);
f82834355e5789e35df7c244b68109be1ca6a358vboxsync void readSnapshot(const xml::ElementNode &elmSnapshot, Snapshot &snap);
f82834355e5789e35df7c244b68109be1ca6a358vboxsync void convertOldOSType_pre1_5(com::Utf8Str &str);
10153a147e7cb38821b5e7404bd2ef6b9af5be4avboxsync void readMachine(const xml::ElementNode &elmMachine);
10153a147e7cb38821b5e7404bd2ef6b9af5be4avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void buildHardwareXML(xml::ElementNode &elmParent, const Hardware &hw, const Storage &strg);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void buildNetworkXML(NetworkAttachmentType_T mode, xml::ElementNode &elmParent, const NetworkAdapter &nic);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void buildStorageControllersXML(xml::ElementNode &elmParent,
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync const Storage &st,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fSkipRemovableMedia,
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync std::list<xml::ElementNode*> *pllElementsWithUuidAttributes);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void buildSnapshotXML(xml::ElementNode &elmParent, const Snapshot &snap);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync void bumpSettingsVersionIfNeeded();
63b785c3291332a86a9bc473e68f08121368898bvboxsync};
63b785c3291332a86a9bc473e68f08121368898bvboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync} // namespace settings
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync#endif /* ___VBox_settings_h */
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync