NetworkConstants.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Net;
  2. using IPNetwork = Microsoft.AspNetCore.HttpOverrides.IPNetwork;
  3. namespace MediaBrowser.Common.Net;
  4. /// <summary>
  5. /// Networking constants.
  6. /// </summary>
  7. public static class NetworkConstants
  8. {
  9. /// <summary>
  10. /// IPv4 mask bytes.
  11. /// </summary>
  12. public const int IPv4MaskBytes = 4;
  13. /// <summary>
  14. /// IPv6 mask bytes.
  15. /// </summary>
  16. public const int IPv6MaskBytes = 16;
  17. /// <summary>
  18. /// Minimum IPv4 prefix size.
  19. /// </summary>
  20. public const int MinimumIPv4PrefixSize = 32;
  21. /// <summary>
  22. /// Minimum IPv6 prefix size.
  23. /// </summary>
  24. public const int MinimumIPv6PrefixSize = 128;
  25. /// <summary>
  26. /// Whole IPv4 address space.
  27. /// </summary>
  28. public static readonly IPNetwork IPv4Any = new IPNetwork(IPAddress.Any, 0);
  29. /// <summary>
  30. /// Whole IPv6 address space.
  31. /// </summary>
  32. public static readonly IPNetwork IPv6Any = new IPNetwork(IPAddress.IPv6Any, 0);
  33. /// <summary>
  34. /// IPv4 Loopback as defined in RFC 5735.
  35. /// </summary>
  36. public static readonly IPNetwork IPv4RFC5735Loopback = new IPNetwork(IPAddress.Loopback, 8);
  37. /// <summary>
  38. /// IPv4 private class A as defined in RFC 1918.
  39. /// </summary>
  40. public static readonly IPNetwork IPv4RFC1918PrivateClassA = new IPNetwork(IPAddress.Parse("10.0.0.0"), 8);
  41. /// <summary>
  42. /// IPv4 private class B as defined in RFC 1918.
  43. /// </summary>
  44. public static readonly IPNetwork IPv4RFC1918PrivateClassB = new IPNetwork(IPAddress.Parse("172.16.0.0"), 12);
  45. /// <summary>
  46. /// IPv4 private class C as defined in RFC 1918.
  47. /// </summary>
  48. public static readonly IPNetwork IPv4RFC1918PrivateClassC = new IPNetwork(IPAddress.Parse("192.168.0.0"), 16);
  49. /// <summary>
  50. /// IPv6 loopback as defined in RFC 4291.
  51. /// </summary>
  52. public static readonly IPNetwork IPv6RFC4291Loopback = new IPNetwork(IPAddress.IPv6Loopback, 128);
  53. /// <summary>
  54. /// IPv6 site local as defined in RFC 4291.
  55. /// </summary>
  56. public static readonly IPNetwork IPv6RFC4291SiteLocal = new IPNetwork(IPAddress.Parse("fe80::"), 10);
  57. /// <summary>
  58. /// IPv6 unique local as defined in RFC 4193.
  59. /// </summary>
  60. public static readonly IPNetwork IPv6RFC4193UniqueLocal = new IPNetwork(IPAddress.Parse("fc00::"), 7);
  61. }