IPData.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Net;
  2. using System.Net.Sockets;
  3. using Microsoft.AspNetCore.HttpOverrides;
  4. namespace MediaBrowser.Common.Net
  5. {
  6. /// <summary>
  7. /// Base network object class.
  8. /// </summary>
  9. public class IPData
  10. {
  11. /// <summary>
  12. /// Initializes a new instance of the <see cref="IPData"/> class.
  13. /// </summary>
  14. /// <param name="address">The <see cref="IPAddress"/>.</param>
  15. /// <param name="subnet">The <see cref="IPNetwork"/>.</param>
  16. /// <param name="name">The interface name.</param>
  17. public IPData(IPAddress address, IPNetwork? subnet, string name)
  18. {
  19. Address = address;
  20. Subnet = subnet ?? (address.AddressFamily == AddressFamily.InterNetwork ? new IPNetwork(address, 32) : new IPNetwork(address, 128));
  21. Name = name;
  22. }
  23. /// <summary>
  24. /// Initializes a new instance of the <see cref="IPData"/> class.
  25. /// </summary>
  26. /// <param name="address">The <see cref="IPAddress"/>.</param>
  27. /// <param name="subnet">The <see cref="IPNetwork"/>.</param>
  28. public IPData(IPAddress address, IPNetwork? subnet)
  29. : this(address, subnet, string.Empty)
  30. {
  31. }
  32. /// <summary>
  33. /// Gets or sets the object's IP address.
  34. /// </summary>
  35. public IPAddress Address { get; set; }
  36. /// <summary>
  37. /// Gets or sets the object's IP address.
  38. /// </summary>
  39. public IPNetwork Subnet { get; set; }
  40. /// <summary>
  41. /// Gets or sets the interface index.
  42. /// </summary>
  43. public int Index { get; set; }
  44. /// <summary>
  45. /// Gets or sets the interface name.
  46. /// </summary>
  47. public string Name { get; set; }
  48. /// <summary>
  49. /// Gets the AddressFamily of the object.
  50. /// </summary>
  51. public AddressFamily AddressFamily
  52. {
  53. get
  54. {
  55. return Address.Equals(IPAddress.None)
  56. ? (Subnet.Prefix.AddressFamily.Equals(IPAddress.None)
  57. ? AddressFamily.Unspecified : Subnet.Prefix.AddressFamily)
  58. : Address.AddressFamily;
  59. }
  60. }
  61. }
  62. }