private void button1_Click(object sender, EventArgs e)
{
if (!ValidateConfigs())
return;
IPAddress ipAddress = new IPAddress(0);
for (int j = 0; j < unloadRoutes.Count; j++)
if (listView1.Items[j].Checked &&
ValidateRoute(ref unloadRoutes[j].Destination, ref unloadRoutes[j].Prefix, ref unloadRoutes[j].Gateway, unloadRoutes[j].IPVersion))
{
Config.SavedRouteItem savedRoute = unloadRoutes[j];
int ifIndex = 0;
if (Global.NetworkInterfaces.ContainsKey(savedRoute.InterfaceGuid))
ifIndex = Global.NetworkInterfaces[savedRoute.InterfaceGuid].Index;
else if (Environment.OSVersion.Version.CompareTo(new Version("6.0")) > -1 &&
NetworkInterface.Loopback.Guid == savedRoute.InterfaceGuid)
ifIndex = 1;
// load defaults
if (defaultInterfaceMode.SelectedIndex == 0 && listView1.Items[j].SubItems[6].Text != "Active" ||
defaultInterfaceMode.SelectedIndex == 1)
{
if (unloadRoutes[j].IPVersion == 4)
{
ifIndex = int.Parse(Regex.Replace(defaultIPv4Interface.Text, @"^(\d+) .*$", "$1"));
if (defaultIPv4GatewayMode.SelectedIndex != 3)
unloadRoutes[j].Gateway = defaultIPv4Gateway.Text;
}
else
{
ifIndex = int.Parse(Regex.Replace(defaultIPv6Interface.Text, @"^(\d+) .*$", "$1"));
if (defaultIPv6GatewayMode.SelectedIndex != 3)
unloadRoutes[j].Gateway = defaultIPv6Gateway.Text;
}
}
// unload route
Iphlpapi.DeleteRoute(unloadRoutes[j].Destination, unloadRoutes[j].Prefix, unloadRoutes[j].Gateway, ifIndex.ToString());
}
Close();
}