diff options
| author | Bond_009 <bond.009@outlook.com> | 2023-11-16 00:50:17 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2023-11-16 00:50:17 +0100 |
| commit | 3c3f0a765e285c8e3a73f922307ce62f9fd5e6d7 (patch) | |
| tree | 739ddb4e0cf670c4d474181ee09df90d343ccc8c /MediaBrowser.Common/Net | |
| parent | 464de13acf3be8e466e12c8087bef8623e9edba9 (diff) | |
Use new IPNetwork.TryParse function
Diffstat (limited to 'MediaBrowser.Common/Net')
| -rw-r--r-- | MediaBrowser.Common/Net/NetworkUtils.cs | 51 |
1 files changed, 17 insertions, 34 deletions
diff --git a/MediaBrowser.Common/Net/NetworkUtils.cs b/MediaBrowser.Common/Net/NetworkUtils.cs index 4110b000e..e482089f0 100644 --- a/MediaBrowser.Common/Net/NetworkUtils.cs +++ b/MediaBrowser.Common/Net/NetworkUtils.cs @@ -197,46 +197,29 @@ public static partial class NetworkUtils /// <returns><c>True</c> if parsing was successful.</returns> public static bool TryParseToSubnet(ReadOnlySpan<char> value, [NotNullWhen(true)] out IPNetwork? result, bool negated = false) { - var splitString = value.Trim().Split('/'); - if (splitString.MoveNext()) + value = value.Trim(); + if (value.Contains('/')) { - var ipBlock = splitString.Current; - var address = IPAddress.None; - if (negated && ipBlock.StartsWith("!") && IPAddress.TryParse(ipBlock[1..], out var tmpAddress)) + if (negated && value.StartsWith("!") && IPNetwork.TryParse(value[1..], out result)) { - address = tmpAddress; + return true; } - else if (!negated && IPAddress.TryParse(ipBlock, out tmpAddress)) + else if (!negated && IPNetwork.TryParse(value, out result)) { - address = tmpAddress; + return true; } - - if (address != IPAddress.None) + } + else if (IPAddress.TryParse(value, out var address)) + { + if (address.AddressFamily == AddressFamily.InterNetwork) { - if (splitString.MoveNext()) - { - var subnetBlock = splitString.Current; - if (int.TryParse(subnetBlock, out var netmask)) - { - result = new IPNetwork(address, netmask); - return true; - } - else if (IPAddress.TryParse(subnetBlock, out var netmaskAddress)) - { - result = new IPNetwork(address, NetworkUtils.MaskToCidr(netmaskAddress)); - return true; - } - } - else if (address.AddressFamily == AddressFamily.InterNetwork) - { - result = address.Equals(IPAddress.Any) ? NetworkConstants.IPv4Any : new IPNetwork(address, NetworkConstants.MinimumIPv4PrefixSize); - return true; - } - else if (address.AddressFamily == AddressFamily.InterNetworkV6) - { - result = address.Equals(IPAddress.IPv6Any) ? NetworkConstants.IPv6Any : new IPNetwork(address, NetworkConstants.MinimumIPv6PrefixSize); - return true; - } + result = address.Equals(IPAddress.Any) ? NetworkConstants.IPv4Any : new IPNetwork(address, NetworkConstants.MinimumIPv4PrefixSize); + return true; + } + else if (address.AddressFamily == AddressFamily.InterNetworkV6) + { + result = address.Equals(IPAddress.IPv6Any) ? NetworkConstants.IPv6Any : new IPNetwork(address, NetworkConstants.MinimumIPv6PrefixSize); + return true; } } |
