private void defaultIPv6GatewayMode_SelectedIndexChanged(object sender, EventArgs e)
{
// manual
if (defaultIPv6GatewayMode.SelectedIndex == 0)
{
defaultIPv6Gateway.Items.Clear();
defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.Simple;
defaultIPv6Gateway.Enabled = true;
if (lastIPv6GatewayMode != 0)
defaultIPv6Gateway.Text = lastIPv6Gateway;
lastIPv6GatewayMode = 0;
}
// interface default gateway
if (defaultIPv6GatewayMode.SelectedIndex == 1)
{
if (lastIPv6GatewayMode == 0)
lastIPv6Gateway = defaultIPv6Gateway.Text;
lastIPv6GatewayMode = 1;
defaultIPv6Gateway.Items.Clear();
defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.DropDownList;
defaultIPv6Gateway.Enabled = true;
if (defaultIPv6Interface.SelectedIndex == -1)
{
return;
}
int ifIndex = int.Parse(Regex.Replace(defaultIPv6Interface.Text, @"^(\d+) .*$", "$1"));
if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).Count() > 0)
if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Gateway.Count > 0)
foreach (NetworkInterface.IPGatewayAddress ip in Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Gateway)
defaultIPv6Gateway.Items.Add(ip.Address);
if (Environment.OSVersion.Version.CompareTo(new Version("6.0")) > -1)
defaultIPv6Gateway.Items.Add("::");
if (defaultIPv6Gateway.Items.Count > 0)
defaultIPv6Gateway.SelectedIndex = 0;
}
// no gateway
if (defaultIPv6GatewayMode.SelectedIndex == 2)
{
if (lastIPv6GatewayMode == 0)
lastIPv6Gateway = defaultIPv6Gateway.Text;
lastIPv6GatewayMode = 2;
defaultIPv6Gateway.Items.Clear();
defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.DropDownList;
defaultIPv6Gateway.Enabled = true;
if (defaultIPv6Interface.SelectedIndex == -1)
return;
int ifIndex = int.Parse(Regex.Replace(defaultIPv6Interface.Text, @"^(\d+) .*$", "$1"));
if (Environment.OSVersion.Version.CompareTo(new Version("6.0")) < 0)
{
if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).Count() > 0)
if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Address.All.Count > 0)
foreach (NetworkInterface.IPHostAddress ip in Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Address.All)
defaultIPv6Gateway.Items.Add(ip.Address);
}
else
defaultIPv6Gateway.Items.Add("::");
if (defaultIPv6Gateway.Items.Count > 0)
defaultIPv6Gateway.SelectedIndex = 0;
}
// loaded route regardless
if (defaultIPv6GatewayMode.SelectedIndex == 3)
{
if (lastIPv6GatewayMode == 0)
lastIPv6Gateway = defaultIPv6Gateway.Text;
defaultIPv6Gateway.SelectedIndex = -1;
defaultIPv6Gateway.Items.Clear();
defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.Simple;
defaultIPv6Gateway.Enabled = false;
lastIPv6GatewayMode = 3;
}
}