diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2022-07-19 21:28:04 +0200 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2022-07-19 21:28:04 +0200 |
| commit | 066db8ac7fcece0ab3420b6b6c03e420d22c7306 (patch) | |
| tree | f23311480feff1053dc990930303ed10fcd01944 /MediaBrowser.Common/Net/IPData.cs | |
| parent | c2902dd1081acd96cf34682ec8a4812ab6146044 (diff) | |
Migrate NetworkManager and Tests to native .NET IP objects
Diffstat (limited to 'MediaBrowser.Common/Net/IPData.cs')
| -rw-r--r-- | MediaBrowser.Common/Net/IPData.cs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/MediaBrowser.Common/Net/IPData.cs b/MediaBrowser.Common/Net/IPData.cs new file mode 100644 index 0000000000..3c6adc7e86 --- /dev/null +++ b/MediaBrowser.Common/Net/IPData.cs @@ -0,0 +1,76 @@ +using System.Net; +using System.Net.Sockets; +using Microsoft.AspNetCore.HttpOverrides; + +namespace MediaBrowser.Common.Net +{ + /// <summary> + /// Base network object class. + /// </summary> + public class IPData + { + /// <summary> + /// Initializes a new instance of the <see cref="IPData"/> class. + /// </summary> + /// <param name="address">An <see cref="IPAddress"/>.</param> + /// <param name="subnet">The <see cref="IPNetwork"/>.</param> + public IPData( + IPAddress address, + IPNetwork? subnet) + { + Address = address; + Subnet = subnet ?? (address.AddressFamily == AddressFamily.InterNetwork ? new IPNetwork(address, 32) : new IPNetwork(address, 128)); + Name = string.Empty; + } + + /// <summary> + /// Initializes a new instance of the <see cref="IPData"/> class. + /// </summary> + /// <param name="address">An <see cref="IPAddress"/>.</param> + /// <param name="subnet">The <see cref="IPNetwork"/>.</param> + /// <param name="name">The object's name.</param> + public IPData( + IPAddress address, + IPNetwork? subnet, + string name) + { + Address = address; + Subnet = subnet ?? (address.AddressFamily == AddressFamily.InterNetwork ? new IPNetwork(address, 32) : new IPNetwork(address, 128)); + Name = name; + } + + /// <summary> + /// Gets or sets the object's IP address. + /// </summary> + public IPAddress Address { get; set; } + + /// <summary> + /// Gets or sets the object's IP address. + /// </summary> + public IPNetwork Subnet { get; set; } + + /// <summary> + /// Gets or sets the interface index. + /// </summary> + public int Index { get; set; } + + /// <summary> + /// Gets or sets the interface name. + /// </summary> + public string Name { get; set; } + + /// <summary> + /// Gets the AddressFamily of this object. + /// </summary> + public AddressFamily AddressFamily + { + get + { + return Address.Equals(IPAddress.None) + ? (Subnet.Prefix.AddressFamily.Equals(IPAddress.None) + ? AddressFamily.Unspecified : Subnet.Prefix.AddressFamily) + : Address.AddressFamily; + } + } + } +} |
