private static async Task <int> ExecuteInternalAsync(
        RootCommandSettings settings)
    {
        if (!NetworkInformationHelper.HasConnection())
        {
            System.Console.WriteLine("This tool requires internet connection!");
            return(ConsoleExitStatusCodes.Failure);
        }

        if (settings.IsOptionValueTrue(settings.Version))
        {
            try
            {
                HandleVersionOption();
            }
            catch
            {
                return(ConsoleExitStatusCodes.Failure);
            }
        }

        await Task.Delay(1);

        return(ConsoleExitStatusCodes.Success);
    }
        /// <summary>
        /// Tries to resolve the hardware address of the server.
        /// </summary>
        protected void UpdateServerAddress()
        {
            lock (_addressUpdateSync)
            {
                if (_isUpdatingAddress)
                {
                    //Address updating already in progress
                    return;
                }
                _isUpdatingAddress = true;
            }

            try
            {
                IPAddress localAddress;
                IPAddress serverAddress;
                if (!TryGetServerIPAddress(out localAddress, out serverAddress))
                {
                    return;
                }

                if (IPAddress.IsLoopback(serverAddress))
                {
                    ServiceRegistration.Get <ILogger>().Debug("WakeOnLanClient: Not configuring wake on lan for loopback address '{0}', server is located on the same machine", serverAddress);
                    SaveWakeOnLanAddress(null);
                    return;
                }

                byte[] macAddress;
                if (NetworkInformationHelper.TryGetRemoteHardwareAddress(localAddress, serverAddress, out macAddress))
                {
                    ServiceRegistration.Get <ILogger>().Info("WakeOnLanClient: Updating server hardware address '{0}' for IP address '{1}'", BitConverter.ToString(macAddress), serverAddress);
                    SaveWakeOnLanAddress(new WakeOnLanAddress()
                    {
                        IPAddress = serverAddress.ToString(), HardwareAddress = macAddress
                    });
                    return;
                }
                ServiceRegistration.Get <ILogger>().Warn("WakeOnLanClient: Unable to determine hardware address for IP address '{0}'", serverAddress);
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Error("WakeOnLanClient: Error determining server hardware address", ex);
            }
            finally
            {
                lock (_addressUpdateSync)
                    _isUpdatingAddress = false;
            }
        }