diff --git a/MediaPortal/Source/UI/UiComponents/Configuration/Configuration.csproj b/MediaPortal/Source/UI/UiComponents/Configuration/Configuration.csproj
index 68e88a6..af455bd 100644
--- a/MediaPortal/Source/UI/UiComponents/Configuration/Configuration.csproj
+++ b/MediaPortal/Source/UI/UiComponents/Configuration/Configuration.csproj
@@ -52,6 +52,7 @@
       <Link>Properties\VersionInfo.cs</Link>
     </Compile>
     <Compile Include="ConfigurationControllers\AbstractEntryController.cs" />
+    <Compile Include="ConfigurationControllers\MultipleEntryListController.cs" />
     <Compile Include="ConfigurationControllers\PathSelectionController.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
diff --git a/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationControllers/MultipleEntryListController.cs b/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationControllers/MultipleEntryListController.cs
new file mode 100644
index 0000000..a5e6d7c
--- /dev/null
+++ b/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationControllers/MultipleEntryListController.cs
@@ -0,0 +1,226 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Net;
+using MediaPortal.Common;
+using MediaPortal.Common.Configuration.ConfigurationClasses;
+using MediaPortal.Common.General;
+using MediaPortal.Common.Localization;
+using MediaPortal.UI.Presentation.DataObjects;
+using MediaPortal.UI.Presentation.UiNotifications;
+
+namespace MediaPortal.UiComponents.Configuration.ConfigurationControllers
+{
+  public class MultipleEntryListController : SelectionListController
+  {
+    #region Protected fields
+
+    protected AbstractProperty _valueProperty;
+    protected AbstractProperty _isEntrySelectedProperty;
+ 
+    #endregion
+
+    public MultipleEntryListController()
+    {
+      _valueProperty = new WProperty(typeof(string), string.Empty);
+      _valueProperty.Attach(OnValueChanged);
+      _isEntrySelectedProperty = new WProperty(typeof(bool), false);
+    }
+
+    private void OnValueChanged(AbstractProperty property, object oldValue)
+    {
+      var selectedIndex = FindSelectedIndex();
+      if (selectedIndex >= 0 && !String.Equals(Value, (string)oldValue))
+      {
+        var item = _items[selectedIndex];
+        item.SetLabel(KEY_NAME, Value);
+        item.FireChange();
+      }
+    }
+
+    #region Constants
+
+    public const string KEY_NAME = "Name";
+
+    #endregion
+
+    #region Protected fields
+
+    #endregion
+
+    protected int FindSelectedIndex()
+    {
+      int current = 0;
+      foreach (ListItem item in _items)
+      {
+        if (item.Selected)
+          return current;
+        current++;
+      }
+      return -1;
+    }
+
+    protected void OnSelectionChanged(AbstractProperty property, object oldValue)
+    {
+      var selectedIndex = FindSelectedIndex();
+      if (selectedIndex >= 0)
+      {
+        Value = _items[selectedIndex].Labels[KEY_NAME].ToString();
+        IsEntrySelected = true;
+      }
+      else
+      {
+        Value = String.Empty;
+        IsEntrySelected = false;
+      }
+    }
+
+    protected override void UpdateItemsList()
+    {
+      _items.Clear();
+      if (_setting != null)
+      {
+        var mel = (MultipleEntryList)_setting;
+        if (mel.Lines != null)
+        {
+          foreach (var item in mel.Lines)
+          {
+            ListItem listItem = new ListItem(KEY_NAME, item);
+            listItem.SelectedProperty.Attach(OnSelectionChanged);
+            _items.Add(listItem);
+          }
+        }
+      }
+      if (_items.Count > 0)
+      {
+        _items[0].Selected = true;
+      }
+      else
+      {
+        Value = string.Empty;
+        IsEntrySelected = false;
+      }
+      _items.FireChange();
+    }
+
+    protected override void UpdateSetting()
+    {
+      var lines = new List<string>();
+      foreach (ListItem item in _items)
+      {
+        var ipAddress = item.Labels[KEY_NAME].ToString().Trim();
+        IPAddress ip;
+        if (!IPAddress.TryParse(ipAddress, out ip))
+        {
+          ServiceRegistration.Get<INotificationService>().EnqueueNotification(NotificationType.Error,
+            ServiceRegistration.Get<ILocalization>().ToString("[Settings.General.Connectivity.IPAddressBindings]"),
+            String.Format("The IP address '{0}' is invalid", ipAddress),
+          true);
+        }
+        lines.Add(ipAddress);
+      }
+      var mel = (MultipleEntryList)_setting;
+      mel.Lines = lines;
+
+      base.UpdateSetting();
+    }
+
+    public override Type ConfigSettingType
+    {
+      get { return typeof(MultipleEntryList); }
+    }
+
+    protected override string DialogScreen
+    {
+      get { return "dialog_configuration_multipleentrylist"; }
+    }
+
+    public AbstractProperty ValueProperty
+    {
+      get { return _valueProperty; }
+    }
+
+    public string Value
+    {
+      get { return (string)_valueProperty.GetValue(); }
+      set { _valueProperty.SetValue(value); }
+    }
+
+    public AbstractProperty IsEntrySelectedProperty
+    {
+      get { return _isEntrySelectedProperty; }
+    }
+
+    public bool IsEntrySelected
+    {
+      get { return (bool)_isEntrySelectedProperty.GetValue(); }
+      private set { _isEntrySelectedProperty.SetValue(value); }
+    }
+
+    public bool IsAddRemoveEnabled
+    {
+      get { return true; }
+    }
+
+    public bool IsUpDownEnabled
+    {
+      get { return true; }
+    }
+
+    public void Add()
+    {
+      ListItem listItem = new ListItem(KEY_NAME, String.Empty);
+      listItem.SelectedProperty.Attach(OnSelectionChanged);
+      _items.Add(listItem);
+      listItem.Selected = true;
+      _items.FireChange();
+    }
+
+    public void Remove()
+    {
+      int selectedIndex = FindSelectedIndex();
+      if (selectedIndex >= 0)
+      {
+        _items.RemoveAt(selectedIndex);
+        --selectedIndex;
+        if (selectedIndex < 0 && _items.Count > 0)
+        {
+          selectedIndex = 0;
+        }
+        if (selectedIndex >= 0)
+        {
+          _items[selectedIndex].Selected = true;
+        }
+        else
+        {
+          Value = string.Empty;
+          IsEntrySelected = false;
+        }
+        _items.FireChange();
+      }
+    }
+
+    public void Up()
+    {
+      int selectedIndex = FindSelectedIndex();
+      if (selectedIndex > 0)
+      {
+        var item = _items[selectedIndex];
+        _items.RemoveAt(selectedIndex);
+        _items.Insert(selectedIndex - 1, item);
+        _items.FireChange();
+      }
+    }
+
+    public void Down()
+    {
+      int selectedIndex = FindSelectedIndex();
+      if (selectedIndex >= 0 && selectedIndex < _items.Count - 1)
+      {
+        var item = _items[selectedIndex];
+        _items.RemoveAt(selectedIndex);
+        _items.Insert(selectedIndex + 1, item);
+        _items.FireChange();
+      }
+    }
+  }
+}
diff --git a/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationModel.cs b/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationModel.cs
index f124662..b95f69b 100644
--- a/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationModel.cs
+++ b/MediaPortal/Source/UI/UiComponents/Configuration/ConfigurationModel.cs
@@ -123,6 +123,7 @@ namespace MediaPortal.UiComponents.Configuration
       Register(new MultiSelectionListController());
       Register(new NumberSelectController());
       Register(new PathSelectionController());
+      Register(new MultipleEntryListController());
       // More generic controller types go here
 
       _workflowConfigurationController = new WorkflowConfigurationController();
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/Language/strings_en.xml b/MediaPortal/Source/UI/UiComponents/SkinBase/Language/strings_en.xml
index 1bcf4b7..5ace78f 100644
--- a/MediaPortal/Source/UI/UiComponents/SkinBase/Language/strings_en.xml
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/Language/strings_en.xml
@@ -131,6 +131,14 @@
   <string name="Settings.General.Connectivity.ServerListener.Help">Enable notification in detached state, when a MediaPortal 2 server becomes available in the network</string>
   <string name="Settings.General.Connectivity.ClientName">Client name</string>
   <string name="Settings.General.Connectivity.ClientName.Help">Set the name of this MediaPortal 2 client</string>
+  <string name="Settings.General.Connectivity.HttpServerPort">HTTP server port</string>
+  <string name="Settings.General.Connectivity.HttpServerPort.Help">Set the port of the HTTP Server</string>
+  <string name="Settings.General.Connectivity.UseIPv4">Use IPv4</string>
+  <string name="Settings.General.Connectivity.UseIPv4.Help">Set if this MediaPortal 2 client should use IPv4 connections to the Home server</string>
+  <string name="Settings.General.Connectivity.UseIPv6">Use IPv6</string>
+  <string name="Settings.General.Connectivity.UseIPv6.Help">Set if this MediaPortal 2 client should use IPv6 connections to the Home server</string>
+  <string name="Settings.General.Connectivity.IPAddressBindings">IP address bindings</string>
+  <string name="Settings.General.Connectivity.IPAddressBindings.Help">Set a list of IP addresses which should be used by this MediaPortal 2 client for connections to the Home server</string>
 
   <string name="Settings.Regional">Regional</string>
   <string name="Settings.Regional.Language">Language</string>
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/HttpServerPortSetting.cs b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/HttpServerPortSetting.cs
new file mode 100644
index 0000000..e1100f2
--- /dev/null
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/HttpServerPortSetting.cs
@@ -0,0 +1,38 @@
+﻿using MediaPortal.Common;
+using MediaPortal.Common.Configuration.ConfigurationClasses;
+using MediaPortal.Common.Services.ResourceAccess.Settings;
+using MediaPortal.UI.Presentation.UiNotifications;
+
+namespace MediaPortal.UiComponents.SkinBase.Settings.Configuration.General
+{
+  public class HttpServerPortSetting : LimitedNumberSelect
+  {
+    #region Base overrides
+
+    public override void Load()
+    {
+      _type = NumberType.Integer;
+      _step = 1;
+      _lowerLimit = 0;
+      _upperLimit = 65535;
+      _value = SettingsManager.Load<ServerSettings>().HttpServerPort;
+    }
+
+    public override void Save()
+    {
+      var settings = SettingsManager.Load<ServerSettings>();
+      var value = (int)_value;
+      if (value != settings.HttpServerPort)
+      {
+        settings.HttpServerPort = value;
+        SettingsManager.Save(settings);
+        ServiceRegistration.Get<INotificationService>().EnqueueNotification(NotificationType.UserInteractionRequired, 
+          "Restart required", 
+          "A restart of Media Portal is required before the modifications are accepted.", 
+          true);
+      }
+    }
+
+    #endregion
+  }
+}
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/IPAddressBindingsSetting.cs b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/IPAddressBindingsSetting.cs
new file mode 100644
index 0000000..1ddcbfe
--- /dev/null
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/IPAddressBindingsSetting.cs
@@ -0,0 +1,60 @@
+﻿using System;
+using System.Text;
+using MediaPortal.Common;
+using MediaPortal.Common.Configuration.ConfigurationClasses;
+using MediaPortal.Common.Services.ResourceAccess.Settings;
+using MediaPortal.UI.Presentation.UiNotifications;
+
+namespace MediaPortal.UiComponents.SkinBase.Settings.Configuration.General
+{
+  public class IPAddressBindingsSetting : MultipleEntryList
+  {
+    #region Public Methods
+
+    public override int DisplayLength
+    {
+      get { return 40; }
+    }
+
+    public override int DisplayHeight
+    {
+      get { return 10; }
+    }
+
+    public override void Load()
+    {
+      _lines = SettingsManager.Load<ServerSettings>().IPAddressBindingsList;
+    }
+
+    public override void Save()
+    {
+      string newValue = null;
+      if (_lines != null && _lines.Count > 0)
+      {
+        var sb = new StringBuilder();
+        foreach (var line in _lines)
+        {
+          if (sb.Length > 0)
+          {
+            sb.Append(',');
+          }
+          sb.Append(line.Trim());
+        }
+        newValue = sb.ToString();
+      }
+
+      var settings = SettingsManager.Load<ServerSettings>();
+      if (!String.Equals(newValue, settings.IPAddressBindings))
+      {
+        settings.IPAddressBindings = newValue;
+        SettingsManager.Save(settings);
+        ServiceRegistration.Get<INotificationService>().EnqueueNotification(NotificationType.UserInteractionRequired,
+          "Restart required",
+          "A restart of Media Portal is required before the modifications are accepted.",
+          true);
+      }
+    }
+
+    #endregion
+  }
+}
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/USeIPv6Setting.cs b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/USeIPv6Setting.cs
new file mode 100644
index 0000000..6b5859b
--- /dev/null
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/USeIPv6Setting.cs
@@ -0,0 +1,33 @@
+﻿using MediaPortal.Common;
+using MediaPortal.Common.Configuration.ConfigurationClasses;
+using MediaPortal.Common.Services.ResourceAccess.Settings;
+using MediaPortal.UI.Presentation.UiNotifications;
+
+namespace MediaPortal.UiComponents.SkinBase.Settings.Configuration.General
+{
+  public class UseIPv6Setting : YesNo
+  {
+    #region Public Methods
+
+    public override void Load()
+    {
+      _yes = SettingsManager.Load<ServerSettings>().UseIPv6;
+    }
+
+    public override void Save()
+    {
+      var settings = SettingsManager.Load<ServerSettings>();
+      if (_yes != settings.UseIPv6)
+      {
+        settings.UseIPv6 = _yes;
+        SettingsManager.Save(settings);
+        ServiceRegistration.Get<INotificationService>().EnqueueNotification(NotificationType.UserInteractionRequired,
+          "Restart required",
+          "A restart of Media Portal is required before the modifications are accepted.",
+          true);
+      }
+    }
+
+    #endregion
+  }
+}
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/UseIPv4Setting.cs b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/UseIPv4Setting.cs
new file mode 100644
index 0000000..eeaa31f
--- /dev/null
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/Settings/Configuration/General/UseIPv4Setting.cs
@@ -0,0 +1,33 @@
+﻿using MediaPortal.Common;
+using MediaPortal.Common.Configuration.ConfigurationClasses;
+using MediaPortal.Common.Services.ResourceAccess.Settings;
+using MediaPortal.UI.Presentation.UiNotifications;
+
+namespace MediaPortal.UiComponents.SkinBase.Settings.Configuration.General
+{
+  public class UseIPv4Setting : YesNo
+  {
+    #region Public Methods
+
+    public override void Load()
+    {
+      _yes = SettingsManager.Load<ServerSettings>().UseIPv4;
+    }
+
+    public override void Save()
+    {
+      var settings = SettingsManager.Load<ServerSettings>();
+      if (_yes != settings.UseIPv4)
+      {
+        settings.UseIPv4 = _yes;
+        SettingsManager.Save(settings);
+        ServiceRegistration.Get<INotificationService>().EnqueueNotification(NotificationType.UserInteractionRequired,
+          "Restart required",
+          "A restart of Media Portal is required before the modifications are accepted.",
+          true);
+      }
+    }
+
+    #endregion
+  }
+}
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/SkinBase.csproj b/MediaPortal/Source/UI/UiComponents/SkinBase/SkinBase.csproj
index 74f2965..1bfd790 100644
--- a/MediaPortal/Source/UI/UiComponents/SkinBase/SkinBase.csproj
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/SkinBase.csproj
@@ -103,7 +103,11 @@
     <Compile Include="Settings\Configuration\General\HomeServerSetting.cs" />
     <Compile Include="Settings\Configuration\General\ClientName.cs" />
     <Compile Include="Settings\Configuration\General\ClientDOKANDrive.cs" />
+    <Compile Include="Settings\Configuration\General\HttpServerPortSetting.cs" />
+    <Compile Include="Settings\Configuration\General\IPAddressBindingsSetting.cs" />
     <Compile Include="Settings\Configuration\General\ServerListener.cs" />
+    <Compile Include="Settings\Configuration\General\UseIPv4Setting.cs" />
+    <Compile Include="Settings\Configuration\General\UseIPv6Setting.cs" />
     <Compile Include="Settings\Configuration\Regional\MainLanguage.cs" />
     <Compile Include="Settings\Configuration\Shares\SharesOverviewSetting.cs" />
     <Compile Include="Settings\Configuration\Shares\SharesConfigSetting.cs" />
diff --git a/MediaPortal/Source/UI/UiComponents/SkinBase/plugin.xml b/MediaPortal/Source/UI/UiComponents/SkinBase/plugin.xml
index 8d2bb82..853f166 100644
--- a/MediaPortal/Source/UI/UiComponents/SkinBase/plugin.xml
+++ b/MediaPortal/Source/UI/UiComponents/SkinBase/plugin.xml
@@ -305,6 +305,26 @@
         Text="[Settings.General.Connectivity.ClientName]"
         HelpText="[Settings.General.Connectivity.ClientName.Help]"
         ClassName="MediaPortal.UiComponents.SkinBase.Settings.Configuration.General.ClientName"/>
+    <ConfigSetting
+        Id="HttpServerPort"
+        Text="[Settings.General.Connectivity.HttpServerPort]"
+        HelpText="[Settings.General.Connectivity.HttpServerPort.Help]"
+        ClassName="MediaPortal.UiComponents.SkinBase.Settings.Configuration.General.HttpServerPortSetting"/>
+    <ConfigSetting
+        Id="UseIPv4"
+        Text="[Settings.General.Connectivity.UseIPv4]"
+        HelpText="[Settings.General.Connectivity.UseIPv4.Help]"
+        ClassName="MediaPortal.UiComponents.SkinBase.Settings.Configuration.General.UseIPv4Setting"/>
+    <ConfigSetting
+        Id="UseIPv6"
+        Text="[Settings.General.Connectivity.UseIPv6]"
+        HelpText="[Settings.General.Connectivity.UseIPv6.Help]"
+        ClassName="MediaPortal.UiComponents.SkinBase.Settings.Configuration.General.UseIPv6Setting"/>
+    <ConfigSetting
+        Id="IPAddressBindings"
+        Text="[Settings.General.Connectivity.IPAddressBindings]"
+        HelpText="[Settings.General.Connectivity.IPAddressBindings.Help]"
+        ClassName="MediaPortal.UiComponents.SkinBase.Settings.Configuration.General.IPAddressBindingsSetting"/>
   </Register>
 
   <!-- Contents of '/General/System' group -->
