IPData.cs 2.1 KB

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