Esempio n. 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (!ValidateConfigs())
            {
                return;
            }
            IPAddress ipAddress = new IPAddress(0);

            for (int j = 0; j < loadRoutes.Count; j++)
            {
                if (listView1.Items[j].Checked &&
                    ValidateRoute(ref loadRoutes[j].Destination, ref loadRoutes[j].Prefix, ref loadRoutes[j].Gateway, loadRoutes[j].IPVersion))
                {
                    Config.SavedRouteItem savedRoute = loadRoutes[j];
                    NetworkInterface      nic        = null;
                    string gateway = savedRoute.Gateway;
                    if (Global.NetworkInterfaces.ContainsKey(savedRoute.InterfaceGuid))
                    {
                        nic = Global.NetworkInterfaces[savedRoute.InterfaceGuid];
                    }
                    else if (Environment.OSVersion.Version.CompareTo(new Version("6.0")) > -1 &&
                             NetworkInterface.Loopback.Guid == savedRoute.InterfaceGuid)
                    {
                        nic = NetworkInterface.Loopback;
                    }
                    // load defaults
                    if (defaultInterfaceMode.SelectedIndex == 0 && nic == null ||
                        defaultInterfaceMode.SelectedIndex == 1)
                    {
                        int ifIndex = 0;

                        if (loadRoutes[j].IPVersion == 4)
                        {
                            ifIndex = int.Parse(Regex.Replace(defaultIPv4Interface.Text, @"^(\d+) .*$", "$1"));
                            if (defaultIPv4GatewayMode.SelectedIndex != 3)
                            {
                                gateway = defaultIPv4Gateway.Text;
                            }
                        }
                        else
                        {
                            ifIndex = int.Parse(Regex.Replace(defaultIPv6Interface.Text, @"^(\d+) .*$", "$1"));
                            if (defaultIPv6GatewayMode.SelectedIndex != 3)
                            {
                                gateway = defaultIPv6Gateway.Text;
                            }
                        }
                        nic = Global.NetworkInterfaces.FirstOrDefault(i => i.Value.Index == ifIndex).Value;
                        if (nic == null && Environment.OSVersion.Version.CompareTo(new Version("6.0")) > -1 &&
                            NetworkInterface.Loopback.Index == ifIndex)
                        {
                            nic = NetworkInterface.Loopback;
                        }
                        if (updateSavedRoutesCheckBox.Checked == true)
                        {
                            loadRoutes[j].InterfaceGuid = nic.Guid;
                            loadRoutes[j].Gateway       = gateway;
                            Global.Config.Save();
                        }
                    }
                    savedRoute.Load(nic, gateway);
                }
                else
                {
                    MessageBox.Show("Could not load route:\nDestination: " + loadRoutes[j].Destination + "\nPrefix: " + loadRoutes[j].Prefix + "\nGateway: " + loadRoutes[j].Gateway + "\nIP version: " + loadRoutes[j].IPVersion, "Invalid route", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            Close();
        }