Changeset 37200 in vbox for trunk/src/VBox/Main/xml
- Timestamp:
- May 24, 2011 3:34:06 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 71896
- Location:
- trunk/src/VBox/Main/xml
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/xml/Settings.cpp
r36527 r37200 1480 1480 && (mode == n.mode) 1481 1481 && (nat == n.nat) 1482 && (strName == n.strName) 1482 && (strBridgedName == n.strBridgedName) 1483 && (strHostOnlyName == n.strHostOnlyName) 1484 && (strInternalNetworkName == n.strInternalNetworkName) 1485 && (strGenericDriver == n.strGenericDriver) 1486 && (genericProperties == n.genericProperties) 1483 1487 && (ulBootPriority == n.ulBootPriority) 1484 && (fHasDisabledNAT == n.fHasDisabledNAT)1485 1488 ) 1486 1489 ); … … 1997 2000 void MachineConfigFile::readAttachedNetworkMode(const xml::ElementNode &elmMode, bool fEnabled, NetworkAdapter &nic) 1998 2001 { 2002 NetworkAttachmentType_T enmAttachmentType = NetworkAttachmentType_Null; 2003 1999 2004 if (elmMode.nameEquals("NAT")) 2000 2005 { 2001 if (fEnabled) 2002 nic.mode = NetworkAttachmentType_NAT; 2003 2004 nic.fHasDisabledNAT = (nic.mode != NetworkAttachmentType_NAT && !fEnabled); 2005 elmMode.getAttributeValue("network", nic.nat.strNetwork); // optional network name 2006 enmAttachmentType = NetworkAttachmentType_NAT; 2007 2006 2008 elmMode.getAttributeValue("hostip", nic.nat.strBindIP); 2007 2009 elmMode.getAttributeValue("mtu", nic.nat.u32Mtu); … … 2048 2050 } 2049 2051 } 2050 else if ( fEnabled 2051 && ( (elmMode.nameEquals("HostInterface")) 2052 || (elmMode.nameEquals("BridgedInterface"))) 2053 ) 2054 { 2055 nic.mode = NetworkAttachmentType_Bridged; 2056 elmMode.getAttributeValue("name", nic.strName); // optional host interface name 2057 } 2058 else if ( fEnabled 2059 && elmMode.nameEquals("InternalNetwork")) 2060 { 2061 nic.mode = NetworkAttachmentType_Internal; 2062 if (!elmMode.getAttributeValue("name", nic.strName)) // required network name 2052 else if ( (elmMode.nameEquals("HostInterface")) 2053 || (elmMode.nameEquals("BridgedInterface"))) 2054 { 2055 enmAttachmentType = NetworkAttachmentType_Bridged; 2056 2057 elmMode.getAttributeValue("name", nic.strBridgedName); // optional bridged interface name 2058 } 2059 else if (elmMode.nameEquals("InternalNetwork")) 2060 { 2061 enmAttachmentType = NetworkAttachmentType_Internal; 2062 2063 if (!elmMode.getAttributeValue("name", nic.strInternalNetworkName)) // required network name 2063 2064 throw ConfigFileError(this, &elmMode, N_("Required InternalNetwork/@name element is missing")); 2064 2065 } 2065 else if ( fEnabled2066 && elmMode.nameEquals("HostOnlyInterface"))2067 {2068 nic.mode = NetworkAttachmentType_HostOnly; 2069 if (!elmMode.getAttributeValue("name", nic.str Name)) // required network name2066 else if (elmMode.nameEquals("HostOnlyInterface")) 2067 { 2068 enmAttachmentType = NetworkAttachmentType_HostOnly; 2069 2070 if (!elmMode.getAttributeValue("name", nic.strHostOnlyName)) // required network name 2070 2071 throw ConfigFileError(this, &elmMode, N_("Required HostOnlyInterface/@name element is missing")); 2071 2072 } 2072 #if defined(VBOX_WITH_VDE) 2073 else if ( fEnabled 2074 && elmMode.nameEquals("VDE")) 2075 { 2076 nic.mode = NetworkAttachmentType_VDE; 2077 elmMode.getAttributeValue("network", nic.strName); // optional network name 2078 } 2079 #endif 2073 else if (elmMode.nameEquals("GenericInterface")) 2074 { 2075 enmAttachmentType = NetworkAttachmentType_Generic; 2076 2077 elmMode.getAttributeValue("driver", nic.strGenericDriver); // optional network attachment driver 2078 2079 // get all properties 2080 xml::NodesLoop nl(elmMode); 2081 const xml::ElementNode *pelmModeChild; 2082 while ((pelmModeChild = nl.forAllNodes())) 2083 { 2084 if (pelmModeChild->nameEquals("Property")) 2085 { 2086 Utf8Str strPropName, strPropValue; 2087 if ( (pelmModeChild->getAttributeValue("name", strPropName)) 2088 && (pelmModeChild->getAttributeValue("value", strPropValue)) 2089 ) 2090 nic.genericProperties[strPropName] = strPropValue; 2091 else 2092 throw ConfigFileError(this, pelmModeChild, N_("Required GenericInterface/Property/@name or @value attribute is missing")); 2093 } 2094 } 2095 } 2096 else if (elmMode.nameEquals("VDE")) 2097 { 2098 enmAttachmentType = NetworkAttachmentType_Generic; 2099 2100 com::Utf8Str strVDEName; 2101 elmMode.getAttributeValue("network", strVDEName); // optional network name 2102 nic.strGenericDriver = "VDE"; 2103 nic.genericProperties["network"] = strVDEName; 2104 } 2105 2106 if (fEnabled && enmAttachmentType != NetworkAttachmentType_Null) 2107 nic.mode = enmAttachmentType; 2080 2108 } 2081 2109 … … 3747 3775 3748 3776 case NetworkAttachmentType_Bridged: 3749 pelmAdapter->createChild("BridgedInterface")->setAttribute("name", nic.str Name);3777 pelmAdapter->createChild("BridgedInterface")->setAttribute("name", nic.strBridgedName); 3750 3778 break; 3751 3779 3752 3780 case NetworkAttachmentType_Internal: 3753 pelmAdapter->createChild("InternalNetwork")->setAttribute("name", nic.str Name);3781 pelmAdapter->createChild("InternalNetwork")->setAttribute("name", nic.strInternalNetworkName); 3754 3782 break; 3755 3783 3756 3784 case NetworkAttachmentType_HostOnly: 3757 pelmAdapter->createChild("HostOnlyInterface")->setAttribute("name", nic.str Name);3785 pelmAdapter->createChild("HostOnlyInterface")->setAttribute("name", nic.strHostOnlyName); 3758 3786 break; 3759 3760 #if defined(VBOX_WITH_VDE)3761 case NetworkAttachmentType_VDE:3762 pelmAdapter->createChild("VDE")->setAttribute("network", nic.strName);3763 break;3764 #endif3765 3787 3766 3788 default: /*case NetworkAttachmentType_Null:*/ … … 3771 3793 { 3772 3794 /* m->sv >= SettingsVersion_v1_10 */ 3773 xml::ElementNode *pelmDisabledNode= NULL; 3774 if (nic.fHasDisabledNAT) 3775 pelmDisabledNode = pelmAdapter->createChild("DisabledModes"); 3776 if (nic.fHasDisabledNAT) 3777 buildNetworkXML(NetworkAttachmentType_NAT, *pelmDisabledNode, nic); 3778 buildNetworkXML(nic.mode, *pelmAdapter, nic); 3795 xml::ElementNode *pelmDisabledNode = NULL; 3796 pelmDisabledNode = pelmAdapter->createChild("DisabledModes"); 3797 if (nic.mode != NetworkAttachmentType_NAT) 3798 buildNetworkXML(NetworkAttachmentType_NAT, *pelmDisabledNode, false, nic); 3799 if (nic.mode != NetworkAttachmentType_Bridged) 3800 buildNetworkXML(NetworkAttachmentType_Bridged, *pelmDisabledNode, false, nic); 3801 if (nic.mode != NetworkAttachmentType_Internal) 3802 buildNetworkXML(NetworkAttachmentType_HostOnly, *pelmDisabledNode, false, nic); 3803 if (nic.mode != NetworkAttachmentType_HostOnly) 3804 buildNetworkXML(NetworkAttachmentType_HostOnly, *pelmDisabledNode, false, nic); 3805 if (nic.mode != NetworkAttachmentType_Generic) 3806 buildNetworkXML(NetworkAttachmentType_Generic, *pelmDisabledNode, false, nic); 3807 buildNetworkXML(nic.mode, *pelmAdapter, true, nic); 3779 3808 } 3780 3809 } … … 3972 4001 * @param mode 3973 4002 * @param elmParent 3974 * @param nice 4003 * @param fEnabled 4004 * @param nic 3975 4005 */ 3976 4006 void MachineConfigFile::buildNetworkXML(NetworkAttachmentType_T mode, 3977 4007 xml::ElementNode &elmParent, 4008 bool fEnabled, 3978 4009 const NetworkAdapter &nic) 3979 4010 { … … 4043 4074 4044 4075 case NetworkAttachmentType_Bridged: 4045 elmParent.createChild("BridgedInterface")->setAttribute("name", nic.strName); 4076 if (fEnabled || !nic.strBridgedName.isEmpty()) 4077 elmParent.createChild("BridgedInterface")->setAttribute("name", nic.strBridgedName); 4046 4078 break; 4047 4079 4048 4080 case NetworkAttachmentType_Internal: 4049 elmParent.createChild("InternalNetwork")->setAttribute("name", nic.strName); 4081 if (fEnabled || !nic.strInternalNetworkName.isEmpty()) 4082 elmParent.createChild("InternalNetwork")->setAttribute("name", nic.strInternalNetworkName); 4050 4083 break; 4051 4084 4052 4085 case NetworkAttachmentType_HostOnly: 4053 elmParent.createChild("HostOnlyInterface")->setAttribute("name", nic.strName); 4086 if (fEnabled || !nic.strHostOnlyName.isEmpty()) 4087 elmParent.createChild("HostOnlyInterface")->setAttribute("name", nic.strHostOnlyName); 4054 4088 break; 4055 4089 4056 #ifdef VBOX_WITH_VDE 4057 case NetworkAttachmentType_VDE: 4058 elmParent.createChild("VDE")->setAttribute("network", nic.strName); 4090 case NetworkAttachmentType_Generic: 4091 if (fEnabled || !nic.strGenericDriver.isEmpty() || nic.genericProperties.size()) 4092 { 4093 xml::ElementNode *pelmMode = elmParent.createChild("GenericInterface"); 4094 pelmMode->setAttribute("driver", nic.strGenericDriver); 4095 for (StringsMap::const_iterator it = nic.genericProperties.begin(); 4096 it != nic.genericProperties.end(); 4097 ++it) 4098 { 4099 xml::ElementNode *pelmProp = pelmMode->createChild("Property"); 4100 pelmProp->setAttribute("name", it->first); 4101 pelmProp->setAttribute("value", it->second); 4102 } 4103 } 4059 4104 break; 4060 #endif4061 4105 4062 4106 default: /*case NetworkAttachmentType_Null:*/ … … 4512 4556 if (m->sv < SettingsVersion_v1_12) 4513 4557 { 4514 // VirtualBox 4.1 adds a promiscuous mode policy to the network adapters. 4558 // VirtualBox 4.1 adds a promiscuous mode policy to the network 4559 // adapters and a generic network driver transport. 4515 4560 NetworkAdaptersList::const_iterator netit; 4516 4561 for (netit = hardwareMachine.llNetworkAdapters.begin(); … … 4518 4563 ++netit) 4519 4564 { 4520 if (netit->enmPromiscModePolicy != NetworkAdapterPromiscModePolicy_Deny) 4565 if ( netit->enmPromiscModePolicy != NetworkAdapterPromiscModePolicy_Deny 4566 || netit->mode == NetworkAttachmentType_Generic 4567 || !netit->strGenericDriver.isEmpty() 4568 || netit->genericProperties.size() 4569 ) 4521 4570 { 4522 4571 m->sv = SettingsVersion_v1_12; -
trunk/src/VBox/Main/xml/VirtualBox-settings-common.xsd
r36945 r37200 7 7 * Common definitions 8 8 9 Copyright (C) 2004-201 0Oracle Corporation9 Copyright (C) 2004-2011 Oracle Corporation 10 10 11 11 This file is part of VirtualBox Open Source Edition (OSE), as … … 767 767 </xsd:complexType> 768 768 </xsd:element> 769 <xsd:element name="Generic"> 770 <xsd:complexType> 771 <xsd:attribute name="driver" type="xsd:string" use="required"/> 772 </xsd:complexType> 773 <xsd:element name="Property" minOccurs="0" maxOccurs="unbounded"> 774 <xsd:complexType> 775 <xsd:attribute name="name" type="xsd:token" use="required"/> 776 <xsd:attribute name="value" type="xsd:string" use="required"/> 777 </xsd:complexType> 778 </xsd:element> 779 </xsd:element> 780 <!-- The DisabledModes tag is not part of this XSD file right now. --> 769 781 </xsd:choice> 770 782 <xsd:attribute name="type" type="TNetworkAdapterType" default="Am79C970A"/>
Note:
See TracChangeset
for help on using the changeset viewer.