diff options
| author | Joshua M. Boniface <joshua@boniface.me> | 2023-07-03 13:16:21 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-03 13:16:21 -0400 |
| commit | 93b400343ebd2ef92e740d804ceaaedb01da30cf (patch) | |
| tree | 0190174ceb0df9c3bcd23647548d80be48425214 /MediaBrowser.Model/Net/IPData.cs | |
| parent | 44cc3ee44286dd5b3a626df79a8a576ad4a0d34a (diff) | |
| parent | e233a3b074d7696e4c05846aaf04434dafaf4031 (diff) | |
Merge pull request #8147 from Shadowghost/network-rewrite
Diffstat (limited to 'MediaBrowser.Model/Net/IPData.cs')
| -rw-r--r-- | MediaBrowser.Model/Net/IPData.cs | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Net/IPData.cs b/MediaBrowser.Model/Net/IPData.cs new file mode 100644 index 000000000..985b16c6e --- /dev/null +++ b/MediaBrowser.Model/Net/IPData.cs @@ -0,0 +1,74 @@ +using System.Net; +using System.Net.Sockets; +using Microsoft.AspNetCore.HttpOverrides; + +namespace MediaBrowser.Model.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">The <see cref="IPAddress"/>.</param> + /// <param name="subnet">The <see cref="IPNetwork"/>.</param> + /// <param name="name">The interface 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> + /// Initializes a new instance of the <see cref="IPData"/> class. + /// </summary> + /// <param name="address">The <see cref="IPAddress"/>.</param> + /// <param name="subnet">The <see cref="IPNetwork"/>.</param> + public IPData(IPAddress address, IPNetwork? subnet) + : this(address, subnet, string.Empty) + { + } + + /// <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 the object. + /// </summary> + public AddressFamily AddressFamily + { + get + { + if (Address.Equals(IPAddress.None)) + { + return Subnet.Prefix.AddressFamily.Equals(IPAddress.None) + ? AddressFamily.Unspecified + : Subnet.Prefix.AddressFamily; + } + else + { + return Address.AddressFamily; + } + } + } +} |
