/// <summary>
        /// Used to parse configuration part of bootconfig file
        /// </summary>
        /// <param name="lines">file content as lines as string</param>
        /// <param name="i">current line position</param>
        /// <returns>configuration as Data.Configuration</returns>
        private Data.Configuration GetConfiguration(string[] lines, ref int i)
        {
            try
            {
                Data.Configuration config;

                string line = lines[i];
                switch (line[29])
                {
                case 'E':
                    config = new Data.Configuration("Ethernet");
                    break;

                case 'W':
                    config = new Data.Configuration("Wi-Fi");
                    break;

                default:
                    return(null);
                }

                line         = lines[i += 1];
                config.DHCP1 = line[42] == 'Y' ? true : false;

                line             = lines[i += 1];
                config.IPAddress = line.Substring(42, line.Length - 43);

                line          = lines[i += 1];
                config.Subnet = line.Substring(62, line.Length - 64);

                line           = lines[i += 1];
                config.Gateway = line.Substring(42, line.Length - 43);

                line         = lines[i += 3];
                config.DHCP2 = line[4] == 'D' ? true : false;
                config.DNS1  = line.Substring(42, line.Length - 43);

                line = lines[i += 1];
                if (line[4] == ' ')
                {
                    config.DNS2 = line.Substring(42, line.Length - 43);
                }
                else
                {
                    config.DNS2 = string.Empty;
                }

                return(config);
            }
            catch (Exception ex)
            {
                NotifyUser($"Parsing error: {ex.Message}", NotifyType.ErrorMessage);
            }
            return(null);
        }
        /// <summary>
        /// Used to perform base ipaddress validity checks
        /// </summary>
        /// <param name="config">interface configuration</param>
        /// <returns>true if ok otherwise false</returns>
        private bool CheckDHCPConfiguration(Data.Configuration config)
        {
            IPAddress address;

            if (config.DNS1 != string.Empty && !IPAddress.TryParse(config.DNS1, out address))
            {
                NotifyUser($"IPAddress {config.DNS1} from {config.Interface} not valid", NotifyType.ErrorMessage);
                return(false);
            }

            if (config.DNS2 != string.Empty && !IPAddress.TryParse(config.DNS2, out address))
            {
                NotifyUser($"IPAddress {config.DNS2} from {config.Interface} not valid", NotifyType.ErrorMessage);
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Used to perform base ipaddress validity checks
        /// </summary>
        /// <param name="config">interface configuration</param>
        /// <returns>true if ok otherwise false</returns>
        private bool CheckIPConfiguration(Data.Configuration config)
        {
            IPAddress address;

            if (config.IPAddress == string.Empty || !IPAddress.TryParse(config.IPAddress, out address))
            {
                NotifyUser($"IPAddress {config.IPAddress} from {config.Interface} not valid", NotifyType.ErrorMessage);
                return(false);
            }

            if (config.IPAddress == string.Empty || !IPAddress.TryParse(config.Subnet, out address))
            {
                NotifyUser($"Subnet {config.Subnet} from {config.Interface} not valid", NotifyType.ErrorMessage);
                return(false);
            }

            if (config.Gateway != string.Empty && !IPAddress.TryParse(config.Gateway, out address))
            {
                NotifyUser($"IPAddress {config.Gateway} from {config.Interface} not valid", NotifyType.ErrorMessage);
                return(false);
            }

            return(true);
        }