aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Net/IPData.cs
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2022-07-19 21:28:04 +0200
committerShadowghost <Ghost_of_Stone@web.de>2022-07-19 21:28:04 +0200
commit066db8ac7fcece0ab3420b6b6c03e420d22c7306 (patch)
treef23311480feff1053dc990930303ed10fcd01944 /MediaBrowser.Common/Net/IPData.cs
parentc2902dd1081acd96cf34682ec8a4812ab6146044 (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.cs76
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;
+ }
+ }
+ }
+}