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