aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net/NetworkUtils.cs
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2023-11-16 00:50:17 +0100
committerBond_009 <bond.009@outlook.com>2023-11-16 00:50:17 +0100
commit3c3f0a765e285c8e3a73f922307ce62f9fd5e6d7 (patch)
tree739ddb4e0cf670c4d474181ee09df90d343ccc8c /MediaBrowser.Common/Net/NetworkUtils.cs
parent464de13acf3be8e466e12c8087bef8623e9edba9 (diff)
Use new IPNetwork.TryParse function
Diffstat (limited to 'MediaBrowser.Common/Net/NetworkUtils.cs')
-rw-r--r--MediaBrowser.Common/Net/NetworkUtils.cs51
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;
}
}