Merge pull request #1763 from xenserver/REQ-230

Merge REQ-230 from feature branch to master
This commit is contained in:
Mihaela Stoica 2017-09-18 14:40:10 +01:00 committed by GitHub
commit e788e4d106
16 changed files with 1443 additions and 8 deletions

View File

@ -78,6 +78,7 @@ namespace XenAdmin.Dialogs
private Page_CloudConfigParameters CloudConfigParametersPage;
private SecurityEditPage SecurityEditPage;
private LivePatchingEditPage LivePatchingEditPage;
private NetworkOptionsEditPage NetworkOptionsEditPage;
#endregion
private IXenObject xenObject, xenObjectBefore, xenObjectCopy;
@ -202,6 +203,9 @@ namespace XenAdmin.Dialogs
if (is_pool_or_standalone && !Helpers.FeatureForbidden(xenObject.Connection, Host.RestrictLivePatching))
ShowTab(LivePatchingEditPage = new LivePatchingEditPage());
if (is_pool_or_standalone && !Helpers.FeatureForbidden(xenObject.Connection, Host.RestrictIGMPSnooping) && Helpers.GetMaster(pool).vSwitchNetworkBackend())
ShowTab(NetworkOptionsEditPage = new NetworkOptionsEditPage());
if (is_network)
ShowTab(editNetworkPage = new EditNetworkPage());

View File

@ -0,0 +1,119 @@
namespace XenAdmin.SettingsPanels
{
partial class NetworkOptionsEditPage
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetworkOptionsEditPage));
this.radioButtonDisable = new System.Windows.Forms.RadioButton();
this.radioButtonEnable = new System.Windows.Forms.RadioButton();
this.labelRubric = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.iconWarningIGMPSnoopingOption = new System.Windows.Forms.PictureBox();
this.labelWarningIGMPSnoopingOption = new System.Windows.Forms.Label();
this.warningsTable = new System.Windows.Forms.TableLayoutPanel();
((System.ComponentModel.ISupportInitialize)(this.iconWarningIGMPSnoopingOption)).BeginInit();
this.warningsTable.SuspendLayout();
this.SuspendLayout();
//
// radioButtonDisable
//
resources.ApplyResources(this.radioButtonDisable, "radioButtonDisable");
this.warningsTable.SetColumnSpan(this.radioButtonDisable, 2);
this.radioButtonDisable.Name = "radioButtonDisable";
this.radioButtonDisable.TabStop = true;
this.radioButtonDisable.UseVisualStyleBackColor = true;
//
// radioButtonEnable
//
resources.ApplyResources(this.radioButtonEnable, "radioButtonEnable");
this.warningsTable.SetColumnSpan(this.radioButtonEnable, 2);
this.radioButtonEnable.Name = "radioButtonEnable";
this.radioButtonEnable.TabStop = true;
this.radioButtonEnable.UseVisualStyleBackColor = true;
//
// labelRubric
//
resources.ApplyResources(this.labelRubric, "labelRubric");
this.labelRubric.BackColor = System.Drawing.Color.Transparent;
this.warningsTable.SetColumnSpan(this.labelRubric, 2);
this.labelRubric.Name = "labelRubric";
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// iconWarningIGMPSnoopingOption
//
resources.ApplyResources(this.iconWarningIGMPSnoopingOption, "iconWarningIGMPSnoopingOption");
this.iconWarningIGMPSnoopingOption.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
this.iconWarningIGMPSnoopingOption.Name = "iconWarningIGMPSnoopingOption";
this.iconWarningIGMPSnoopingOption.TabStop = false;
//
// labelWarningIGMPSnoopingOption
//
resources.ApplyResources(this.labelWarningIGMPSnoopingOption, "labelWarningIGMPSnoopingOption");
this.labelWarningIGMPSnoopingOption.Name = "labelWarningIGMPSnoopingOption";
//
// warningsTable
//
this.warningsTable.AllowDrop = true;
resources.ApplyResources(this.warningsTable, "warningsTable");
this.warningsTable.Controls.Add(this.labelRubric, 0, 0);
this.warningsTable.Controls.Add(this.iconWarningIGMPSnoopingOption, 0, 3);
this.warningsTable.Controls.Add(this.labelWarningIGMPSnoopingOption, 1, 3);
this.warningsTable.Controls.Add(this.radioButtonEnable, 0, 1);
this.warningsTable.Controls.Add(this.radioButtonDisable, 0, 2);
this.warningsTable.Name = "warningsTable";
//
// NetworkOptionsEditPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.warningsTable);
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "NetworkOptionsEditPage";
((System.ComponentModel.ISupportInitialize)(this.iconWarningIGMPSnoopingOption)).EndInit();
this.warningsTable.ResumeLayout(false);
this.warningsTable.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.RadioButton radioButtonDisable;
private System.Windows.Forms.RadioButton radioButtonEnable;
private System.Windows.Forms.Label labelRubric;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.PictureBox iconWarningIGMPSnoopingOption;
private System.Windows.Forms.Label labelWarningIGMPSnoopingOption;
private System.Windows.Forms.TableLayoutPanel warningsTable;
}
}

View File

@ -0,0 +1,126 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System.Drawing;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Core;
using XenAPI;
namespace XenAdmin.SettingsPanels
{
public partial class NetworkOptionsEditPage : UserControl, IEditPage
{
private Pool pool;
public NetworkOptionsEditPage()
{
InitializeComponent();
Text = Messages.NETWORK_OPTIONS;
}
#region IEditPage Members
public AsyncAction SaveSettings()
{
bool now_enabled = radioButtonEnable.Checked;
string title = null;
string description = null;
if (now_enabled)
{
title = Messages.ACTION_ENABLE_IGMP_SNOOPING;
description = Messages.ACTION_DISABLE_IGMP_SNOOPING;
}
else
{
title = Messages.ACTION_DISABLE_IGMP_SNOOPING;
description = Messages.ACTION_DISABLE_IGMP_SNOOPING;
}
return new DelegatedAsyncAction(pool.Connection, title, description, null,
delegate(Session session) { Pool.set_igmp_snooping_enabled(session, pool.opaque_ref, radioButtonEnable.Checked); }, true);
}
public void SetXenObjects(IXenObject orig, IXenObject clone)
{
pool = Helpers.GetPoolOfOne(clone.Connection); // clone could be a pool or a host
if (pool != null && pool.igmp_snooping_enabled)
{
radioButtonEnable.Checked = true;
}
else
{
radioButtonDisable.Checked = true;
}
}
public bool ValidToSave
{
get { return true; }
}
public void ShowLocalValidationMessages()
{ }
public void Cleanup()
{ }
public bool HasChanged
{
// Server flag is for enabled, so compare to enable radio
get { return pool != null && (pool.igmp_snooping_enabled != radioButtonEnable.Checked); }
}
#endregion
#region VerticalTab Members
public string SubText
{
get
{
return radioButtonEnable.Checked
? Messages.NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_ENABLED
: Messages.NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_DISABLED;
}
}
public Image Image
{
get { return Properties.Resources._000_Network_h32bit_16; }
}
#endregion
}
}

View File

@ -0,0 +1,270 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="radioButtonDisable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="radioButtonDisable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="radioButtonDisable.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 156</value>
</data>
<data name="radioButtonDisable.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="radioButtonDisable.Size" type="System.Drawing.Size, System.Drawing">
<value>337, 36</value>
</data>
<data name="radioButtonDisable.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="radioButtonDisable.Text" xml:space="preserve">
<value>ライブ パッチを使用しない(&amp;D)</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Name" xml:space="preserve">
<value>radioButtonDisable</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;radioButtonDisable.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="radioButtonEnable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButtonEnable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="radioButtonEnable.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 104</value>
</data>
<data name="radioButtonEnable.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="radioButtonEnable.Size" type="System.Drawing.Size, System.Drawing">
<value>457, 36</value>
</data>
<data name="radioButtonEnable.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="radioButtonEnable.Text" xml:space="preserve">
<value>可能であればライブ パッチを使用する(&amp;U)</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Name" xml:space="preserve">
<value>radioButtonEnable</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;radioButtonEnable.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="labelRubric.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelRubric.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="labelRubric.Size" type="System.Drawing.Size, System.Drawing">
<value>1186, 64</value>
</data>
<data name="labelRubric.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelRubric.Text" xml:space="preserve">
<value>ライブ パッチによって、サーバーを再起動することなく Linux カーネルや Xen のアップデートをインストールできます。可能な場合にライブパッチを適用するかどうかを選択してください。</value>
</data>
<data name="&gt;&gt;labelRubric.Name" xml:space="preserve">
<value>labelRubric</value>
</data>
<data name="&gt;&gt;labelRubric.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelRubric.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelRubric.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>1192, 64</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="labelRubric" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,50,Percent,50" />&lt;Rows Styles="Percent,50,Percent,50" />&lt;/TableLayoutSettings></value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>240, 240</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>1192, 495</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>LivePatchingEditPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,381 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="radioButtonDisable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="warningsTable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="warningsTable.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelRubric.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelRubric.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelRubric.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="labelRubric.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 10</value>
</data>
<data name="labelRubric.Size" type="System.Drawing.Size, System.Drawing">
<value>533, 26</value>
</data>
<data name="labelRubric.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelRubric.Text" xml:space="preserve">
<value>IGMP snooping is a feature that makes the use of IPv4 multicast more efficient, by forwarding packets only to the subscribers of multicast streams.</value>
</data>
<data name="&gt;&gt;labelRubric.Name" xml:space="preserve">
<value>labelRubric</value>
</data>
<data name="&gt;&gt;labelRubric.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelRubric.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;labelRubric.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="iconWarningIGMPSnoopingOption.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="iconWarningIGMPSnoopingOption.ErrorImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="iconWarningIGMPSnoopingOption.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="iconWarningIGMPSnoopingOption.InitialImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="iconWarningIGMPSnoopingOption.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 102</value>
</data>
<data name="iconWarningIGMPSnoopingOption.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="iconWarningIGMPSnoopingOption.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;iconWarningIGMPSnoopingOption.Name" xml:space="preserve">
<value>iconWarningIGMPSnoopingOption</value>
</data>
<data name="&gt;&gt;iconWarningIGMPSnoopingOption.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;iconWarningIGMPSnoopingOption.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;iconWarningIGMPSnoopingOption.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelWarningIGMPSnoopingOption.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningIGMPSnoopingOption.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningIGMPSnoopingOption.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarningIGMPSnoopingOption.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 97</value>
</data>
<data name="labelWarningIGMPSnoopingOption.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="labelWarningIGMPSnoopingOption.Size" type="System.Drawing.Size, System.Drawing">
<value>511, 26</value>
</data>
<data name="labelWarningIGMPSnoopingOption.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="labelWarningIGMPSnoopingOption.Text" xml:space="preserve">
<value>Depending on the configuration of your LAN, it may also be necessary to enable an IGMP querier on one of the physical switches. </value>
</data>
<data name="&gt;&gt;labelWarningIGMPSnoopingOption.Name" xml:space="preserve">
<value>labelWarningIGMPSnoopingOption</value>
</data>
<data name="&gt;&gt;labelWarningIGMPSnoopingOption.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelWarningIGMPSnoopingOption.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;labelWarningIGMPSnoopingOption.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="radioButtonEnable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButtonEnable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="radioButtonEnable.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 39</value>
</data>
<data name="radioButtonEnable.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 3, 3, 3</value>
</data>
<data name="radioButtonEnable.Size" type="System.Drawing.Size, System.Drawing">
<value>210, 17</value>
</data>
<data name="radioButtonEnable.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="radioButtonEnable.Text" xml:space="preserve">
<value>&amp;Enable IGMP snooping (recommended)</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Name" xml:space="preserve">
<value>radioButtonEnable</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;radioButtonEnable.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="warningsTable.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="warningsTable.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="warningsTable.RowCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="warningsTable.Size" type="System.Drawing.Size, System.Drawing">
<value>539, 361</value>
</data>
<data name="warningsTable.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;warningsTable.Name" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;warningsTable.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;warningsTable.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;warningsTable.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="warningsTable.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelRubric" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="iconWarningIGMPSnoopingOption" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningIGMPSnoopingOption" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="radioButtonEnable" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="radioButtonDisable" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="radioButtonDisable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="radioButtonDisable.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 62</value>
</data>
<data name="radioButtonDisable.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 3, 3, 15</value>
</data>
<data name="radioButtonDisable.Size" type="System.Drawing.Size, System.Drawing">
<value>136, 17</value>
</data>
<data name="radioButtonDisable.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="radioButtonDisable.Text" xml:space="preserve">
<value>&amp;Disable IGMP snooping</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Name" xml:space="preserve">
<value>radioButtonDisable</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Parent" xml:space="preserve">
<value>warningsTable</value>
</data>
<data name="&gt;&gt;radioButtonDisable.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 1, 1, 1</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>539, 0</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls /&gt;&lt;Columns Styles="Percent,50,Percent,50" /&gt;&lt;Rows Styles="Percent,50,Percent,50" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>539, 361</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>NetworkOptionsEditPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -0,0 +1,270 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="radioButtonDisable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="radioButtonDisable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="radioButtonDisable.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 156</value>
</data>
<data name="radioButtonDisable.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="radioButtonDisable.Size" type="System.Drawing.Size, System.Drawing">
<value>337, 36</value>
</data>
<data name="radioButtonDisable.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="radioButtonDisable.Text" xml:space="preserve">
<value>不使用实时修补(&amp;D)</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Name" xml:space="preserve">
<value>radioButtonDisable</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButtonDisable.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;radioButtonDisable.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="radioButtonEnable.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="radioButtonEnable.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="radioButtonEnable.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 104</value>
</data>
<data name="radioButtonEnable.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="radioButtonEnable.Size" type="System.Drawing.Size, System.Drawing">
<value>457, 36</value>
</data>
<data name="radioButtonEnable.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="radioButtonEnable.Text" xml:space="preserve">
<value>尽可能使用实时修补(&amp;U)</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Name" xml:space="preserve">
<value>radioButtonEnable</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Type" xml:space="preserve">
<value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;radioButtonEnable.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;radioButtonEnable.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="labelRubric.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelRubric.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="labelRubric.Size" type="System.Drawing.Size, System.Drawing">
<value>1186, 64</value>
</data>
<data name="labelRubric.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelRubric.Text" xml:space="preserve">
<value>借助实时修补功能,您不需要重新启动服务器即可安装某些 Linux 内核和 Xen 更新。请选择是否要在可用时使用实时修补程序。</value>
</data>
<data name="&gt;&gt;labelRubric.Name" xml:space="preserve">
<value>labelRubric</value>
</data>
<data name="&gt;&gt;labelRubric.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelRubric.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelRubric.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>1192, 64</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="labelRubric" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,50,Percent,50" />&lt;Rows Styles="Percent,50,Percent,50" />&lt;/TableLayoutSettings></value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>240, 240</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>1192, 495</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>LivePatchingEditPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -344,6 +344,12 @@
<Compile Include="SettingsPanels\LivePatchingEditPage.Designer.cs">
<DependentUpon>LivePatchingEditPage.cs</DependentUpon>
</Compile>
<Compile Include="SettingsPanels\NetworkOptionsEditPage.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="SettingsPanels\NetworkOptionsEditPage.Designer.cs">
<DependentUpon>NetworkOptionsEditPage.cs</DependentUpon>
</Compile>
<Compile Include="SettingsPanels\SecurityEditPage.cs">
<SubType>UserControl</SubType>
</Compile>
@ -1884,6 +1890,15 @@
<EmbeddedResource Include="SettingsPanels\LivePatchingEditPage.zh-CN.resx">
<DependentUpon>LivePatchingEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\NetworkOptionsEditPage.ja.resx">
<DependentUpon>NetworkOptionsEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\NetworkOptionsEditPage.resx">
<DependentUpon>NetworkOptionsEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\NetworkOptionsEditPage.zh-CN.resx">
<DependentUpon>NetworkOptionsEditPage.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SettingsPanels\SecurityEditPage.ja.resx">
<DependentUpon>SecurityEditPage.cs</DependentUpon>
</EmbeddedResource>

View File

@ -563,7 +563,18 @@ namespace XenAdmin {
return ResourceManager.GetString("ACTION_DETACHING_MULTIPLE_VDIS_TITLE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Disable IGMP snooping.
/// </summary>
public static string ACTION_DISABLE_IGMP_SNOOPING
{
get
{
return ResourceManager.GetString("ACTION_DISABLE_IGMP_SNOOPING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Disable live patching.
/// </summary>
@ -923,7 +934,18 @@ namespace XenAdmin {
return ResourceManager.GetString("ACTION_DR_TASK_DESTROY_TITLE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enable IGMP Snooping.
/// </summary>
public static string ACTION_ENABLE_IGMP_SNOOPING
{
get
{
return ResourceManager.GetString("ACTION_ENABLE_IGMP_SNOOPING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enable live patching.
/// </summary>
@ -22652,7 +22674,35 @@ namespace XenAdmin {
return ResourceManager.GetString("NETWORK_SETTINGS", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Network Options.
/// </summary>
public static string NETWORK_OPTIONS {
get
{
return ResourceManager.GetString("NETWORK_OPTIONS", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to IGMP snooping enabled.
/// </summary>
public static string NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_ENABLED {
get {
return ResourceManager.GetString("NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_ENABLED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to IGMP snooping disabled.
/// </summary>
public static string NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_DISABLED {
get {
return ResourceManager.GetString("NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_DISABLED", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to {0} on {1}.
/// </summary>
@ -29874,7 +29924,7 @@ namespace XenAdmin {
return ResourceManager.GetString("SECURITYEDITPAGE_SUBTEXT_TLS", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Select a filter....
/// </summary>

View File

@ -288,6 +288,9 @@
<data name="ACTION_DISABLED_PVS_READ_CACHING" xml:space="preserve">
<value>Disabled PVS-Accelerator for selected VMs</value>
</data>
<data name="ACTION_DISABLE_IGMP_SNOOPING" xml:space="preserve">
<value>Disable IGMP snooping</value>
</data>
<data name="ACTION_DISABLE_LIVE_PATCHING" xml:space="preserve">
<value>Disable live patching</value>
</data>
@ -408,6 +411,9 @@
<data name="ACTION_ENABLED_PVS_READ_CACHING" xml:space="preserve">
<value>Enabled PVS-Accelerator for selected VMs</value>
</data>
<data name="ACTION_ENABLE_IGMP_SNOOPING" xml:space="preserve">
<value>Enable IGMP snooping</value>
</data>
<data name="ACTION_ENABLE_LIVE_PATCHING" xml:space="preserve">
<value>Enable live patching</value>
</data>
@ -7810,6 +7816,15 @@ To learn more about the [XenServer] Live VDI Migration feature or to start a [Xe
<data name="NETWORK" xml:space="preserve">
<value>Network</value>
</data>
<data name="NETWORK_OPTIONS" xml:space="preserve">
<value>Network Options</value>
</data>
<data name="NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_ENABLED" xml:space="preserve">
<value>IGMP snooping enabled</value>
</data>
<data name="NETWORKOPTIONSEDITPAGE_SUBTEXT_IGMP_SNOOPING_DISABLED" xml:space="preserve">
<value>IGMP snooping disabled</value>
</data>
<data name="NETWORKING_PROPERTIES_AUX_TAB_NAME" xml:space="preserve">
<value>Storage {0}</value>
</data>

View File

@ -376,6 +376,11 @@ namespace XenAPI
return BoolKeyPreferTrue(h.license_params, "restrict_live_patching");
}
public static bool RestrictIGMPSnooping(Host h)
{
return BoolKeyPreferTrue(h.license_params, "restrict_igmp_snooping");
}
public static bool RestrictVcpuHotplug(Host h)
{
if (Helpers.ElyOrGreater(h.Connection))

View File

@ -261,6 +261,9 @@
<data name="COULD_NOT_IMPORT_DATABASE" xml:space="preserve">
<value>An error occurred while attempting to import a database from a metadata VDI</value>
</data>
<data name="COULD_NOT_UPDATE_IGMP_SNOOPING_EVERYWHERE" xml:space="preserve">
<value>The IGMP Snooping setting cannot be applied for some of the host, network(s).</value>
</data>
<data name="CPU_FEATURE_MASKING_NOT_SUPPORTED" xml:space="preserve">
<value>The CPU does not support masking of features.</value>
</data>

View File

@ -76,7 +76,8 @@ namespace XenAPI
primary_address_type primary_address_type,
bool managed,
Dictionary<string, string> properties,
string[] capabilities)
string[] capabilities,
pif_igmp_status igmp_snooping_status)
{
this.uuid = uuid;
this.device = device;
@ -109,6 +110,7 @@ namespace XenAPI
this.managed = managed;
this.properties = properties;
this.capabilities = capabilities;
this.igmp_snooping_status = igmp_snooping_status;
}
/// <summary>
@ -153,6 +155,7 @@ namespace XenAPI
managed = update.managed;
properties = update.properties;
capabilities = update.capabilities;
igmp_snooping_status = update.igmp_snooping_status;
}
internal void UpdateFromProxy(Proxy_PIF proxy)
@ -188,6 +191,7 @@ namespace XenAPI
managed = (bool)proxy.managed;
properties = proxy.properties == null ? null : Maps.convert_from_proxy_string_string(proxy.properties);
capabilities = proxy.capabilities == null ? new string[] {} : (string [])proxy.capabilities;
igmp_snooping_status = proxy.igmp_snooping_status == null ? (pif_igmp_status) 0 : (pif_igmp_status)Helper.EnumParseDefault(typeof(pif_igmp_status), (string)proxy.igmp_snooping_status);
}
public Proxy_PIF ToProxy()
@ -224,6 +228,7 @@ namespace XenAPI
result_.managed = managed;
result_.properties = Maps.convert_to_proxy_string_string(properties);
result_.capabilities = capabilities;
result_.igmp_snooping_status = pif_igmp_status_helper.ToString(igmp_snooping_status);
return result_;
}
@ -264,6 +269,7 @@ namespace XenAPI
managed = Marshalling.ParseBool(table, "managed");
properties = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "properties"));
capabilities = Marshalling.ParseStringArray(table, "capabilities");
igmp_snooping_status = (pif_igmp_status)Helper.EnumParseDefault(typeof(pif_igmp_status), Marshalling.ParseString(table, "igmp_snooping_status"));
}
public bool DeepEquals(PIF other)
@ -303,7 +309,8 @@ namespace XenAPI
Helper.AreEqual2(this._primary_address_type, other._primary_address_type) &&
Helper.AreEqual2(this._managed, other._managed) &&
Helper.AreEqual2(this._properties, other._properties) &&
Helper.AreEqual2(this._capabilities, other._capabilities);
Helper.AreEqual2(this._capabilities, other._capabilities) &&
Helper.AreEqual2(this._igmp_snooping_status, other._igmp_snooping_status);
}
public override string SaveChanges(Session session, string opaqueRef, PIF server)
@ -690,6 +697,17 @@ namespace XenAPI
return (string [])session.proxy.pif_get_capabilities(session.uuid, _pif ?? "").parse();
}
/// <summary>
/// Get the igmp_snooping_status field of the given PIF.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pif">The opaque_ref of the given pif</param>
public static pif_igmp_status get_igmp_snooping_status(Session session, string _pif)
{
return (pif_igmp_status)Helper.EnumParseDefault(typeof(pif_igmp_status), (string)session.proxy.pif_get_igmp_snooping_status(session.uuid, _pif ?? "").parse());
}
/// <summary>
/// Set the other_config field of the given PIF.
/// First published in XenServer 4.1.
@ -1919,5 +1937,24 @@ namespace XenAPI
}
}
private string[] _capabilities;
/// <summary>
/// The IGMP snooping status of the corresponding network bridge
/// First published in Unreleased.
/// </summary>
public virtual pif_igmp_status igmp_snooping_status
{
get { return _igmp_snooping_status; }
set
{
if (!Helper.AreEqual(value, _igmp_snooping_status))
{
_igmp_snooping_status = value;
Changed = true;
NotifyPropertyChanged("igmp_snooping_status");
}
}
}
private pif_igmp_status _igmp_snooping_status;
}
}

View File

@ -80,7 +80,8 @@ namespace XenAPI
Dictionary<string, string> guest_agent_config,
Dictionary<string, string> cpu_info,
bool policy_no_vendor_device,
bool live_patching_disabled)
bool live_patching_disabled,
bool igmp_snooping_enabled)
{
this.uuid = uuid;
this.name_label = name_label;
@ -117,6 +118,7 @@ namespace XenAPI
this.cpu_info = cpu_info;
this.policy_no_vendor_device = policy_no_vendor_device;
this.live_patching_disabled = live_patching_disabled;
this.igmp_snooping_enabled = igmp_snooping_enabled;
}
/// <summary>
@ -165,6 +167,7 @@ namespace XenAPI
cpu_info = update.cpu_info;
policy_no_vendor_device = update.policy_no_vendor_device;
live_patching_disabled = update.live_patching_disabled;
igmp_snooping_enabled = update.igmp_snooping_enabled;
}
internal void UpdateFromProxy(Proxy_Pool proxy)
@ -204,6 +207,7 @@ namespace XenAPI
cpu_info = proxy.cpu_info == null ? null : Maps.convert_from_proxy_string_string(proxy.cpu_info);
policy_no_vendor_device = (bool)proxy.policy_no_vendor_device;
live_patching_disabled = (bool)proxy.live_patching_disabled;
igmp_snooping_enabled = (bool)proxy.igmp_snooping_enabled;
}
public Proxy_Pool ToProxy()
@ -244,6 +248,7 @@ namespace XenAPI
result_.cpu_info = Maps.convert_to_proxy_string_string(cpu_info);
result_.policy_no_vendor_device = policy_no_vendor_device;
result_.live_patching_disabled = live_patching_disabled;
result_.igmp_snooping_enabled = igmp_snooping_enabled;
return result_;
}
@ -288,6 +293,7 @@ namespace XenAPI
cpu_info = Maps.convert_from_proxy_string_string(Marshalling.ParseHashTable(table, "cpu_info"));
policy_no_vendor_device = Marshalling.ParseBool(table, "policy_no_vendor_device");
live_patching_disabled = Marshalling.ParseBool(table, "live_patching_disabled");
igmp_snooping_enabled = Marshalling.ParseBool(table, "igmp_snooping_enabled");
}
public bool DeepEquals(Pool other, bool ignoreCurrentOperations)
@ -333,7 +339,8 @@ namespace XenAPI
Helper.AreEqual2(this._guest_agent_config, other._guest_agent_config) &&
Helper.AreEqual2(this._cpu_info, other._cpu_info) &&
Helper.AreEqual2(this._policy_no_vendor_device, other._policy_no_vendor_device) &&
Helper.AreEqual2(this._live_patching_disabled, other._live_patching_disabled);
Helper.AreEqual2(this._live_patching_disabled, other._live_patching_disabled) &&
Helper.AreEqual2(this._igmp_snooping_enabled, other._igmp_snooping_enabled);
}
public override string SaveChanges(Session session, string opaqueRef, Pool server)
@ -814,6 +821,17 @@ namespace XenAPI
return (bool)session.proxy.pool_get_live_patching_disabled(session.uuid, _pool ?? "").parse();
}
/// <summary>
/// Get the igmp_snooping_enabled field of the given pool.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pool">The opaque_ref of the given pool</param>
public static bool get_igmp_snooping_enabled(Session session, string _pool)
{
return (bool)session.proxy.pool_get_igmp_snooping_enabled(session.uuid, (_pool != null) ? _pool : "").parse();
}
/// <summary>
/// Set the name_label field of the given pool.
/// First published in XenServer 4.0.
@ -2030,6 +2048,30 @@ namespace XenAPI
return XenRef<Task>.Create(session.proxy.async_pool_disable_ssl_legacy(session.uuid, _pool ?? "").parse());
}
/// <summary>
/// Enable or disable IGMP Snooping on the pool.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pool">The opaque_ref of the given pool</param>
/// <param name="_value">Enable or disable IGMP Snooping on the pool</param>
public static void set_igmp_snooping_enabled(Session session, string _pool, bool _value)
{
session.proxy.pool_set_igmp_snooping_enabled(session.uuid, (_pool != null) ? _pool : "", _value).parse();
}
/// <summary>
/// Enable or disable IGMP Snooping on the pool.
/// First published in Unreleased.
/// </summary>
/// <param name="session">The session</param>
/// <param name="_pool">The opaque_ref of the given pool</param>
/// <param name="_value">Enable or disable IGMP Snooping on the pool</param>
public static XenRef<Task> async_set_igmp_snooping_enabled(Session session, string _pool, bool _value)
{
return XenRef<Task>.Create(session.proxy.async_pool_set_igmp_snooping_enabled(session.uuid, (_pool != null) ? _pool : "", _value).parse());
}
/// <summary>
/// Return true if the extension is available on the pool
/// First published in XenServer 7.0.
@ -2778,5 +2820,24 @@ namespace XenAPI
}
}
private bool _live_patching_disabled;
/// <summary>
/// true if IGMP snooping is enabled in the pool, false otherwise.
/// First published in Unreleased.
/// </summary>
public virtual bool igmp_snooping_enabled
{
get { return _igmp_snooping_enabled; }
set
{
if (!Helper.AreEqual(value, _igmp_snooping_enabled))
{
_igmp_snooping_enabled = value;
Changed = true;
NotifyPropertyChanged("igmp_snooping_enabled");
}
}
}
private bool _igmp_snooping_enabled;
}
}

View File

@ -604,6 +604,10 @@ namespace XenAPI
Response<bool>
pool_get_live_patching_disabled(string session, string _pool);
[XmlRpcMethod("pool.get_igmp_snooping_enabled")]
Response<bool>
pool_get_igmp_snooping_enabled(string session, string _pool);
[XmlRpcMethod("pool.set_name_label")]
Response<string>
pool_set_name_label(string session, string _pool, string _name_label);
@ -1024,6 +1028,14 @@ namespace XenAPI
Response<string>
async_pool_disable_ssl_legacy(string session, string _pool);
[XmlRpcMethod("pool.set_igmp_snooping_enabled")]
Response<string>
pool_set_igmp_snooping_enabled(string session, string _pool, bool _value);
[XmlRpcMethod("Async.pool.set_igmp_snooping_enabled")]
Response<string>
async_pool_set_igmp_snooping_enabled(string session, string _pool, bool _value);
[XmlRpcMethod("pool.has_extension")]
Response<bool>
pool_has_extension(string session, string _pool, string _name);
@ -4664,6 +4676,10 @@ namespace XenAPI
Response<string []>
pif_get_capabilities(string session, string _pif);
[XmlRpcMethod("PIF.get_igmp_snooping_status")]
Response<string>
pif_get_igmp_snooping_status(string session, string _pif);
[XmlRpcMethod("PIF.set_other_config")]
Response<string>
pif_set_other_config(string session, string _pif, Object _other_config);
@ -7704,6 +7720,7 @@ namespace XenAPI
public Object cpu_info;
public bool policy_no_vendor_device;
public bool live_patching_disabled;
public bool igmp_snooping_enabled;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
@ -8131,6 +8148,7 @@ namespace XenAPI
public bool managed;
public Object properties;
public string [] capabilities;
public string igmp_snooping_status;
}
[XmlRpcMissingMapping(MappingAction.Ignore)]

View File

@ -0,0 +1,60 @@
/*
* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
namespace XenAPI
{
public enum pif_igmp_status
{
enabled, disabled, unknown
}
public static class pif_igmp_status_helper
{
public static string ToString(pif_igmp_status x)
{
switch (x)
{
case pif_igmp_status.enabled:
return "enabled";
case pif_igmp_status.disabled:
return "disabled";
case pif_igmp_status.unknown:
return "unknown";
default:
return "unknown";
}
}
}
}

View File

@ -365,6 +365,7 @@
<Compile Include="XenAPI\PCI.cs" />
<Compile Include="XenAPI\PGPU.cs" />
<Compile Include="XenAPI\pgpu_dom0_access.cs" />
<Compile Include="XenAPI\pif_igmp_status.cs" />
<Compile Include="XenAPI\pool_allowed_operations.cs" />
<Compile Include="XenAPI\Pool_update.cs" />
<Compile Include="XenAPI\primary_address_type.cs" />